麒麟手动安装编译php7.3
在 麒麟上手动安装编译 PHP 7.3 并附加 bcmath、curl、gd、mysql(通常使用 pdo_mysql 或 mysqli)、mbstring、xml、zip 和 imagick 扩展,你需要按照以下步骤操作:
一、整体目录规划(强烈推荐)
|
1 2 3 4 5 6 |
源码目录: /home/php/php-7.3.33 安装目录: /usr/local/lib/php/7.3 配置目录: /usr/local/lib/php/7.3/etc 扩展目录: /usr/local/lib/php/7.3/lib/php/extensions FPM 日志: /usr/local/lib/php/7.3/var/log FPM PID: /usr/local/lib/php/7.3/var/run |
⚠️ 原则:源码目录 ≠ 安装目录,方便重编译与回滚
二、系统依赖准备(必须)
首先,安装编译 PHP 和这些扩展所需的依赖库
|
1 |
yum groupinstall "Development Tools" |
|
1 2 3 4 5 6 |
yum install gcc gcc-c++ make autoconf bison re2c \ libxml2-devel openssl-devel bzip2-devel libcurl-devel \ libzip-devel freetype-devel libpng-devel libjpeg-devel \ libXpm-devel gmp-devel mariadb-devel aspell-devel \ recode-devel autoconf213 libicu-devel libicu-devel \ readline-devel libxslt-devel libjpeg-turbo-devel libwebp-devel |
对于 imagick 扩展,你还需要安装 ImageMagick 开发库:
|
1 |
yum install ImageMagick-devel |
三、下载 PHP 7.3 源代码
|
1 2 3 4 |
cd /usr/local/src wget https://www.php.net/distributions/php-7.3.33.tar.gz tar -zxvf php-7.3.33.tar.gz cd php-7.3.33 |
四、编译 PHP
1. 进入源码目录
|
1 |
cd /home/php/php-7.3.33 |
2. 配置(推荐)
|
1 2 3 4 5 6 7 8 9 10 11 |
./configure --prefix=/usr/local/lib/php/7.3 \ --with-config-file-path=/usr/local/lib/php/7.3/etc \ --with-config-file-scan-dir=/usr/local/lib/php/7.3/etc/php.d \ --enable-calendar --enable-sysvshm --enable-sysvsem \ --enable-shmop --enable-sockets --enable-bcmath --enable-mbstring \ --enable-intl --enable-soap --enable-zip --enable-pdo --enable-fpm \ --enable-mysqlnd --with-openssl --with-zlib --with-bz2 --with-curl \ --with-readline --with-iconv --with-gettext --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd --with-xsl --with-xmlrpc \ --with-gd --with-jpeg-dir=/usr/lib64 --with-png-dir=/usr \ --with-freetype-dir=/usr --with-webp-dir=/usr --with-xpm-dir=/usr |
3. 编译安装
|
1 2 |
make -j"$(nproc)" make install |
注: 如果需要重新编译php, 清理旧编译环境
|
1 2 |
make clean make distclean |
添加环境变量
|
1 2 |
echo 'export PATH=/usr/local/lib/php/7.3/bin:$PATH' >> /etc/profile source /etc/profile |
五、 配置 PHP
1. 配置php.ini
a. 源码目录复制 PHP 配置文件模板
|
1 2 |
/home/php/php-7.3.33 cp php.ini-development /usr/local/lib/php/7.3/etc/php.ini |
b. 修改php.ini
|
1 2 3 4 5 6 |
max_execution_time = 300 max_input_time = 300 max_input_vars = 50000 memory_limit = 2048M post_max_size = 256M upload_max_filesize = 200M |
2. 修改php-fpm(如果使用)
php配置文件目录 /usr/local/lib/php/7.3/etc/
a. 配置php-fpm.conf
- php配置文件目录复制php-fpm.conf配置文件模板
1cp php-fpm.conf.default php-fpm.conf - 修改php-fpm.conf
123pid = run/php-fpm.pid // 取消注释error_log = log/php-fpm.log // 取消注释daemonize = no // 取消注释, 并改为 no
b. 配置www.conf
- php配置文件目录复制php-fpm.conf配置文件模板
12cd php-fpm.d/cp www.conf.default www.conf - 修改www.conf
1234567891011# 开启报错日志php_admin_value[error_log] = /var/log/php-fpm/www-error.logphp_admin_flag[log_errors] = on# 添加以下内容php_admin_value[memory_limit] = 2048Mphp_admin_value[post_max_size] = 256Mphp_admin_value[upload_max_filesize] = 200Mphp_admin_value[max_execution_time] = 300php_admin_value[max_input_time] = 300php_admin_value[max_input_vars] = 50000 - 创建日志目录
12mkdir -p /var/log/php-fpmchown -R nobody:nobody /var/log/php-fpm - 设置/var/log/php-fpm/www-error.log 日志轮转
12345678910111213141516171819202122232425# 1.新建 logrotate 配置文件vim /etc/logrotate.d/php-fpm# 2. 增加配置/var/log/php-fpm/*.log {dailyrotate 90missingoknotifemptycompressdelaycompressdateextcopytruncatecreate 0640 nobody nobody}# 验证配置文件语法是否正确:logrotate -d /etc/logrotate.d/php-fpm# 手动触发一次日志轮转(可选):# 按正常条件轮转(即:仅在满足配置条件时才执行)logrotate /etc/logrotate.d/php-fpm# 强制轮转(即:无论是否满足条件都立即执行)logrotate -f /etc/logrotate.d/php-fpm
每一项含义配置 含义 daily 每天轮转 rotate 14 保留 14 份 compress 压缩旧日志 delaycompress 延迟一轮再压缩 copytruncate 不中断 php-fpm create 自动创建新日志 missingok 文件不存在不报错 notifempty 空文件不轮转
五、 创建systemd服务文件
1. 编辑/etc/systemd/system/php-fpm-7.3.service
|
1 |
vim /etc/systemd/system/php-fpm-7.3.service |
2. 添加以下内容
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
[Unit] Description=The PHP 7.3 FastCGI Process Manager After=network.target #[Service] #Type=simple #ExecStart=/usr/local/lib/php/7.3/sbin/php-fpm -y /usr/local/lib/php/7.3/etc/php-fpm.conf #ExecReload=/bin/kill -USR2 $MAINPID #PIDFile=/usr/local/lib/php/7.3/var/run/php-fpm.pid #Environment=PHPRC=/usr/local/lib/php/7.3/etc #Restart=always #RestartSec=3 [Service] Type=simple ExecStart=/usr/local/lib/php/7.3/sbin/php-fpm --nodaemonize --fpm-config /usr/local/lib/php/7.3/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID PIDFile=/usr/local/lib/php/7.3/var/run/php-fpm.pid Restart=always RestartSec=3 # 如果是达梦数据库的话 需要用下面的Service # /home/dmdba/dmdbms 达梦的安装目录 #[Service] #Type=simple #User=root #Group=root #WorkingDirectory=/root #Environment="DM_HOME=/home/dmdba/dmdbms" #Environment="LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:/home/dmdba/dmdbms/lib:/usr/local/lib" #Environment="PHPRC=/usr/local/lib/php/7.3/etc" #Environment="HOME=/root" #Environment="PATH=/home/dmdba/dmdbms/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" #ExecStart=/usr/local/lib/php/7.3/sbin/php-fpm --nodaemonize --fpm-config /usr/local/lib/php/7.3/etc/php-fpm.conf #ExecReload=/bin/kill -USR2 $MAINPID #Restart=on-failure #RestartSec=3 [Install] WantedBy=multi-user.target |
3. 重新加载 systemd 配置,使新服务生效:
|
1 |
systemctl daemon-reload |
4.启动并启用服务
|
1 |
systemctl start php-fpm-7.3.service |
5. 设置服务为开机自启动:
|
1 |
systemctl enable php-fpm-7.3.service |
6. 管理服务
- 启动服务
1systemctl start php-fpm-7.3.service - 停止服务
1systemctl stop php-fpm-7.3.service - 重启服务
1systemctl restart php-fpm-7.3.service - 查看服务状态
1systemctl status php-fpm-7.3.service - 禁用开机自启动
1systemctl disable php-fpm-7.3.service - 查看服务是否开机启动
12# 返回 enabled 是开机启动状态 返回 disable 是开机不启动systemctl is-enabled php-fpm-7.3.service
配置 webdav,可以点击此链接查看
php-引入达梦(dm)扩展-so,可以点击此链接查看