使用pm2+nginx部署koa2(https)

這段時間空余的時候一直在重新寫自己的博客饲趋,之前是采用的 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)站跷究。下面我來說一下具體的操作。

  1. 服務(wù)端安裝軟件
    在服務(wù)端需要安裝的有 git 敲霍、node 揭朝、pm2 、nginx 等色冀。
    安裝完這些之后需要在服務(wù)端生成 ssh key 潭袱,然后將生成的 pub key 添加到相應(yīng)的 git 倉庫里的 setting 里的 Deploy Keys 里。

  2. 本地安裝軟件
    本地需要安裝的有 git 锋恬、node 屯换、pm2 等。

  3. 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 配置

  1. 配置 http
    在服務(wù)端安裝完nginx之后暑椰,打開 /etc/nginx/sites-enabled 目錄(默認(rèn)的配置文件目錄)(劃掉劃掉霍转,經(jīng)朋友指正,nginx的配置應(yīng)該放置在/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)站醉箕。

  1. 配置 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_certificatessl_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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罚拟,一起剝皮案震驚了整個濱河市台诗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赐俗,老刑警劉巖拉队,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阻逮,居然都是意外死亡粱快,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來事哭,“玉大人漫雷,你說我怎么就攤上這事△⒃郏” “怎么了降盹?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谤辜。 經(jīng)常有香客問我蓄坏,道長,這世上最難降的妖魔是什么丑念? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任涡戳,我火速辦了婚禮,結(jié)果婚禮上脯倚,老公的妹妹穿的比我還像新娘妹蔽。我一直安慰自己,他們只是感情好挠将,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布胳岂。 她就那樣靜靜地躺著,像睡著了一般舔稀。 火紅的嫁衣襯著肌膚如雪乳丰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天内贮,我揣著相機(jī)與錄音产园,去河邊找鬼。 笑死夜郁,一個胖子當(dāng)著我的面吹牛什燕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竞端,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼屎即,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了事富?” 一聲冷哼從身側(cè)響起技俐,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎统台,沒想到半個月后雕擂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡贱勃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年井赌,在試婚紗的時候發(fā)現(xiàn)自己被綠了谤逼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡仇穗,死狀恐怖森缠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仪缸,我是刑警寧澤贵涵,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站恰画,受9級特大地震影響宾茂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拴还,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一跨晴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧片林,春花似錦端盆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弓摘,卻和暖如春焚鹊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背韧献。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工末患, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锤窑。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓璧针,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渊啰。 傳聞我的和親對象是個殘疾皇子探橱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)虽抄,斷路器走搁,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • <<編程基礎(chǔ)-語言JavaScript.Nodejs.Mobile>>https://github.com/ope...
    燕京博士閱讀 938評論 0 2
  • 從零開始部署小程序服務(wù)器(騰訊云) 話說目前云已經(jīng)很便宜了,騰訊有一個月的試用期迈窟,不過阿里云也有,而且對于學(xué)生認(rèn)證...
    Lefe閱讀 7,655評論 6 37
  • 低頭抬眼間 翻看的都是有你的照片 像畫忌栅,更像詩 悠閑斜靠小藤椅的 是你溫婉優(yōu)雅的身影 輕盈如蝶舞翩翩的 是你柔和歡...
    玫瑰圣典CC閱讀 205評論 0 0
  • 2016.09.23今天打開st后车酣,彈窗顯示package control無法使用曲稼,console顯示 打開pre...
    霽純閱讀 203評論 0 1