php7.2.30 Hyperf之路

hyperf所需安装条件

  • PHP >= 7.2
  • Swoole PHP 扩展 >= 4.4,并关闭了Short Name
  • OpenSSL PHP 扩展
  • JSON PHP 扩展
  • PDO PHP 扩展 (如需要使用到 MySQL 客户端)
  • Redis PHP 扩展 (如需要使用到 Redis 客户端)
  • Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)

安装php7.2

wget https://www.php.net/distributions/php-7.2.30.tar.gz

安装php的依赖

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libxslt libxslt-devel

解压php7.2

编译安装

./configure --prefix=/usr/local/src/php-7.2.30 \
--with-config-file-path=/usr/local/src/php-7.2.30/etc \
--with-curl \
--with-mhash \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-openssl \
--with-pcre-regex \
--with-pdo-sqlite \
--with-pear \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-zip \
--enable-static \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--disable-debug \
--disable-fileinfo

编译安装

make && make install

修改环境变量

vi /etc/profile
打开文件后
在文件最末尾输入
PATH=$PATH:你的编译目录
export PATH
例如:
PATH=$PATH:/usr/local/php-7.2.19/bin
export PATH
然后保存并推出
执行

此时的命令
PATH=$PATH:/usr/local/src/php-7.2.30/bin
export PATH 

source /etc/profile 使配置生效

2 处理配置文件以及启动文件

扩展问价目录

/usr/local/src/php-7.2.30/lib/php/extensions/no-debug-non-zts-20170718/

复制php.ini的配置文件

cp /usr/local/src/php-7.2.30/php.ini-production /usr/local/src/php-7.2.30/etc/php.ini

查看php.ini

php --ini

复制php-fpm.conf

cd /usr/local/src/php-7.2.30/etc
cp php-fpm.conf.default php-fpm.conf

复制www.conf

cd /usr/local/src/php-7.2.30/etc/php-fpm.d 
cp www.conf.default www.conf

对配置文件的更改

vim /usr/local/src/php-7.2.30/etc/php-fpm.conf

去掉 pid = run/php-fpm.pid 前面的分号

vim /usr/local/src/php-7.2.30/etc/php-fpm.d/www.conf

修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组)

执行命令 解压目录下的fpm启动文件复制到指定目录

cp /usr/local/src/php-7.2.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 

5.修改执行文件权限

chmod +x /etc/init.d/php-fpm

6.启动php-fpm

cd /etc/init.d 
./php-fpm start

编写php启动脚本

pid文件
/usr/local/src/php-7.2.30/var/run/php-fpm.pid
php-fpm配置文件
/usr/local/src/php-7.2.30/etc/php-fpm.conf
执行文件
/usr/local/src/php-7.2.30/sbin/php-fpm

创建php-fpm.service文件

vim /usr/lib/systemd/system/php-fpm.service

编写脚本

# systemd service file for php-fpm

[Unit]
Description=The PHP FastCGI Progress Manager
After=syslog.target.network.target

[Service]
Type=forking
PIDFile=/usr/local/src/php-7.2.30/var/run/php-fpm.pid
ExecStart=/usr/local/src/php-7.2.30/sbin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

执行启动命令

systemctl enable php-fpm.service  

启动php

systemctl start php-fpm.service

产看进程

root      36421      1  0 18:45 ?        00:00:00 php-fpm: master process (/usr/local/src/php-7.2.30/etc/php-fpm.conf)
nobody    36422  36421  0 18:45 ?        00:00:00 php-fpm: pool www
nobody    36423  36421  0 18:45 ?        00:00:00 php-fpm: pool www
root      36471  36177  0 18:52 pts/1    00:00:00 grep --color=auto php

停止php

systemctl start php-fpm.service

产看进程

root      36487  36177  0 18:53 pts/1    00:00:00 grep --color=auto php

重启php

systemctl restart php-fpm.service

编译安装swoole扩展

编译安装swoole前先安装关联的扩展

yum install m4
yum -y install autoconf

下载swoole文件并且解压

wget https://github.com/swoole/swoole-src/archive/master.zip

uzip master.zip

mv swoole-master swoole-src

编译安装swoole

cd swoole-src && \
phpize && \
./configure && \
make && sudo make install

检查

make test

启用swoole的扩展

编译安装到系统成功后,需要在php.ini中加入一行extension=swoole.so来启用 Swoole 扩展

php -m 查看是否有swoole

编译安装redis扩展

安装redis

wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar xzf redis-5.0.8.tar.gz
cd redis-5.0.8
make

修改redis配置文件

vim /usr/local/src/redis-5.0.8/redis.conf

将  daemonize no 改成 daemonize yes  这个选项的意思是 redis 在后台运行

将redis加入系统服务

# systemd service file for redis
#
[Unit]
Description=The Redis Progress Manager
After=syslog.target.network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/src/redis-5.0.8/src/redis-server  /usr/local/src/redis-5.0.8/redis.conf
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

安装phpredis扩展

下载phpredis

wget https://github.com/phpredis/phpredis/archive/develop.zip
unzip develop.zip
mv phpredis-develop phpredis

为phpredis生成.configure文件

/usr/local/src/php-7.2.30/bin/phpize

由此产生.configure文件

编译

./configure --with-php-config=/usr/local/src/php-7.2.30/bin/php-config
make&&make install

重启php

systemctl restart php-fpm.service
php -m

可以看到有redis

编写测试文件

cd /usr/local/var
vim php.php
connect('127.0.0.1', 6379);
$redis->set("name","小雪狼");
echo $redis->get("name");

编译安装Protobuf扩展

下载最新protobuf

wget https://github.com/allegro/php-protobuf/archive/master.zip
unzip master.zip
cd php-protobuf-master

为protobuf生成.configure文件

/usr/local/src/php-7.2.30/bin/phpize

由此产生.configure文件

编译

./configure --with-php-config=/usr/local/src/php-7.2.30/bin/php-config
make&&make install

安装php protobuf

wget https://github.com/allegro/php-protobuf/archive/master.zip
 
unzip master.zip
 
cd php-protobuf-master
 
yum install php-devel(安装依赖,没有则安装)
 
/usr/local/src/php-7.2.30/bin/phpize
 
./configure --with-php-config=/usr/local/src/php-7.2.30/bin/php-config 
 
make && make install
 
//然后在php.ini里面加一下extension = "protobuf.so",再重启php与nginx即可。

你可能感兴趣的:(php,swoole,hyperf)