Github Actions
是Github
的持續集成服務,點擊Actions
在你Github上的項目上建立配置文件,實際也就是保存在.github/workflows
下的以.yml
結尾的文件。javascript
(1)workflow (工做流程):持續集成一次運行的過程,就是一個 workflow。css
(2)job (任務):一個 workflow 由一個或多個 jobs 構成,含義是一次持續集成的運行,能夠完成多個任務。html
(3)step(步驟):每一個 job 由多個 step 構成,一步步完成。java
(4)action (動做):每一個 step 能夠依次執行一個或多個命令(action)。node
Github存在一個 官方市場,搜索知足你需求的action就能夠了。在steps
配置uses
來引用這個action
的腳本。
name: Blog CI # 配置名稱 on: # 觸發條件,master分支push代碼後觸發workflow push: branches: [ master ] jobs: build: runs-on: ubuntu-latest # 構建運行環境 steps: - name: Checkout # 獲取源碼,使用actions/checkout@v2 uses: actions/checkout@v2 - name: Install Node.js # 安裝指定Node版本,使用actions/setup-node@v1 uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install & Build # 安裝依賴打包靜態資源 run: | yarn config set registry https://registry.npm.taobao.org yarn install yarn build - name: Deploy to Server # 部署到雲服務器,使用easingthemes/ssh-deploy@v2.1.1,經過ssh的方式鏈接 uses: easingthemes/ssh-deploy@v2.1.1 env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # 私鑰,公鑰拷貝到服務器在/root/.ssh/authorized_keys中中 ARGS: ${{ secrets.ARGS }} # 對於任何初始/必需的rsync標誌,默認-avzr --delete,若是目錄下有其餘不可刪除文件或文件夾能夠用--exclude忽略,如--exclude /uploads/ SOURCE: "build/" # 源目錄 REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # 服務器地址 REMOTE_PORT: ${{ secrets.REMOTE_PORT }} # ssh鏈接端口號 REMOTE_USER: root # 鏈接用戶名 TARGET: ${{ secrets.REMOTE_TARGET }} # 目標部署目錄
由於部署到雲服務器須要身份驗證,相應的敏感數據不能直接暴露,Github中能夠在項目setting
中的Secrets
設置相應的環境變量,而後經過${{}}
的語法就能夠訪問相應的變量了。nginx
由於個人服務器使用了Nginx
這裏簡單作些記錄git
Nginx是一個高性能的HTTP和反向代理web服務器,平時應用場景能夠做爲反向代理服務器,靜態資源服務器,負載均衡等功能。安裝使用以Linux爲例,Windows和Mac能夠直接下載安裝包。
yum install nginx -y # Centos 7.x直接使用yum安裝便可
使用rpm -ql nginx
查看Nginx
主要安裝在什麼地方,/etc/nginx/nginx.conf
對應Nginx的主配置文件。github
nginx -s reload # 向主進程發送信號,從新加載配置文件,熱重啓 nginx -s reopen # 重啓 Nginx nginx -s stop # 快速關閉 nginx -s quit # 等待工做進程處理完成後關閉 nginx -T # 查看當前 Nginx 最終的配置 systemctl enable nginx # 使用系統管理命令設置Nginx開機啓動
/etc/nginx/nginx.conf
的 基本結構。main # 全局配置,對全局生效 ├── events # Nginx服務器相關連接配置 | ├── worker_connections 1024;# 默認最大併發鏈接數 ├── http # 配置代理,緩存,日誌定義等絕大多數功能和第三方模塊的配置 │ ├── upstream # 配置後端服務器具體地址,能夠配置多個,也是負載均衡配置的地方 │ ├── server # 配置虛擬主機的相關參數,一個 http 塊中能夠有多個 server 塊 │ ├── server │ │ ├── location # 每一個server能夠包含多個location塊,location用於匹配相應的uri │ │ ├── location │ │ └── ... │ └── ... └── ...
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # 包括其它自定義配置 server { listen 80; # 服務端口 server_name www.example.com # 服務地址; rewrite ^(.*)$ https://$host$1 # $host$1變量對應上面的服務地址,配置了https訪問時就重定向到https的地址; } # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; #ssl證書配置 ssl_certificate /etc/nginx/Nginx/ssl.crt; # 證書地址 ssl_certificate_key /etc/nginx/Nginx/ssl.key; # 證書私鑰 ssl_session_timeout 10m; ssl_session_cache shared:SSL:1m; 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 / { root /home/dist # 靜態資源地址; index index.html; try_files $uri $uri/ /index.html @rewrites; # 單頁面history模式下的路由配置 } # 其餘靜態資源、公共資源目錄 location /public { alias /home/public; # 靜態資源目錄 autoindex on; # 開啓靜態資源列目錄 autoindex_exact_size off; # on(默認)顯示文件的確切大小,單位是byte;off顯示文件大概大小,單位KB、MB、GB autoindex_localtime off; # off(默認)時顯示的文件時間爲GMT時間;on顯示的文件時間爲服務器時間 } location ~ /api/ { proxy_pass http://www.example.com:8080; # 相應接口轉發的uri } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
在/etc/nginx/conf.d
目錄下增長Gzip
的配置web
gzip on; # 默認off,是否開啓gzip gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_static on; # 默認off,開啓後會檢查.gz結尾的壓縮文件 gzip_proxied any; # 默認off,控制從代理服務器上接受壓縮資源 gzip_vary on; # 響應頭中增長 `Vary: Accept-Encoding` gzip_comp_level 6; # gzip壓縮比,壓縮級別是1-9,1壓縮級別最低,9最高,級別越高壓縮率越大,壓縮時間越長,建議4-6 gzip_buffers 16 8k; # 獲取多少內存用於緩存壓縮結果,16 8k 表示以 8k*16爲單位得到 gzip_min_length 1k; # 容許須要壓縮的最小資源大小 gzip_http_version 1.1; # 默認1.1,開啓Gzip所需的最低HTTP版本
參考