跳到主要内容

php-fpm 安装使用

php-fpm installation in ubuntu

之前安装wordpress的时候, php-fpm都是wordpress的docker镜像自带, 所以压根就没有去考虑过安装php的事情, 甚至还以为caddy自带了php.

这次安装discuz, 才发现需要本地机器安装php-fpm.

同时php-fpm默认监听的是socks, 如果要使用tcp 9000端口监听, 也需要额外配置.

在远程服务, 或者多个docker 容器的情况下, 还是用ip比较方便.

  • 安装
sudo apt install php8.1-fpm
  • 操作启动
sudo systemctl restart  php8.1-fpm

systemctl status php8.1-fpm.service
  • 修改配置支持9000端口监听

修改的是www.conf配置.

ubuntu@geetk:/etc/php/8.1/fpm$ pwd
/etc/php/8.1/fpm
ubuntu@geetk:/etc/php/8.1/fpm$ ls
conf.d php-fpm.conf php.ini pool.d
ubuntu@geetk:/etc/php/8.1/fpm$ ls pool.d/
www.conf

默认监听的是sock端口

listen = /run/php/php8.1-fpm.sock

修改为 tcp 端口, 然后重启服务即可.

listen = 127.0.0.1:9000
  • 安装额外的插件以便支持php和xml
 sudo apt install php-mysql
sudo apt install php-xml

caddy file的联动配置

注意这里的配置只用作开发, 还没有仔细去考虑安全性, 比如禁用敏感php访问执行之类.

discuz.fake.cn {
tls fake@qq.com
root * /data/devops/discuz/q
php_fastcgi 127.0.0.1:9000
file_server
}

比如配置了discuz数据库后, 在以下地址可以发现数据库相关的配置, 如果php被泄漏出去站点就不安全了.

ubuntu@geetk:/data/devops/discuz$ grep "mysql.fake.domain" -R .
./q/config/config_global.php:$_config['db'][1]['dbhost'] = 'mysql.fake.domain:11306';
./q/config/config_ucenter.php:define('UC_DBHOST', 'mysql.fake.domain:11306');
./q/uc_server/data/config.inc.php:define('UC_DBHOST', 'mysql.fake.domain:11306');

完整的参考文档

How to Install or Upgrade PHP 8.1 on Ubuntu 20.04

https://www.cloudbooklet.com/how-to-install-or-upgrade-php-8-1-on-ubuntu-20-04/

sudo apt install php8.1-fpm

安装常用插件

sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-redis php8.1-intl -y

discuz 需要安装的插件

安装discuz后发现还需要安装的php插件

# 支持mysql
sudo apt install php-mysql

# 支持xml
sudo apt install php-xml

# 支持插件
sudo apt install php-curl

# 据说是验证码
sudo apt install php-gd

报错 运行环境提示GD版本过低, 安装gd插件解决: sudo apt install php-gd

https://discuz.dismall.com/thread-3852168-1-1.html