對於目前的我的開發者而言,使用雲服務器是十分方便快捷的,在興沖沖地寫好了項目代碼後,會有一種想要快速部署到服務器上的衝動,今天咱們就來實踐一下 0 到 1 的簡單服務器部署。html
首先你須要有一臺雲服務器,這裏以個人阿里雲服務器爲例,系統是CentOS 7.3
前端
想要在服務器上進行部署,首先得鏈接上服務器,能夠經過阿里雲官網控制的 瀏覽器遠程鏈接 登陸服務器,可是比較麻煩,每隔一段時間都須要從新登陸。除此以外,還能夠利用 ssh 經過帳號密碼或者密鑰進行鏈接,以下:nginx
# 經過帳號密碼進行鏈接,通常爲 root,鏈接成功後須要輸入密碼 ssh root@yourIp # 經過密鑰進行鏈接,yourKey 爲密鑰的本地路徑 ssh root@yourIp -i yourKey
如今的服務器部署,基本上離不開 nginx
,配置簡單易用,對於我的開發者十分友好。瀏覽器
yum install -y nginx
安裝成功後可使用 -v 查看版本,我這裏是 1.16.1服務器
nginx -v
可使用 Linux
的系統工具 Systemd
來啓動 nginx
,也可使用 nginx
自帶的命令:session
systemctl start nginx # 或 nginx # 設置開機自動啓動 systemctl enable nginx
當你想中止 nginx
時,可使用 stop 命令:ssh
systemctl stop nginx # 或 nginx -s stop
當你更改了 nginx 的配置時,這個時候每每須要重啓 nginx
服務配置才能生效:工具
systemctl restart nginx # 或 nginx -s reload
nginx
安裝好了以後,默認路徑通常是 /etc/nginx/
,若是在該路徑下沒有找到,可使用 nginx -t
命令查看安裝路徑:post
nginx -t # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful
這裏驗證的 nginx.conf
就是 nginx
的主配置文件,默認內容以下:阿里雲
# 部分配置已省略 server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
這裏咱們主要關注一下 server 的配置,以 http 協議的 server 爲例,逐行解析一下:
對於前端項目,本質上打包以後是一堆靜態文件,配置對應的 server_name 和 root 就能夠了,這裏以配置域名爲 www.example.com
,打包後 dist 下的文件存放服務器目錄爲 /home/admin/www
爲例:
# 部分配置已省略 server { listen 80 default_server; listen [::]:80 default_server; server_name www.example.com; root /home/admin/www; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
對於服務端項目,會在本地監聽一個端口來運行相關的服務,能夠利用 nginx
配置反向代理,使被訪問服務反向代理到對應的端口,這裏以 3000 端口爲例:
# 部分配置已省略 server { listen 80 default_server; listen [::]:80 default_server; server_name www.example.com; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:3000; } }
配置更改以後須要重啓一下
nginx
服務才能生效
上傳文件的方式也比較多,這裏主要介紹 scp
命令,以遠程服務器用戶爲 root@192.168.0.1
爲例:
# 將遠程服務器的 /remote/index.html 文件,下載到本地 /local 目錄下 scp root@192.168.0.1:/remote/index.html /local # 將遠程服務器的整個 remote 目錄,下載到本地 /local 目錄下 scp -r root@192.168.0.1:/remote/ /local # 將本地 /local/index.html 文件,上傳到遠程服務器的 /remote 目錄下 scp /local/index.html root@192.168.0.1:/remote # 將本地的整個 /local 目錄,上傳到遠程服務器的 /remote 目錄下 scp -r /local root@192.168.0.1:/remote
對於前端項目而言,如果想上傳 dist 目錄下的全部文件,但又不想上傳 dist 目錄,這個時候可使用 通配符 來上傳全部文件:
# 將本地的整個 /local 目錄下的全部文件,上傳到遠程服務器的 /remote 目錄下 scp -r /local/* root@192.168.0.1:/remote
在上傳前須要確保服務器的目錄具備正確的讀寫權限,不然會出現 SCP Permission denied
錯誤,具體的文件權限能夠經過 ls -l
查看:
ls -l # -rw-r--r-- 1 root root 2376 Feb 17 20:37 404.html # drwxr-xr-x 2 root root 4096 Feb 17 00:43 about # drwxr-xr-x 4 root root 4096 Feb 17 00:43 assets # drwxr-xr-x 2 root root 4096 Feb 17 00:43 atlas # -rw-r--r-- 1 root root 51022 Feb 17 20:37 head.png # -rw-r--r-- 1 root root 13927 Feb 17 20:37 index.html # drwxr-xr-x 8 root root 4096 Feb 17 00:43 posts
其中第二列表示文件權限,首字母爲文件類型,d
表示目錄文件,-
表示普通文件,後面的 rwx 表示 讀/寫/執行 權限,每三個一組,分別對應 擁有者/羣組/其餘組
如若沒有權限,能夠經過下面的命令來設置全部人可讀寫以及執行:
chmod 777 yourDir
將你的站點配置爲 https 須要下面幾個步驟:
ssl_certificate
和 ssl_certificate_key
分別表示證書文件和私鑰的存放路徑,示例以下:
# 部分配置已省略 server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name www.example.com; root /home/admin/www; ssl_certificate "/etc/pki/nginx/www.example.com.pem"; ssl_certificate_key "/etc/pki/nginx/private/www.example.com.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
當部署 https 站點時,常見的需求是將 http 站點自動跳轉到 https,nginx
配置以下:
server { listen 80; server_name example.com www.example.com; return 301 https://$server_name$request_uri; }
以上就是本篇的所有內容,若有錯誤,歡迎指正~