摘要:部署小說服務(wù)到騰訊云小說版本寫完了,接下來就開始部署到服務(wù)器上,用到了。申請騰訊云證書直接點下一步,然后用推薦選項驗證。下載證書上傳到服務(wù)器找到騰訊云的證書管理去下載證書。
部署小說api服務(wù)到騰訊云
小說api1.0版本寫完了,接下來就開始部署到服務(wù)器上,用到了nginx、pm2、nvm、git、OpenSSL。
服務(wù)器配置: CentOS 7.4 64位 1 核 2 GB 1 Mbps
node版本: 8.9.0
nvm版本: 0.33.11
npm版本: 5.5.1
nginx版本:1.12.2
git版本: 2.9.5
在小說api項目的根目錄創(chuàng)建一個pm2.json的文件。
{ "name": "novel-api", // 服務(wù)名 "script": "./bin/www", // 啟動腳本 "cwd": "./", // 當前工作路徑 "watch": [ // 監(jiān)控變化的目錄,一旦變化,自動重啟 "bin", "routers" ], "ignore_watch": [ // 從監(jiān)控目錄中排除 "node_modules", "logs", "public", "log" ], "watch_options": { "followSymlinks": false }, "max_memory_restart": "1G", // 根據(jù)內(nèi)存限制重新啟動應(yīng)用程序。 "error_file": "./logs/novel-apierr.log", // 錯誤日志路徑 "out_file": "./logs/novel-api-out.log", // 普通日志路徑 "env": { "DEBUG": "novel-api", // 環(huán)境變量參數(shù),debug名字為novel-api,8080端口監(jiān)聽 "PORT": "8080" } }
package.json文件添加npm run deploy部署命令。
"deploy": "pm2 start pm2.json"
pm2 常用命令。
pm2 save 保存當前進程列表。
pm2 resurrect 啟動之前保存的進程列表。
pm2 restart app.js|app_name 重啟進程
pm2 start app.js 啟動進程
pm2 list 查看進程列表
pm2 stop app_name |app_id 停止指定的應(yīng)用。 all 停止所有應(yīng)用
購買服務(wù)器https://buy.cloud.tencent.com/cvm?tab=lite,我買的是CentOS 7.4 64位 1 核 2 GB 1 Mbps的服務(wù)器。如果只是嘗試部署流程,可以選擇按時計費。
購買域名https://dnspod.cloud.tencent.com/?from=qcloudProductDns建議選.com的域名。
添加一個api開頭的子域名https://console.cloud.tencent.com/domain,然后添加解析。
登陸到服務(wù)器然后執(zhí)行以下安裝命令。
安裝nginxyum install -y nginx nginx -v安裝nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash nvm --version安裝node和pm2、apidoc
nvm install 8.9.0 nvm use 8.9.0 node -v npm -v npm install -g pm2 apidoc安裝git
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel tar yum install -y gcc-c++ perl-ExtUtils-MakeMaker cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz tar xf git-2.9.5.tar.gz cd git-2.9.5 make configure make profix=/usr/git make install echo "export PATH=$PATH:/usr/git/bin" >> /etc/profile source /etc/profile git --version // 配置git git config --global user.name "用戶名稱" git config --global user.email 電子郵件地址在服務(wù)器上克隆git倉庫
先進入home路徑創(chuàng)建wwwroot文件夾。
cd /home && mkdir wwwroot cd wwwroot git clone https://github.com/lanpangzhi/novel-api.git cd novel-api npm install npm run doc npm run deploy
這個應(yīng)用就pm2被啟動了。
配置nginx先啟動nginx。
nginx
http://123.206.45.87 在瀏覽器輸入服務(wù)器ip就可以看到nginx已經(jīng)啟動了。
進入nginx配置目錄,新建文件。
cd /etc/nginx/conf.d touch api.langpz.com-8080.conf
如果一臺服務(wù)器的server比較多,建議用域名和端口做配置文件名。
編輯api.langpz.com-8080.conf 配置文件。
vi api.langpz.com-8080.conf
把下面代碼復(fù)制粘貼過去。
upstream novel-api { server 127.0.0.1:8080; } server { listen 80; server_name 你自己的域名; location / { proxy_pass http://novel-api; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_redirect off; } }
ctrl + c 輸入:wq 退出并保存。再執(zhí)行nginx -s reload 在瀏覽器輸入你的域名就可以看到文檔,http://api.langpz.com
gzip壓縮cd /etc/nginx/ vi nginx.conf
把下面代碼復(fù)制粘貼過去。
## gzip壓縮 gzip on; # ie6不啟用gzip gzip_disable "msie6"; gzip_vary on; gzip_proxied any; # 壓縮等級 1-9 gzip_comp_level 2; gzip_buffers 16 8k; gzip_http_version 1.1; # 為除“text/html”之外的MIME類型啟用壓縮 gzip_types text/plain text/css application/json application/x-javascript application/javascript image/tiff image/x-icon application/font-woff application/vnd.ms-fontobject text/javascript;
ctrl + c 輸入:wq 退出并保存。再執(zhí)行nginx -s reload。可以去站長之家看你的壓縮率http://tool.chinaz.com/gzips/
還是修改nginx.conf這個文件
vi nginx.conf // 把下面代碼復(fù)制過去 # 隱藏nginx版本號 server_tokens off;
ctrl + c 輸入:wq 退出并保存。再執(zhí)行nginx -s reload。
這里就不顯示nginx版本號了。
我用的是騰訊云的免費證書,也可以自己生成。https://cloud.tencent.com/product/ssl?from=qcloudHpHeaderSsl,使用域名免費版。
申請騰訊云ssl證書
直接點下一步,然后用推薦選項驗證。申請很快不到十分鐘就下來,到時候還會有郵件和短信通知。
找到騰訊云的ssl證書管理去下載證書。
壓縮包里面有三個文件夾找到Nginx這個文件夾。
在服務(wù)器進入nginx所在目錄新建一個文件夾。
cd /etc/nginx/ mkdir api.langpz.com
然后把Nginx文件夾里面兩個文件上傳到服務(wù)器/etc/nginx/api.langpz.com 這個文件夾里面。
可以下載一個FileZilla軟件或者下載一個別的ftp工具,還可以用命令行,我這里下載了FileZilla使用它去上傳。
首先在目錄 /etc/nginx/api.langpz.com 運行以下代碼生成 dhparam.pem 文件
cd /etc/nginx/api.langpz.com openssl dhparam -out dhparam.pem 2048修改配置文件
cd /etc/nginx/conf.d touch api.langpz.com-8080.conf
把下面代碼覆蓋api.langpz.com-8080.conf文件。
upstream novel-api { server 127.0.0.1:8080; } # 配置共享會話緩存大小 ssl_session_cache shared:SSL:10m; # 配置會話超時時間 ssl_session_timeout 10m; # 強制跳轉(zhuǎn)https server { listen 80; server_name api.langpz.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name api.langpz.com; # 證書文件 ssl_certificate /etc/nginx/api.langpz.com/1_api.langpz.com_bundle.crt; # 私鑰文件 ssl_certificate_key /etc/nginx/api.langpz.com/2_api.langpz.com.key; # 設(shè)置長連接 keepalive_timeout 70; # 優(yōu)先采取服務(wù)器算法 ssl_prefer_server_ciphers on; # 使用DH文件 ssl_dhparam /etc/nginx/api.langpz.com/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 定義算法 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; # HSTS策略 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always; # 防XSS攻擊 add_header X-Xss-Protection 1; # 禁止服務(wù)器自動解析資源類型 add_header X-Content-Type-Options nosniff; location / { proxy_pass http://novel-api; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_redirect off; } }
ctrl + c 輸入:wq 退出并保存。再執(zhí)行nginx -s reload。
現(xiàn)在就可以訪問https://api.langpz.com。如果訪問http協(xié)議就會強制跳轉(zhuǎn)到https協(xié)議。
[](https://www.ssllabs.com/sslte...
輸入你的域名。
之前在nginx配置加強 HTTPS 安全性,所以結(jié)果是A+。
這種部署比較麻煩,部署完發(fā)現(xiàn)pm2也有部署功能,2.0用koa.js重構(gòu)的時候用pm2部署,docker 生成鏡像
。
https://github.com/lanpangzhi
http://blog.langpz.com
參考https://nginx.org/en/docs/
https://github.com/creationix/nvm
https://www.thinkjs.org/zh-cn/doc/3.0/deploy.html
https://www.cnblogs.com/chyingp/p/pm2-documentation.html
http://www.runoob.com/git/git-install-setup.html
https://nginx.rails365.net/chapters/install.html
https://www.cnblogs.com/nuccch/p/7681592.html
https://aotu.io/notes/2016/08/16/nginx-https/index.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103846.html
摘要:暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個小說閱讀器鏈接,里面的小說接口調(diào)用的是追書神器,然后我把里面的和收費章節(jié)做了處理加了個換源功能,里面需要收費或者的小說都可以免費看,此項目不做商用僅供學習無需登錄無廣告。 暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個vue小說閱讀器鏈接 http://wx.wj007.top/book,里面的小說接口調(diào)用的是追書神器,然后我把里面的vip...
摘要:暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個小說閱讀器鏈接,里面的小說接口調(diào)用的是追書神器項目源碼我已經(jīng)上傳到,想看源碼搜索以下鏈接覺得可以的話點個共同進步技術(shù)棧由于目前是實習生缺少一些經(jīng)驗代碼分格可能適合一些初學者所以此項目很適合 暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個vue小說閱讀器鏈接 http://www.wj007.top/book/ind...,里面的小說接口調(diào)用...
摘要:暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個小說閱讀器鏈接,里面的小說接口調(diào)用的是追書神器項目源碼我已經(jīng)上傳到,想看源碼搜索以下鏈接覺得可以的話點個共同進步技術(shù)棧由于目前是實習生缺少一些經(jīng)驗代碼分格可能適合一些初學者所以此項目很適合 暑假實習了幾個月辭職后,閑著無聊自己開發(fā)的一個vue小說閱讀器鏈接 http://wx.wj007.top/book/inde...,里面的小說接口調(diào)用...
閱讀 781·2021-11-09 09:47
閱讀 1568·2019-08-30 15:44
閱讀 1143·2019-08-26 13:46
閱讀 2107·2019-08-26 13:41
閱讀 1266·2019-08-26 13:32
閱讀 3772·2019-08-26 10:35
閱讀 3519·2019-08-23 17:16
閱讀 448·2019-08-23 17:07