代码改变世界

将宝塔PHP项目下载到本地部署之nginx配置

2022-06-15 18:03  猎手家园  阅读(1510)  评论(0编辑  收藏  举报

最近,公司人手不够,找外包团队做了个项目,php做的,对方测试是部署到宝塔上的。

对方做方,直接将宝塔上代码下载下来丢给了我们。

项目做的超级烂,服务态度还很差。主要是我们提前把款打给了对方,看来以后项目没部署完,没正式运行不能给尾款啊!最主要是价格还不低,比市场价稍高一点,因为是朋友介绍的,也不好意思砍价。

 

对方一问三不知,回答永远只有一句话:我们都在宝塔部署的,之前也没在其它服务器上配过。

没办法只能自己摸索着干了

 

我们的机房服务器环境:

Linux CentOS6.10

MYSQL5.6

JDK1.8

Redis5.0.14

Nginx1.20.1

 

一、第一步是搭建PHP环境

请看上篇文章,下面有送门

传送门:https://www.cnblogs.com/hunttown/p/16287944.html

 

二、配置Nginx

因为我们有一个主入口,也是nginx做的负载均衡,所以结构为:

主服务器nginx -----> 从服务器nginx -----> php7.3 

 

1、先来看一下主服务器的nginx配置(Https转发)

upstream mydomain {
    #你要转发的服务器和端口
    server 192.168.200.46:80 weight=10 max_fails=2 fail_timeout=30s;
}
server {
    #监听80端口和域名,如果是http请求,则要自动跳转到https
    listen                  80;
    server_name             www.domain.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}
server {
    #监听443端口
    listen 443              ssl;
    server_name             www.domain.com;
    
    #配置Https证书
    ssl_certificate         ca/www.domain.com/7923651_www.domain.com.pem;
    ssl_certificate_key     ca/www.domain.com/7923651_www.domain.com.key;
    ssl_session_timeout     5m;
    ssl_ciphers             ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers       on;

    #日志文件存储位置
    access_log      logs/www.domain.com/wwww.domain.com_access.log main;
    error_log       logs/www.domain.com/wwww.domain.com_error.log warn;

    location / {
        proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
        proxy_set_header        Host  $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection "upgrade";
        proxy_pass              http://mydomain;

        #WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
    }
    location /logs/ {
        autoindex       off;
        deny all;
    }
}

 

2、再看从服务器配置(从服务器不需要https配置)

server {
    #监听80端口,从主服务器转发过来的,要和主服务器转发的一致
    listen              80;
    server_name         wwww.domain.com;
    
    #配置你的项目目录,这个地方很重要
    root                /usr/local/webroot/myproject/public;
    index               index.html index.php index.htm default.php default.htm default.html;

    location / {
        index  index.php index.html index.htm;

        #重写规则,伪静态
        if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php?s=$1;
        }
    }

    location ~ \.php {
        include fastcgi_params;
        
        #pathinfo,用于存放pathinfo信息
        set $path_info "";
        
        #pathinfo,用于存放真实地址
        set $real_script_name $fastcgi_script_name;

        #如果地址与引号内的正则表达式匹配
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            #将文件地址赋值给变量 $real_script_name
            set $real_script_name $1;
            
            #将文件地址后的参数赋值给变量 $path_info
            set $path_info $2;
        }

        #配置fastcgi
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        
        #php服务指向
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9001;
        include        fastcgi.conf;
    }

    access_log          logs/wwww.domain.com/wwww.domain.com_access.log main;
    error_log           logs/wwww.domain.com/wwww.domain.com_error.log warn;
}

 

三、启动服务就可以运行了,至此配置完成

当然期间还遇到了一些小问题,传送门:https://www.cnblogs.com/hunttown/p/16373952.html