• Ununtu服务器安装Nginx与PHP


    Ununtu服务器安装Nginx与PHP

    1. 安装Nginx:

    1.1

    sudo apt update
    sudo apt install nginx
    

    验证结果,使用命令:

    sudo systemctl status nginx
    

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

    image

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

    sudo systemctl restart nginx
    

    1.2

    但是从外界还是无法访问,所以我们还需要配置防火墙,使用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的相关配置

    3.1

    创建文件: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的两个文件。

    3.2

    创建文件: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;
    

    3.3

    创建文件: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

    
    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端口相同。

  • 相关阅读:
    手写promise
    国际版腾讯云/阿里云:全站加快有哪些功用?有哪些优势?适用于什么场景?
    【附源码】计算机毕业设计JAVA旅行指南网站
    【web前端】单向数据绑定和双向数据绑定有什么区别?
    河流动力学复习
    Visual Studio2022编译器实用调试技巧
    Kindle电子书下载功能关闭怎么办,借助calibre和cpolar搭建私有的网络书库公网访问
    基于Mediapipe的对象分类任务,CPU平台毫秒级别延迟
    白帽信息收集
    【数学建模】层次分析
  • 原文地址:https://www.cnblogs.com/fireinstone/p/17320143.html