【浅谈】Linux源码安装PHP及Swoole

前言

初衷:为了记录php源码安装及添加swoole扩展的命令。
环境:
阿里云服务器 linux
centos7.6
php7.2.2.1

一、PHP源码安装

1.先更新yum源及添加后续操作会用到的扩展。

已经装过就的忽略~

 

yum -y update
yum -y install wget
yum -y install lrzsz
yum -y install epel-release
yum -y install libmcrypt libmcrypt-devel
yum -y install openssl-devel
yum -y install curl-devel
yum -y install php-mcrypt
yum -y install gcc
yum -y install gcc+
yum -y install gcc-c++
yum -y install make gd-devel libjpeg-devel libpng libpng-devel libxml2-devel bzip2 bzip2-devel libcurl-devel libaio
yum -y install autoconf
yum -y install git
yum -y install freetype-devel
yum -y install libicu-devel
yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap

2.下载PHP源码并解压

 

wget https://www.php.net/distributions/php-7.2.21.tar.bz2

也可以到官网下载再通过rz上传到服务器

解压下载的压缩文件

 

tar -xjvf php-7.2.21.tar.bz2

进入解压完的目录

3.检测环境及编译安装

configure:监测软件依赖关系,对即将安装的软件进行配置,检测环境例如检测是否有gcc扩展等,下面几个基础参数介绍

--prefix:指定php的安装路径
--with-config-file-path:指定php配置文件存放路径
--enable-fpm:添加PHP-FPM扩展

其它的可以通过./configure --help查看详细的参数

这里我是准备把PHP安装在/usr/local/php7.2路径下,配置文件存放的路径是/usr/local/php7.2/etc,这个是比较常规的路径存放。命令中的路径以实际需要存放的路径为准
以下里面带了很多需要的扩展,看各自需求进行添加删除。

 

./configure --prefix=/usr/local/php7.2 --with-config-file-path=/usr/local/php7.2/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-ipv6 --disable-rpath --enable-dom --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-libmbfl --enable-ftp --with-gd --enable-gd-jis-conv --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm

如果有报
configure: error: Cannot find ldap libraries in /usr/lib

执行以下命令

 

cp -frp /usr/lib64/libldap* /usr/lib/

make:构建,扩展提供的是源码包 需要编译成so文件php才能去加载这个so文件才能够使用

make install :装依赖

 

make
make install

将PHP源码目录中的配置文件复制到上面指定的配置文件路径,有两份配置文件,一份是开发版一份是生产的,这里使用的是开发板。

 

cp php.ini-development /usr/local/php7.2/etc/
cp php.ini-production /usr/local/php7.2/etc/
cp /usr/local/php7.2/etc/php.ini-production /usr/local/php7.2/etc/php.ini

执行命令查看路径是否对的上,如果对上了基本就OK了

 

/usr/local/php7.2/bin/php --ini
Configuration File (php.ini) Path: /usr/local/php7.2/etc
Loaded Configuration File:         /usr/local/php7.2/etc/php.ini

这里注意下如果需要重新编译安装(例如因配置参数填错需要重装)最好将原先安装的PHP的目录删掉再进行编译安装

4.添加php命令到全局变量

 

vi /etc/profile

以下是profile中部分代码

 

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

最后一行添加以下代码,将PHP安装目录中的bin目录配置进全局PATH中

 

PATH=$PATH:/usr/local/php7.2/bin
export PATH

保存退出后执行以下命令后生效

 

source /etc/profile

5.开启php-fpm支持

拷贝php-fpm所需的配置文件去掉default

 

cp /usr/local/php7.2/etc/php-fpm.conf.default /usr/local/php7.2/etc/php-fpm.conf
cp /usr/local/php7.2/etc/php-fpm.d/www.conf.default /usr/local/php7.2/etc/php-fpm.d/www.conf

打开默认的www.conf配置文件,查看配置文件指定的user和group

 

vi /usr/local/php7.2/etc/php-fpm.d/www.conf

看到配置文件默认指定了用户和组都是www

 

user = www
group = www

创建对应的分组和用户

 

groupadd www
useradd -g www www

启动php-fpm服务

 

/usr/local/php7.2/sbin/php-fpm -R

配置php-fpm服务到systemctl,这个不是必须的没有需求可以跳过

编辑php-fpm配置文件

 

vi /usr/local/php7.2/etc/php-fpm.conf

 

;pid = run/php-fpm.pid

修改为

 

pid = run/php-fpm.pid

这样php-fpm运行就会将运行的进程号记录到php-fpm.pid文件中

创建php-fpm服务文件

 

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

添加内容

 

[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/usr/local/php7.2/var/run/php-fpm.pid
ExecStart=/usr/local/php7.2/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

PIDFile和ExecStart需改为对应文件实际的绝对路径

重新加载systemctll配置,启动服务

 

systemctl daemon-reload
systemctl start php-fpm

通常刚配置完启动后都会报端口冲突,可以通过

 

systemctl status php-fpm

查看是否是通过冲突,是的话找到php-fpm的进程号杀掉就可以或者直接

 

killall php-fpm

就OK了

常用的systemctl管理命令

 

启动服务
systemctl start php-fpm

查看状态
systemctl status php-fpm

停止服务
systemctl stop php-fpm

重启服务
systemctl restart php-fpm

修改配置文件后重载
systemctl reload php-fpm

开机自启动
systemctl enable php-fpm

禁止开机自启动
systemctl didable php-fpm

二丶添加Swoole扩展

1.下载swoole源码

 

git clone https://gitee.com/swoole/swoole.git

cd 到swoole 执行以下命令用于生成configure

 

/usr/local/php7.2/bin/phpize

指定pay-config 进行检测及配置,这里多加了一个启用异步Redis客户端

 

./configure --with-php-config=/usr/local/php7.2/bin/php-config --enable-async-redis

 

make
make install

最后在php.ini里添加

 

extension=swoole.so

END



作者:RayA11en
链接:https://www.jianshu.com/p/cbdbe4706f5d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值