將寶塔PHP專案下載到本地部署之nginx配置

獵手家園發表於2022-06-15

最近,公司人手不夠,找外包團隊做了個專案,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

 

相關文章