ubuntu配置php环境

php环境的配置对我来说真的有点迷惑,php官网上让我们自行编译,百度出来的是让我们使用apt安装,这两种方法我都试了,都是可行的。这里记录一下。

通过apt安装

apt install php php-cli php-common php-fpm php-mysql

执行这个命令的结果告诉我大概意思是配置过程出了问题,我就又执行了一次,这次说依赖出了问题,我看到里面有php8.1-xxx,我就灵机一动,把上面的命令改了改有执行了一次

apt install php8.1 php8.1-cli php8.1-common php8.1-fpm php8.1-mysql

结果反正成功了。接下来我打算安装nginx

apt install nginx

然后创建一个wordpress用的server配置,在/etc/nginx/sites-enabled/wordpress(通过拷贝/etc/nginx/sites-enabled/default),然后修改其中内容

server {
  listen 80;
  listen [::]:80;
  root /usr/share/nginx/html/wordpress;

  index index.php index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param QUERY_STRING $query_string;
  }
}

说实话要不是default里面有php相关的配置,我估计我类似都不知道还有unix:/run/php/php8.1-fpm.sock这种写法,那肯定要走很多弯路,因为我只知道127.0.0.1:9000这种写法,而刚好通过apt安装的php8.1-fpm好像并不能通过127.0.0.1:9000来使用,不要问我怎么知道的,因为我刚开始就是用这种方法,不成功后,偶然看到有一句注释的# fastcgi_pass unix:/run/php/php7.4-fpm.sock,我就改成8.1试了试,没成想竟然真行:)

然后我在/usr/share/nginx/html/wordpress(wordpress是我创建的)里面创建了test.php

<?php phpinfo() ?>

然后要启动nginx了,systemctl start nginx,报错了,我用systemctl status nginx看状态,没启动成功,就去/var/log/nginx/error.log里去看报错,说是80端口被占用了。我蒙蔽了,新买的服务器,哪有占用80呀,执行netstat -plnt | grep 80,结果让我震惊呀,apache2用了80,我我我,无话可说。经过0.1s的思考我觉得应该是最初安装php环境时某一个包里面把apache带了进来。这肯定不行,我需要把apache2关掉,用systemctl stop apache2,在执行systemctl disable apache2(机器重启也不会启动这个服务了)。然后重新执行systemctl start nginx,成功了。访问https://wp.tangxuyang.cn/test.php正常了!

通过编译源码安装

参考了PHP: Nginx 1.4.x on Unix systems – Manual

  1. 下载源码,wget https://www.php.net/distributions/php-8.3.10.tar.gz
  2. 解压缩,tar xzvf php-8.3.10.tar.gz
  3. cd php-8.3.10
  4. 安装编译时依赖项,apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev zlib1g-dev,这句是在README.md中看到的
  5. 执行./configure –enable-fpm –with-mysqli –with-zlib。其实开关很多,我也不知道要用哪些,–enable-fpm和with-mysqli是php文档中写的。–with-zlib是因为我编译安装后运行wordpress时包错,说gzinflate函数未定义,网上说需要用–with-zlib重新编译。
  6. 然后执行/usr/local/sbin/php-fpm

然后配置nginx,使用fastcgi_pass 127.0.0.1:9000;

以上两种方式我都用过,也都成功了,wordpress可以运行。一个是用京东云,一个是本地虚拟机,操作系统都是ubuntu22.04。


评论

《 “ubuntu配置php环境” 》 有 2 条评论

  1. […] 参考ubuntu配置php环境和ubuntu上安装mysql […]

  2. […] 参考ubuntu配置php环境和ubuntu上安装mysql […]

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注