在继续本教程之前,请确保满足以下先决条件:
您有一个指向服务器公共IP的域名。我们将使用example.com。
您以具有sudo权限的用户身份登录。
已安装nginx版本
数据库已安装(未安装的话,自行安装)
将软件包索引和系统软件包更新为最新版本:
sudo apt update
sudo apt upgrade
由于php项目需要多套服务环境,所以需要安装多套php-fpm解释器
1、安装php7.2
sudo apt install php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
发现问题了:
找不到php相关的包,所以需要去更新php的包源
继续安装,发现还是不行 Unable to locate package php7.2。。。
最后找到一个网站:
https://www.howtoforge.com/tutorial/how-to-install-php-7-for-ispconfig-3-from-debian-packages-on-debian-8-and-9/
这才可以继续下去
根据方法更新源:
apt-get install -y apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
以下命令只能在一行输入,不可换行
```bash
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update
apt-get upgrade
2、安装php5.6
apt-get install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common php5.6-json php5.6-readline php5.6-xml
启动php5.6
service php5.6-fpm restart
然后我再在nginx下的http中包含引进web项目的配置文件
如下:
include /opt/nginx/conf/conf.d/*.conf;
这个*就是指我所有的php项目的配置文件;
再检测配置文件是否有问题: 通过nginx的服务——nginx -t验证
验证通过后,重启nginx服务 : /opt/nginx/sbin/nginx -s reload
访问情况如下:
安装成功!
以上是php5.6安装的整个过程。之后依葫芦画瓢,即可安装多版本的php服务
安装php7.2
apt-get install php7.2 php7.2-cli php7.2-cgi php7.2-fpm php7.2-gd php7.2-mysql php7.2-imap php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap php7.2-opcache php7.2-common php7.2-json php7.2-readline php7.2-xml
安装成功后,启动服务
service php7.2-fpm restart
大工告成!
等等,貌似还有个事情要说,我在启动的时候发现在用的TCP服务中,没有查看到php-fpm,这是咋回事?
原来默认是启用sock服务来支持php的,详情
打开:/etc/php/7.2/fpm/php-fpm.conf
引入的文件地址在:/etc/php/7.2/fpm/pool.d/*.conf
打开/etc/php/7.2/fpm/pool.d/www.conf
搜索 listen:第36行,屏蔽使用
当然你也可以不和我这个方式来处理,只是在配置nginx服务解释php脚本的时候,需要注意到这个!
在配置 fastcgi_pass 使用原始的 sock文件来运行服务,也是OK的!