一. 新版 nodejs 安裝
這裡強烈建議使用 nvm (node版本管理員),它方式的安裝或多或少都有些問題。
具體步驟如下:
1. 透過git 指令下載nvm
執行指令如下,我們把nvm下載到/root/git/ 中去(記得要先安裝git):
[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. 配置環境變數
這裡是要修改.bashrc 文件,如果不清楚其位置,可以回到根目錄執行
#find . -name "*.bashrc" -print
來搜尋並取得結果:
然後透過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
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.36.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.36.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.36 版本。
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.36 --with-zlib=/home/ubuntu/zlib-1.2.8 --with-openssl=/home/ubuntu/openssl-1.1.0c #make #make install它們的作用分別是:產生c源碼檔案和makefile檔案、產生二進位檔案、將nginx安裝到指定目錄(/home/ubuntu/nginx)。 注意 ./configure 指令後的參數分別指定了 nginx 的安裝目錄及相關依賴模組位址。
三. 啟動nginx
執行#/home/ubuntu/nginx/sbin/nginx可直接啟動nginx 服務,這時候在任何地方執行:
wget http://127.0.0.1都可以下載到一份index.html:
這時候我們直接存取雲端主機公網ip 位址,就能直接看到該預設頁面:
注意! 如果這時無法透過公網ip存取頁面,請確保雲端主機所處的安全群組是允許所有連接埠存取的。
四. 執行一個node服務,並透過 nginx 設定實現反向代理
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 」的輸出:
然後咱們把這個檔案放到雲端主機去。
#git clone https://github.com/vajoy/node-test.gitp.s. 我個人下載到了「/root/node-project/」資料夾下,要執行node的話指令為:
#node /root/node-project/node-test/cp1/indexok,咱們接著先修改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跑起来的页面内容了:
以上是ubuntu下安裝nodejs並實作Nginx反向代理伺服器的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!