安装RabbitMQ服务

安装RabbitMQ服务
普通安装
yum install rabbitmq-server

启动RabbitMQ服务
systemctl start rabbitmq-server

停止RabbitMQ服务
rabbitmqctl stop

安全和端口
netstat -tnlp

SELinux和类似机制或许会通过绑定端口的方式阻止RabbitMQ。当这种情况发生时,RabbitMQ会启动失败。请确认以下的端口是可以被打开的:
4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (启用了 或者 未启用 TLS 的 AMQP 0-9-1)
15672 (如果管理插件被启用)
61613, 61614 (如果 STOMP 被启用)
1883, 8883 (如果 MQTT 被启用)

web监控工具(下载RabbitMQ时默认包含web监控工具)
rabbitmq-plugins enable rabbitmq_management

提示信息
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

重启RabbitMQ服务生效
rabbitmqctl stop
systemctl start rabbitmq-server

http://127.0.0.1:15672 默认账号密码 guest
通过docker安装
docker run -it –rm –name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

php think product queue –marketplaceid=US,JP –limit=1000

php think product server –marketplaceid=US,JP –limit=1000

php think product worker –marketplaceid=US,JP –limit=1000 –type=1

PHP 将脚本执行限制为命令行

函数php_sapi_name()和常量PHP_SAPI都返回PHP使用的接口类型( S erver API )。它们可用于通过检查函数的输出是否等于cli来将脚本的执行限制到命令行。

if (php_sapi_name() === 'cli') {
    echo "Executed from command line\n";
} else {
    echo "Executed from web browser\n";
}

drupal_is_cli()函数是一个函数示例,它检测脚本是否已从命令行执行:

function drupal_is_cli() {
    return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
}

lnmp 1.6安装tinkphp 5.0以上防跨目录设置问题,lnmp中遇到open_basedir配置无效问题。

在使用LNMP包安装PHP时,发现直接修改php.ini的配置是无法生效的,其原因竟然是因为nginx的配置文件,覆盖了php.ini的配置。
——————————————————————–
LNMP 1.4上如果不想用防跨目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE “open_basedir=$document_root/:/tmp/:/proc/”; 删除或注释,需要重启nginx。
LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除。

lnmp 开启php错误打印

php –ini
Configuration File (php.ini) Path: /usr/local/php/etc
Loaded Configuration File: /usr/local/php/etc/php.ini
Scan for additional .ini files in: /usr/local/php/conf.d
Additional .ini files parsed: (none)

vi /usr/local/php/etc/php.ini

在文件中查找 ‘display_errors’   查找到 display_errors = Off 或者 display_errors = On, Off为关闭错误提示,On为打开错误提示,根据需求修改即可。

也可在php文件中加入以下代码

 

//禁用错误报告
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);

 

解决 Windows 环境 Git Bash 里无法识别 Composer 命令的问题

 

解决

首先,请确定你的 composer.phar 文件安装路径。我的是: /d/wamp64/bin/php/php5.6.31/composer.phar (请把类似 D:\ 的盘符改为 /d/)。

然后复制、并修改权限

D:\software\Git\usr\bin

复制一个 composer  composer.bat composer.phar 文件到 Git Bash 的 /usr 的子目录,并赋予执行权限。

cp /d/wamp64/bin/php/php5.6.31/composer.phar /usr/local/bin/composer
chmod a+x /usr/local/bin/composer

windows中使用git-bash,新增快捷命令php7 php 环境变量

windows上环境变量中的php配置的php5.3.6,但是想要在windows上的git-bash 使用php7。

1 使用git-bash,使用vi打开文件aliases.sh:


ttwp@ttwp MINGW64 /c/xampp/htdocs/laravel-git (5.3)

$ vi /etc/profile.d/aliases.sh

2 在该文件中新增一条代码:


alias php7='C:/xampp/php7/php-7.3.3-Win32-VC15-x64/php'

单引号中间的是你的php7的安装路径。

3 将git-bash关闭后,重新打开,输入php7 -v:


ttwp@ttwp MINGW64 /c/xampp/htdocs/laravel-git (5.3)

$ php7 -v

PHP 7.3.3 (cli) (built: Mar  6 2019 21:53:23) ( ZTS MSVC15 (Visual C++ 2017) x64 )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies

ttwp@ttwp MINGW64 /c/xampp/htdocs/laravel-git (5.3)

$ php -v

PHP 5.6.32 (cli) (built: Oct 25 2017 16:02:15)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

ubuntu 安装 Supervisor-守护进程工具

