1

Ununtu服务器安装Nginx与PHP - 石中火本火

 1 year ago
source link: https://www.cnblogs.com/fireinstone/p/17320143.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Ununtu服务器安装Nginx与PHP

1. 安装Nginx:

sudo apt update
sudo apt install nginx

验证结果,使用命令:

sudo systemctl status nginx

若有结果如下则说明成功:

image

但注意,此时只是在服务器上配置好了nginx,执行nginx -v应当可以看到版本号。此外,如果对nginx更新了配置,如增加了PHP解释,则应当重启nginx服务器:

sudo systemctl restart nginx

但是从外界还是无法访问,所以我们还需要配置防火墙,使用UFW防火墙管理工具可以轻松完成:

安装UFW:

sudo apt-get install ufw -y

启动UFW服务:

sudo ufw enable

(或者相反的,也可以关闭/重置防火墙,下面命令不在安装流程内,不要执行)

sudo ufw disable
sudo ufw reset

!注意:一定要先开启ssh端口的开放,不然下次连接就G了!!!连不上了!!!

sudo ufw allow 22

启动服务后,需要配置防火墙,使得局域网内其他IP地址可以访问服务器的 HTTP(80)和 HTTPS(443)端口

sudo ufw allow 'Nginx Full'

验证状态:

sudo ufw status

成功则会如下所示:

image

测试连通性:

在本地浏览器输入服务器IP地址,默认使用http端口,即可访问nginx默认界面:

image

2. 安装PHP:

PHP是服务端经常使用的编程语言,命令只需一行:

sudo apt install php-fpm

一旦安装完成,FPM 服务将会自动启动。想要检查服务状态,运行(这里安装的是7.4版本,可以使用命令php -v查看,将7.4改成实际安装版本即可):

sudo systemctl status php7.4-fpm
image

还可以安装mysql扩展,以便使得PHP可以做数据库相关操作:

sudo apt install php-mysql

安装后也需要重启PHP-FPM服务,以确保新更新被运行:

sudo systemctl restart php7.4-fpm

3. Nginx的相关配置

创建文件:sudo vim /etc/nginx/php-fpm74.conf,写入如下内容:

location ~ .*\.php$ {
        fastcgi_pass 127.0.0.1:9004;
        fastcgi_param PHP_SELF  $uri;
        fastcgi_param SERVER_NAME  $host;
        fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        include php_cgi.conf;
}

fastcgi_pass 127.0.0.1:9004代表要将信息通过9004端口传递给php-fpm处理,2~6行都是定义的变量,7,8行是include的两个文件。

创建文件:sudo vim /etc/nginx/php_cgi.conf,写入如下内容:

fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

创建文件:sudo vim /etc/nginx/conf.d/www.conf,写入如下内容:

server {
        server_name 210.45.124.82;
        index index.php;
        root /opt/www;
        include php-fpm74.conf;
}

进入/opt目录,新建www目录,这个目录就是默认网站的页面所在的目录了:

cd /opt
sudo mkdir www

4. php-fpm的相关配置

创建文件:sudo vim /etc/php-fpm.d/www.conf,(注意这个地方写的位置需要自己注意一下,我的安装位置是/etc/php/7.4/fpm,里面有这样四个文件或目录:conf.d php-fpm.conf php.ini pool.d,php-fpm.conf即主配置文件,其中有一句这样的语句:include=/etc/php/7.4/fpm/pool.d/*.conf,意思是导入以conf结尾的文件配置,所以我的文件位置在这个地方/etc/php/7.4/fpm/pool.d/www.conf),写入如下内容:

[global]
pid = run/php-fpm.pid
error_log = log/error.log
[www]
listen = 127.0.0.1:9004
user = www-data
group = www-data
pm = static
pm.max_children = 5
rlimit_files = 20000
request_terminate_timeout = 10
pm.max_requests = 20000

user,group也需要自定义化,打开文件/etc/nginx/nginx.conf ,看第一行user www-data,需与此值相同。

image

5. 重启服务,更新配置:

sudo systemctl restart nginx php7.4-fpm

也可以将两个服务加入开机服务(disable取消):

sudo systemctl enable nginx php7.4-fpm

6. 测试文件

回到/opt/www目录,创建文件:sudo vim info.php

<?php
phpinfo();
?>

然后在浏览器输入:ServerIP/info.php即可看到

image

7.可能错误排查

查看错误日志

// nginx
tail /var/log/nginx/error.log
// php
systemctl status php7.4-fpm.service

错误1:403,无文件或者权限不足
无文件问题根据3.3节设置的index去看对应的文件夹是否有文件
权限不足问题,则需要文件所有者账户将index的对应文件夹提权:sudo chmod R 777 /opt/www
错误2:503 gateway error,一般是php-fpm配置出错,需注意配置文件不要写错位置(要自己找安装位置,一般在/etc或者/usr/local/etc中并且要从主配置文件顺藤摸瓜,找到include的文件位置,并在相应位置创建),另外配置listen端口一定需与nginx的pass端口相同。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK