Node.js + MongoDB + Nginx 線上部署

Linux 版本爲 centos7html

安裝 node.js

首先直接使用 yum 安裝node

$	yum -y install nodejs
複製代碼

可是此時並非最新的版本, 應該是6.xxx,可使用 node -v 查看;nginx

升級到最新版本

首先安裝 n(nodejs 管理工具)c++

$ npm install -g n
複製代碼

安裝完成後安裝 node.js 最新版本mongodb

$ n latest
複製代碼

而後使用npm

$ n
複製代碼

選擇最新版本。vim

接着全局改變 nodejs 版本centos

$ vim ~/.bash_profile
複製代碼

並在其中輸入安全

export N_PREFIX=/usr/local #node實際安裝位置
export PATH=$N_PREFIX/bin:$PATH
複製代碼

保存並退出,在用下面命令刷新bash

$ source ~/.bash_profile
複製代碼

這邊就升級成功了,再檢查下版本吧。

安裝 MongoDB

首先編寫 yum 庫文件

$  sudo vi /etc/yum.repos.d/mongodb-org.repo
複製代碼

將下面文本寫入

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
複製代碼

保存並退出;
檢查可用庫:

$  yum repolist
複製代碼

若是看到

. . .
repo id                          repo name
mongodb-org-3.2/7/x86_64         MongoDB Repository
. . .
複製代碼

就能夠進行安裝操做

$  sudo yum install mongodb-org
複製代碼

安裝結束後,啓動它

$  sudo systemctl start mongod
複製代碼

安裝 Nginx

前期準備

$  yum install gcc-c++
$  yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
複製代碼

安裝結束後,執行安裝 Nginx 的命令:

$  yum install nginx -y
複製代碼

反向代理配置

進入 nginx 文件夾

$  cd /etc/nginx
複製代碼

打開配置文件:

$  vim nginx.conf
複製代碼

忽略其餘,咱們看 server, 刪除多餘的,將 server 改形成下面這樣:

server {
        listen       80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

複製代碼

而後咱們新增本身的代理配置,相似於下面:

server {
        listen 80;
        server_name xxx.com www.xxx.top;
        location / {
                proxy_pass http://127.0.0.1:8080;
                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;
        }
    }

複製代碼

解釋下:

  • server_nme 是域名,這邊能夠配置一級或者二級域名;
  • proxy_pass 是ip,一般直接以 127.0.0.1 代替,固然你也能夠寫你雲服務器的公網ip;

其餘的照着寫就👌, 上面文本達成的效果是,使用 server_name 代替直接訪問 ip.
Ps. server_name 只能填寫域名解析後的域名,而且須要在雲服務器安全組中添加 80 端口的支持規則。

SSL 配置

首先要申請證書,而且下載到本地。
一般它們會是這樣命名:

// xxx 是域名
cert-1541562634350_xxx.crt
cert-1541562634350_xxx.key
複製代碼

下載完後,使用 FTP 等同類工具上傳到雲服務器上,在 /etc/nginx 文件夾下建立 cert,將這這兩個文件移到這個文件夾下;

接着編寫 nginx.conf

server {
        listen       443 ssl;
        server_name  *.xxx.com;
        root         /usr/share/nginx/html;

        ssl_certificate /etc/nginx/cert/cert-1541562634350_www.funnyfm.top.crt;
        ssl_certificate_key /etc/nginx/cert/cert-1541562634350_www.funnyfm.top.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $http_host;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
複製代碼

幾個注意點:

  • SSL 監聽的是 443 端口,須要在安全規則中添加;
  • 每個 SSL server 須要對應一個 http 80 的server

編寫結束後,須要重啓 Nginx

$  nginx -s reload
複製代碼

好了,如今可使用 xxx.com 來代替直接訪問 ip 了。

相關文章
相關標籤/搜索