騰訊雲下安裝 nodejs + 實現 Nginx 反向代理

本文將介紹如何給騰訊雲上的 Ubuntu Server 12.04 LTS 64位主機安裝 node 及 nginx,並簡單配置反向代理。html

筆者在整個安裝過程當中遇到很多麻煩(不贅述),若是你但願少踩坑,能夠按本文的步驟進行安裝部署。前端

一. 新版 nodejs 安裝node

這裏強烈推薦使用 nvm (Node版本管理器),其它方式的安裝或多或少都有些問題。nginx

具體步驟以下:c++

1. 經過 git 指令下載nvmgit

執行指令以下,咱們把nvm下載到 /root/git/ 中去(記得要先安裝 git)github

[root@VM-22-180-ubuntu~]#pwd
/root
[root@VM-22-180-ubuntu~]#mkdir git
[root@VM-22-180-ubuntu~]#cd git
[root@VM-22-180-ubuntu~]#git clone https://github.com/creationix/nvm.git

2. 配置環境變量npm

這裏是要修改 .bashrc 文件,若是不清楚其位置,能夠回到根目錄執行ubuntu

#find . -name "*.bashrc" -print

來搜索和獲取結果:vim

而後經過 vim 修改 ./etc/skel/.bashrc 文件,在文件開頭加入下面兩行:

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
source /git/nvm/nvm.sh

其中第一行是修改nvm鏡像路徑到阿里,第二行纔是把 nvm 添加到系統環境中去。

保存後執行指令讓配置生效(或者重啓服務器)

#source .bashrc 

3. 直接用nvm安裝nodejs

執行指令

#nvm install node

即可安裝新版本的nodejs,安裝成功後,最新版的node就裝在服務器上了:

二. 安裝 nginx

這裏和node同樣不推薦使用 apt-get/aptitude 形式安裝,建議走源碼編譯安裝。

1. 依賴安裝和下載

確保安裝了 gcc-c++  和 libpcre3-dev:

#aptitude install gcc-c++  libpcre3-dev

而後咱定位到 /home/ubuntu 去下載一些依賴包,並解壓縮到該文件夾下:

#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
#wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz
#wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz

#tar -xzvf pcre-8.38.tar.gz
#tar -xzvf zlib-1.2.8.tar.gz
#tar -xzvf openssl-1.1.0c.tar.gz

這裏我們下載的是 nginx 模塊所依賴的 pcre/zlib/openssl,壓縮包的下載地址都是在它們對應官網中找到的。

須要留意的點是,pcre 不要下載使用 pcre2 的,不然會致使 nginx 編譯過程報錯:

推薦使用上方代碼段提供的 pcre-8.38 版本。

留意下,若是在終端下載的速度太慢了,推薦用迅雷下載在本地後,再經過 FileZilla 把文件同步到雲主機上去,百試不爽~

2. 下載和解壓 nginx 

先到nginx官網找最新的源碼包下載路徑(截止本文時間,穩定版是 http://nginx.org/download/nginx-1.10.2.tar.gz),而後下載下來(我我的是下載到 /root 路徑下)

[root@VM-22-180-ubuntu~]#cd
[root@VM-22-180-ubuntu~]#pwd
/root
[root@VM-22-180-ubuntu~]#wget http://nginx.org/download/nginx-1.10.2.tar.gz

而後解壓此壓縮包,並進入到文件夾 /nginx-1.10.2 去:

[root@VM-22-180-ubuntu~]#tar -xzvf nginx-1.10.2.tar.gz
[root@VM-22-180-ubuntu~]#cd nginx-1.10.2

3. 編譯和安裝

按順序執行以下三條指令:

#./configure --prefix=/home/ubuntu/nginx --with-pcre=/home/ubuntu/pcre-8.38 --with-zlib=/home/ubuntu/zlib-1.2.8 --with-openssl=/home/ubuntu/openssl-1.1.0c --with-http_ssl_module

#make

#make install

它們的做用分別是:生成C源碼文件和Makefile文件、生成二進制文件、將nginx安裝到指定目錄(/home/ubuntu/nginx)

注意 ./configure 指令後的參數分別指定了 nginx 的安裝目錄及相關依賴模塊地址。

自此,nginx 就安裝完畢啦~

三. 啓動 nginx

執行 

#/home/ubuntu/nginx/sbin/nginx

可直接啓動 nginx 服務,這時候在任意地方執行:

wget http://127.0.0.1

均可如下載到一份 index.html:

這時候咱們直接訪問雲主機公網 ip 地址,就能直接看到該默認頁面:

注意!若是這時沒法經過公網ip訪問頁面,請確保雲主機所處的安全組是容許全部端口訪問的。

四. 執行一個node服務,並經過 nginx 配置實現反向代理

這裏咱們簡單實現一個 node 頁面,監聽3000端口。

咱們在本地先寫一個 index.js 文件來耍一耍:

const http = require('http');

const server = http.createServer((req, res) => {
    res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});

server.listen(3000, () => {
    console.log(`node server is now running/`);
});

執行 node index 的話,訪問 http://localhost:3000/ 會有「Hello World」的輸出:

而後我們把這個文件放到雲主機去。

鑑於我已經掛到 github上,讀者們能夠直接經過以下指令來下載該文件:

#git clone https://github.com/VaJoy/node-test.git

p.s. 我我的下載到了「/root/node-project/」文件夾下,要執行node的話指令爲:

#node /root/node-project/node-test/cp1/index

OK,我們接着先修改 nginx 配置。若是你忘了 nginx 的配置在哪裏,能夠執行這條指令來肯定:

#/home/ubuntu/nginx/sbin/nginx -t

本文的nginx是安裝在 /home/ubuntu 下的,因此其配置文件路徑是「/home/ubuntu/nginx/conf/nginx.conf」,咱們這樣編輯它(加上紅框部分的代碼)

這意味着當有請求路徑爲「/hello」時,nginx 會將請求代理到服務器的3000端口去(即node監聽的端口)

五. 重啓 nginx 和 node

到這一步的時候別忘了兩點 —— 1. 我們修改 nginx 配置後還沒重啓nginx服務;2. 我們尚未在雲主機上跑node服務(上文僅僅是在本地電腦上跑了一次)

因此咱們分別執行以下指令(重啓nginx+跑node)

#/home/ubuntu/nginx/sbin/nginx -s reload

#node /root/node-project/node-test/cp1/index

這時候直接訪問 http://公網ip/hello,就能直接看到node跑起來的頁面內容了:

本文送給使用騰訊雲的前端童鞋,若操做過程遇到問題歡迎留言諮詢。共勉~

相關文章
相關標籤/搜索