环境搭建


2018-10-25 服务器部署

# node 环境搭建并运行

# 准备

sudo su
apt-get update //更新系统
apt-get install vim open ssl build-essential libssl-dev wegt curl git //安装组件依赖

# 安装 nvm

  • nvm是nodeJs版本管理工具,管理nodejs版本和npm版本
  • 可以去github找到对应仓库,用 wegt 下载,这是我用的链接 wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh| bash
  • 下载安装完后要重启终端

# 以 安装 v8.9.1 的 node 为例

nvm install v8.9.1
nvm use v8.9.1
nvm alias default v8.9.1

# 安装 npm 和 pm2

//下载 npm 并使用淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
//增加系统文件监控数目
echo fs.inotify.max_user_watches=524288|sudo tee -a /etc/sysctl.conf && sudo sysctl -p
//安装 pm2 ,PM2是node进程管理工具
cnpm install -g pm2

# 运行测试

# 编写一个 app.js,设置监听 8081 端口

const http= require('http')
http.createServer(function(req,res){
  res.writeHead(200,{"Content-Type":"text/plain"})
  res.end("test connect");
}).listen(8081)
console.log('server running on http://47.106.108.94:8081')

# 修改iptables的配置文件并重载

修改配置

#加一行
-A INPUT -p tcp --dport 8081 -j ACCEPT

重载

sudo iptables-restore < /etc/iptables/iptables.up.rules

# 去阿里云控制台添加 8081 端口的安全组

# 使用 pm2 运行 app.js

pm2 start app.js
  • 因为已经安装了 pm2,所以即使断开终端也可以访问页面,通过 http://[公网地址]:8081进行访问
  • 常用 pm2 命令,以文件名为 app.js 为例
    • pm2 start app.js
    • pm2 stop app.js
    • pm2 restart app.js
    • pm2 show app

# 配置 Nginx 实现反向代理和负载均衡

# 卸载 apache 和 安装nginx

update-rc.d -f apache2 remove
sudo apt-get remove apache2
sudo apt-get install nginx

# 修改 nginx 配置文件

sudo cd /etc/nginx/
sudo vi nginx.conf

取消注释nginx.conf文件的

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server_tokens off;  # 阻止详细信息泄露

# 新建一个.conf文件进行配置,以 test-8081.conf 为例

cd /etc/nginx/conf.d
sudo vim test-8081.conf

test-8081.conf 的内容如下:

upstream test{
 server 127.0.0.1:8081;
}
server {
 listen 80;
 server_name [公网地址];
 location / {
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
 proxy_set_header Host $http_host;
 proxy_set_header X-Nginx-Proxy true;
 proxy_pass http://test;
 proxy_redirect off;
}}

# 重载 nginx 配置

sudo nginx -t //检测nginx配置文件是否成功
sudo nginx -s reload

做完上述操作之后,通过nginx的转发,现在ip地址的默认80端口已经可以直接访问8081端口的node服务,所以直接访问 ip即可,不需要加端口号。

# 通过访问二级域名来访问服务器

在看这一部分的时候,你需要已经有一个已经备案好的域名可供你进行使用

  • 首先需要在阿里云的域名解析中,添加 A记录类型,设定主机记录为 test
  • 然后修改 test-8081.conf
    • server_name test.zking.wang; //这里以我的域名为例
  • 重载 nginx 配置

现在访问 test.zking.wang 就可以了,大成功!

# 配置安装和使用MongoDB

# 下载安装最新版的Mongodb4.0.2

# 步骤

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

# 附加:卸载 mongodb 操作

sudo service mongod stop
sudo apt-get purge mongodb-org*

# 配置iptables规则

# 修改配置文件 /etc/network/if-pre-up.d/iptables

# mongodb默认启动端口为27017,因此需在iptables中进行配置
# mongodb connect
-A INPUT -s 127.0.0.1 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -d 127.0.0.1 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

# 重启 iptables

sudo iptables-restore < /etc/iptables/iptables.up.rules
sudo ufw enable

# 开始使用

sudo netstat -nltp|grep mongod  //查看端口映射检查是否启动成功
sudo service mongod start/stop/restart
mongo
show dbs //可以看到数据库了

# 设置一个管理员用户

mongo
show dbs
use admin
db.createUser({user:"root",pwd:"root",roles:["userAdminAnyDatabase"]}) //返回 Successfully added user 即成功
db.auth("root","NZMZhzk16") //db.auth() 方法返回 1 表示登录成功。

# 允许远程连接

# 需要去阿里云的安全组开放 27017 端口

# 修改 Mongodb 配置文件

vi /etc/mongod.conf

修改以下两个部分

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  #允许远程访问
security:
  authorization: enabled #设置登录验证,这一步需要,不然无法使用第三方软件去连接数据库

# 重新加载配置文件

sudo mongod -f /etc/mongod.conf

最后使用第三方软件测试连接,通过使用刚刚创建的 root 用户进行登录,测试成功。

这里推荐使用Navicat 12 for MongoDBRobomongo作为 mongodb 的远程控制软件

最近更新: 6/20/2020, 6:34:18 PM