購買阿里雲伺服器
阿里雲伺服器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 // 後端介面地址
}
}