這段時間空余的時候一直在重新寫自己的博客饲趋,之前是采用的 hexo 生成的博客然后跑在 git page 上的。這次重寫是選擇的 koa2 這個框架歹垫。
今天先來寫一下關(guān)于 koa2 網(wǎng)站運行部署以及 https 配置地淀。
目前網(wǎng)站的大致結(jié)構(gòu)是: koa2 的應(yīng)用跑在 1113
端口帆谍,然后 nginx 反向代理到 443
(https) 端口, 同時 nginx 將 80
(http) 端口轉(zhuǎn)發(fā)到 443
(https) 端口行您。
pm2 配置
pm2 是開源的基于Nodejs的進(jìn)程管理器铭乾,包括守護(hù)進(jìn)程,監(jiān)控娃循,日志的一整套完整的功能炕檩,基本是Nodejs應(yīng)用程序不二的守護(hù)進(jìn)程選擇,事實上它并不僅僅可以啟動Nodejs的程序捌斧,只要是一般的腳本的程序它同樣可以勝任笛质。
pm2 是一個帶有負(fù)載均衡功能的 Node 應(yīng)用的進(jìn)程管理器泉沾。使用 pm2 可以保持我們的node應(yīng)用進(jìn)程永遠(yuǎn)運行在后臺。此外 pm2 還有個非常強大的deploy功能妇押,可以從本地直接部署線上網(wǎng)站跷究。下面我來說一下具體的操作。
服務(wù)端安裝軟件
在服務(wù)端需要安裝的有 git 敲霍、node 揭朝、pm2 、nginx 等色冀。
安裝完這些之后需要在服務(wù)端生成 ssh key 潭袱,然后將生成的 pub key 添加到相應(yīng)的 git 倉庫里的 setting 里的 Deploy Keys 里。本地安裝軟件
本地需要安裝的有 git 锋恬、node 屯换、pm2 等。pm2 deploy 配置
使用pm2 ecosystem
生成配置示例文件与学,然后打開配置生成的配置文件彤悔,下面是生成的示例配置文件。
module.exports = {
/**
* Application configuration section
* http://pm2.keymetrics.io/docs/usage/application-declaration/
*/
apps: [
// First application
{
name: 'API',
script: 'app.js',
env: {
COMMON_VARIABLE: 'true'
},
env_production: {
NODE_ENV: 'production'
}
},
// Second application
{
name: 'WEB',
script: 'web.js'
}
],
/**
* Deployment section
* http://pm2.keymetrics.io/docs/usage/deployment/
*/
deploy: {
production: {
user: 'node',
host: '212.83.163.1',
ref: 'origin/master',
repo: 'git@github.com:repo.git',
path: '/var/www/production',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production'
},
dev: {
user: 'node',
host: '212.83.163.1',
ref: 'origin/master',
repo: 'git@github.com:repo.git',
path: '/var/www/development',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env dev',
env: {
NODE_ENV: 'dev'
}
}
}
};
在 apps 里可以配置多個應(yīng)用索守,然后deploy是配置不同的環(huán)境所用的配置晕窑,有了示例而配置之后,你可以根據(jù)自己的真實情況進(jìn)行相應(yīng)的修改卵佛。
有了配置文件之后執(zhí)行 pm2 deploy ecosystem.config.js production setup
命令進(jìn)行初始化設(shè)置杨赤,運行完成之后,再運行 pm2 deploy ecosystem.config.js production
這個命令截汪,以后更新部署應(yīng)用都可以通過這個命令疾牲。(為了方便可以將這兩條命令配置到 package.json 里的 scripts 里)。
命令運行完之后衙解,如果沒出意外阳柔,出現(xiàn) Success 字樣就表示部署成功。這時候在瀏覽器輸入相應(yīng)的服務(wù)器 ip以及你設(shè)置的端口號就可以打開你部署的網(wǎng)站蚓峦。同時在服務(wù)器上舌剂,可以通過 pm2 list
查看當(dāng)前運行的應(yīng)用。
nginx 配置
- 配置 http
在服務(wù)端安裝完nginx之后暑椰,打開(劃掉劃掉霍转,經(jīng)朋友指正,nginx的配置應(yīng)該放置在/etc/nginx/sites-enabled
目錄(默認(rèn)的配置文件目錄)/etc/nginx/sites-available
這個目錄下干茉,在此目錄下可以配置多個站點谴忧,然后選擇需要開啟的網(wǎng)站軟鏈到sites-enabled
下開啟相應(yīng)的網(wǎng)站),在該目錄下新建一個配置文件比如blog.conf
,然后就可以打開該配置文件進(jìn)行配置沾谓,將已經(jīng)運行的 node 服務(wù)反向代理到 80 端口下委造。我的配置如下:
server {
listen 80;
server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
access_log /var/www/log/blog-access.log;
error_log /var/www/log/blog-error.log;
location / {
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_pass http://127.0.0.1:1113/;
proxy_redirect off;
}
}
proxy_pass 對應(yīng)的就是 node 服務(wù)所運行的端口。文件寫好之后保存退出均驶,然后重啟 nginx 服務(wù)昏兆,service nginx restart
粘都,重服務(wù)成功(如果錯誤可以打開 nginx 的日志查看相應(yīng)的錯誤)之后就可以打開對應(yīng)的域名訪問網(wǎng)站醉箕。
- 配置 https
配置 https ,首先需要購買 https 證書秉溉,我是在阿里云上買的免費的證書腾它,打開網(wǎng)站點擊購買證書跑筝,然后選擇‘免費型DV SSL’,然后點擊 ‘立即購買’瞒滴。購買證書之后打開證書控制臺補全信息曲梗。
根據(jù)提示將兩個證書文件下載下來上傳到服務(wù)器上。然后打開剛才的blog.conf
進(jìn)行 https 配置妓忍。我的配置如下:
server {
listen 443;
server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
access_log /var/www/log/blog-access.log;
error_log /var/www/log/blog-error.log;
ssl on;
ssl_certificate /etc/nginx/cert/214259593710649.pem;
ssl_certificate_key /etc/nginx/cert/214259593710649.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
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_pass http://127.0.0.1:1113/;
proxy_redirect off;
}
}
ssl_certificate
與 ssl_certificate_key
就是剛剛上傳的文件的位置虏两。配置完成之后保存配置文件,退出重啟 nginx 服務(wù)世剖。然后打開 https://xxx.com 就可以訪問到網(wǎng)站定罢。
配置完 https 之后還需要將 80 端口對應(yīng)的 http 服務(wù)轉(zhuǎn)到 https 下,增加配置如下:
server {
listen 80;
server_name www.zhaofinger.com;
rewrite ^/(.*) https://$server_name$1 permanent; #跳轉(zhuǎn)到Https
}
到這里使用 pm2 + nginx 配置 https 服務(wù)就 ok 了旁瘫。
最后本博客的源碼托管在 github祖凫,歡迎使用,歡迎star境蜕。
文章中如有錯誤歡迎指正蝙场。
感謝您的閱讀凌停,本文由 趙的拇指 版權(quán)所有粱年。如若轉(zhuǎn)載,請注明出處: https://www.zhaofinger.com/detail/5