1. 程式人生 > 其它 >centos7上用nginx部署前後端分離專案

centos7上用nginx部署前後端分離專案

前言

使用nginx部署前後分離專案,後端為go,前端Vue,部署的伺服器環境是CentOS7
整個流程大抵分為三個塊:
1.安裝需要的依賴環境
2.安裝用來部署的nginx
3.改nginx配置部署專案

1、依賴環境問題

1.gcc安裝
yum install gcc-c++

# 安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝
2.PCRE pcre-devel 安裝
yum install -y pcre pcre-devel

# nginx 的 http 模組使用 pcre 來解析正則表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫
3.zlib 安裝
yum install -y zlib zlib-devel

# nginx 使用 zlib 對 http 包的內容進行 gzip
4.OpenSSL 安裝
yum install -y openssl openssl-devel

2、安裝Nginx

1.安裝包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

# 解壓
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
2.配置
./configure
3.編譯安裝
make
make install

# 安裝路徑。whereis nginx
4.啟動、停止nginx
cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop
./nginx -s quit
./nginx -s reload
5.端口占用錯誤解決
yum install net-tools
6.配置開機自啟動
vi /etc/rc.local

# 新增
/usr/local/nginx/sbin/nginx

# 設定許可權
chmod 755 rc.local

3.部署前後分離專案

1.上傳需要部署的專案
前端專案需要用 npm run build 打包
找到目錄下的 dist 資料夾,上傳到需要部署的伺服器

後端專案直接上傳,記得啟動,可編譯的專案編譯後啟動。
2.開啟配置檔案
vi /usr/local/nginx/conf/nginx.conf
3.配置裡面的server
daemon on;
worker_processes  50;
#error_log /dev/stdout warn;
error_log  /var/log/nginx/error.log error;


events {
    worker_connections 1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    # See http://licson.net/post/optimizing-nginx-for-large-file-delivery/ for more detail
        # This optimizes the server for HLS fragment delivery
    sendfile off;
    #tcp_nopush on;
    keepalive_timeout  65;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log /dev/stdout combined;

#     ssl_ciphers         HIGH:!aNULL:!MD5;
#     ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
#     ssl_session_cache   shared:SSL:10m;
#     ssl_session_timeout 10m;

server {
        listen 80;
		server_name xxx.xxx.xx.xxx;
        # Uncomment these lines to enable SSL.
        # Update the ssl paths with your own certificate and private key.
        # listen 443 ssl;
        # ssl_certificate     /opt/certs/example.com.crt;
        # ssl_certificate_key /opt/certs/example.com.key;
        location / {
          root /usr/loacl/xxx;     # 前端的dist檔案需要和nginx配置路徑相同
          try_files $uri $uri/ /index.html;
          index  index.html;
        }
		# 新增攔截路徑和代理地址
        location /api/ {
        # 新增頭部資訊
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Port $server_port;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          proxy_set_header  Host  $host;
          proxy_pass http://xxx.xxx.xxx.xxx:xxxx/;
        }
	}

}

4.檢查配置檔案是否正確
nginx -t
5.重啟nginx
./nginx -s reload
6.配置注意事項
# 讓nginx攔截所有帶/api/的請求,轉發到後端伺服器,就可以解決跨域的問題
# location如果一個特定的url 要使用別名,不能用root,alias指定的目錄是準確的,root是指定目錄的上級目錄
# 注意:使用代理地址時末尾記得加上斜槓"/"。
# 這裡用的root使用者,如果用其他使用者,可能訪問靜態資源會被禁止訪問(403),需要“chmod 755 靜態資源路徑 ” 授權,授權的時候要逐級授權,