爬虫worker端安装使用supervisor进程管理工具安装使用

测试场景,脚本执行1分钟后结束进程(sleep演示测试),进程结束后,supervisor重新开启该线程

1.编辑sh脚本

cd /root
vi e.sh

sleep 60;

echo $(date “+%y-%m-%d %H:%M:%S”)>> date.txt ;

定时将时间写入date.txt文件

supervisor

安装supervisor
  1. apt-get install supervisor
配置进程管理配置文件

查看配置文件

  1. cat /etc/supervisor/supervisord.conf

编辑配置文件

通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

然后查看路径下的supervisord.conf。在文件尾部添加如下配置。

;[include]
;files = relative/directory/*.ini

;conf.d 为配置表目录的文件夹,需要手动创建
[include]
files = conf.d/*.conf





  1. supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。
  2. supervisord -c /etc/supervisor/supervisord.conf  //启动服务
  3. vi /etc/supervisor/supervisord.conf

新增以下信息

program:当前worker进程的名称
command= 进程执行的文件
directory= 执行文件所在目录
numprocs=线程偶同时执行的个数

  1. [program:date]
  2. command=sh e.sh
  3. directory=/root
  4. process_name=%(program_name)s-%(process_num)s
  5. numprocs=1
  6. autorestart=true

更多相关命令

一、添加好配置文件后

二、更新新的配置到supervisord

  1. supervisorctl update

三、重新启动配置中的所有程序

  1. supervisorctl reload

四、启动某个进程(program_name=你配置中写的程序名称)

  1. supervisorctl start program_name

五、查看正在守候的进程

  1. supervisorctl

六、停止某一进程 (program_name=你配置中写的程序名称)

  1. supervisorctl stop program_name

七、重启某一进程 (program_name=你配置中写的程序名称)

  1. supervisorctl restart program_name

八、停止全部进程

  1. supervisorctl stop all

注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。

centos 使用docker搭建Gearman任务分发系统 ,Gearman的安装和使用

第一步,centos 安装 docker,拉取docker centos 镜像(此处不赘述)

https://docs.docker.com/install/linux/docker-ce/centos/

docker -v

docker ps  (查看docker的容器状态)

docker pull centos(docker安装ubuntu最新镜像)
docker images (查看本地所有镜像)

 

[root@izwz9c4rb2kbs0ggxd67hiz ~]# docker run -d -it –name=gearman-container centos:latest /bin/bash(name前面双横线)

docker ps

docker exec -it f49a2392164e /bin/bash

f49a2392164e(CONTAINER ID)

 

以centos运行docker容器

第二步,搭建Gearman任务分发系统

yum update

[root@f49a2392164e /]# yum install gearmand
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.cn99.com
No package gearmand available.
Error: Nothing to do

yum没有找到对应依赖包,更新epel第三方软件库,运行命令:
yum install -y epel-release

更新完epel第三方软件库后,再次尝试使用yum命令安装对应的软件包

yum install gearmand

remi — linux下比较好用的安装源

yum install wget

在centOS下下载源

su
cd /etc/yum.repos.d
wget http://rpms.famillecollet.com/enterprise/remi.repo

安装php扩展

yum install –enablerepo=remi –enablerepo=remi-php56 php-pecl-gearman

或升级:
yum –enablerepo=remi-php55,remi update php*

查看扩展是否安装成功

php -m | grep gearman

 

worker.php

<?php
    $worker= new GearmanWorker();
    $worker->addServer("127.0.0.1", 4730);  
    $worker->addFunction("title", "title_function");
    while ($worker->work());

    function title_function($job){
        return "你请求的数据:" . $job->workload() . " 请求时间:" . date('Y-m-d H:i:s');
        //return ucwords(strtolower($job->workload()));
    }
?>

 

client.php

 

<?php
    $client= new GearmanClient();
    $client->addServer("127.0.0.1", 4730);
    print $client->do("title", json_encode(
        [
            'username'=>'jack',
            'email'=>'jack@foxmail.com',
        ]
    ));
    print "\n";
?>

 

测试:

启动服务

$ sudo gearmand -d

启动worker

$ php worker.php &
[1] 15135

启动client

$ php client.php 
你请求的数据:{"username":"jack","email":"jack@foxmail.com"} 请求时间:2017-07-10 23:25:30

参考:
https://segmentfault.com/a/1190000000494087
https://www.ibm.com/developerworks/cn/opensource/os-php-gearman/
http://gearman.org/getting-started/#client
http://php.net/manual/zh/book.gearman.php

https://www.jianshu.com/p/c7a55dee5796