在AWS ubuntu16.04环境中搭建nginx和PHP7.2环境,并更改文档根目录
为了什么
实施的目标
达到的目标
所追求的目的
最终目标
刚刚 LPIC Level 1 考过的 Linux 初学者决定练习在 AWS 上搭建一个 Web 服务器,于是尝试执行了一下。
由于特别是 nginx 的配置文件没做好,遇到了一些困难,所以我将一些内容整理成备忘录。
另外,为了之后安装 WordPress,也整理了一下修改 nginx 文档根目录的方法。
服务器操作系统
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
安装PHP7.2
安装PHP7.2和PHP-FPM。据说要安装PHP-FPM以便将nginx与PHP协同使用。
# add-apt-repository ppa:ondrej/php
# apt-get update
# apt-get install php7.2 php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-zip
安装nginx
据说,虽然可以从ubuntu1的初始存储库中进行安装,但版本可能会变得过时。
$ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
$ VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` && sudo -E sh -c "echo \"deb http://nginx.org/packages/ubuntu/ $VCNAME nginx\" >> /etc/apt/sources.list"
$ VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` && sudo -E sh -c "echo \"deb-src http://nginx.org/packages/ubuntu/ $VCNAME nginx\" >> /etc/apt/sources.list"
$ sudo apt-get update
$ sudo apt-get install nginx
设置nginx和PHP-FPM自动启动。
确保在启动操作系统时自动启动nginx和PHP-FPM。
# systemctl enable nginx.service
Synchronizing state of nginx.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable nginx
# systemctl enable php7.2-fpm.service
Synchronizing state of php7.2-fpm.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable php7.2-fpm
改变nginx的文档根目录并与PHP-FPM进行协作。
1. Nginx的配置
通过更改nginx的配置文件(/etc/nginx/conf.d/default.conf),可以修改文档根目录并实现与PHP-FPM的配合(因为我发现没有default.conf文件,所以我自己创建了一个)。
server {
location / {
root /var/www/html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
可以通过更改根目录来自由地更改root。 默认的根目录是/usr/share/nginx/html。
注意fastcgi_pass根据PHP-FPM的版本而不同。
此外,如果不注释掉/etc/nginx/nginx.conf文件中的
include /etc/nginx/sites-enable/*;
这行代码,它将无法正常工作。(是否会覆盖sites-enable目录的设置呢?)
首先我直接将default.conf的内容追加到/etc/nginx/nginx.conf文件中,但从配置更改的易操作性等角度考虑,我还是创建了default.conf文件。
更改配置文件后,重新启动nginx以使配置生效。
nginx -s reload
2. PHP-FPM的配置
将设置文件中的user和group从www-data更改为nginx。
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
修改配置文件后,需要重新启动PHP-FPM以使配置生效。
# systemctl restart php7.2-fpm.service
确认环境是否正确配置。
在文档根目录中创建一个index.php文件,然后输入以下内容。如果在浏览器中能够确认phpinfo,则表示成功!
<?php
phpinfo()
上述内容
参考网站
安装完Ubuntu 16.04后,构建nginx + PHP7.2环境的步骤
在CentOS上通过nginx运行PHP
[备忘录]nginx的文档根目录