web專案部署上線(無虛擬主機,待學習)

Anlii發表於2022-12-18

購買阿里雲伺服器

阿里雲伺服器ECS

系統映象使用Ubuntu 20.04 LTS

使用ssh連線伺服器,終端或者CMD中執行:$ssh root@x.x.x(阿里雲伺服器賬號名@公網地址)

輸入賬號密碼即可連線上伺服器(如果配置公鑰,就不用再輸入密碼了,更加安全)

記得去阿里雲的ECS的控制檯,看看安全組中,是否開放了必要的埠

安裝必要的環境(進入伺服器之後,安裝必要的執行環境)

$apt update  // 更新軟體源

$apt install git // 安裝git,用於拉取程式碼,版本控制等

$curl -sL https:// deb.noadesource.com/setup_14.x | sudo -E bash // 新增hode 14的安裝源

$apt install nodejs // 安裝nodejs,基礎執行環境

$apt install yarn // 安裝yarn,用於管理npm依賴

$apt install nginx // 安裝nginx,伺服器,提供web服務

所有命令,都是在伺服器的root使用者下執行,所以不用加上sudo

上傳程式碼到雲伺服器

如果想要把本地的程式碼上傳到伺服器上,可以使用的工具有很多,比如:ftp,sftp,scp,git等等

使用git:$git clone xxx(儲存程式碼的遠端地址)

打包生成靜態檔案

進入到專案目錄,安裝必要的依賴:$yarn

執行打包:$yarn buld

使用ngix解析專案

修改nginx配置,把打包好的靜態資源,用nginx來提供web服務

(配置虛擬主機,可以部署多個專案)

$vim /etc/nginx/sites-available/default

按i鍵進入編輯模式,修改後的內容為:

server{

  liesten 80 default_server;

  listen [::]:80 default_server;

  root /var/www/shop;

  index index.html index.htm index.nginx-debian.html;

  server_name shop.liiann.com;

  location / {

    try_files $uri $uri/ =404;

  }

  location ^~/api/ {

    proxy_pass https://***.com // 後端介面地址

    add_header 'Access-Control-Allow-Origin' '*' // 解決跨域問題

    rewrite ^/api/(.*)$ /$l braek; // 刪除配置字首

  }

}

編輯之後按Esc鍵退出編輯模式,輸入:wq儲存退出

檢查nginx配置,出現success就沒問題

$nginx -t

平滑重啟nginx:

$nginx -s reload

解析域名

去域名控制檯,解析域名,這裡解析的域名,要和nginx配置的server_name一致

配置HTTPS

證書申請

瀏覽器端生成

dns校驗(再設定一個解析,驗證域名合法性)

驗證透過後得到證書,下載證書到本地,在上傳到伺服器,這裡使用scp上傳。先傳到/tmp目錄:

$scp file root@x.x.x:/tmp

去伺服器,建立一個目錄,用來存放ssl證書:

$cd /etc/nginx

$ mkdir ssl

移動證書到建立的目錄:

$mv /tmp/file/etc/nginx/ssl

修改nginx配置

$vim /etc/nginx/sites-available/default

增加內容:

  liesten 443 ssl;

  ssl_certificate  /etc/nginx/ssl/full_chain.pem;

  ssl_certificate_key  /etc/nginx/ssl/private.key;

  ssl_session_timeout 5m;

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MDS:!ADH:!RC4;

  ssl_protocols TLSv1 TLSv1.1 TLSv1 .2;

  ssl_prefer_server_ciphers on;

檢查nginx配置,出現success就沒問題:

$ nginx -t

平滑重啟nginx

$nginx -s reload

nginx配置

server{

  listen 80 default_server;

  server_name shop.liiann.com;

  rewrite ^(.*)https://server_name$1 permanent;

}

server{

  liesten 443 ssl default_server;

  ssl_certificate  /etc/nginx/ssl/full_chain.pem;

  ssl_certificate_key  /etc/nginx/ssl/private.key;

  ssl_session_timeout 5m;

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MDS:!ADH:!RC4;

  ssl_protocols TLSv1 TLSv1.1 TLSv1 .2;

  ssl_prefer_server_ciphers on;

  root /var/www/shop/dist;

  index index.html index.htm index.nginx-debian.html;

  server_name shop.liiann.com;

  location / {

    try_files $uri $uri/ =404;

  }

//配置api的代理

  location ^~/api/ {

    proxy_pass https://***.com // 後端介面地址

  }

}

 

相關文章