环境搭建
zKing 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 MongoDB
和 Robomongo
作为 mongodb 的远程控制软件