Ⅰ· 需求:将Node项目部署到阿里ECS实现域名访问
Ⅱ· 步骤:
- SSH连接远程服务器
- 随手更新
yum
yum update -y
- 安装wget
yum install wget -y
- 下载、解压、查看Node版本号
wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
tar xvf /root/node-v12.16.1-linux-x64.tar.xz
./bin/node -v
配置环境变量(或使用软链接)
配置环境变量:编辑/etc/profile 末尾新增
export NODE_HOME=/usr/local/bin/node-v12.16.1 export PATH=$PATH:$NODE_HOME/bin export NODE_PATH=$NODE_HOME/lib/node_modules
软链接(示例)
ln -s /root/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node ln -s /root/node-v8.9.3-linux-x64/bin/npm /usr/local/bin/npm
- 全局安装 PM2(管理node项目)
官方文档: https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
- 安装:
npm install pm2@latest -g
- 启动:
pm2 start app.js
- 使用 Nginx
- 安装:
yum install nginx
- 版本:
nginx -v
配置:
cd /etc/nginx/nginx.conf
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 *.wangxiaohang.com; location / { proxy_pass http://*.*.*.*:3000;## 自己的服务器地址:Port 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; } }
- 启动:
service nginx start
- 重启:
service nginx reload
- MongoDB
- 官网:https://www.mongodb.com/download-center/community
- 借鉴:https://juejin.im/post/5cb6cc72518825327854752e
版本说明
- development release ---->开发版
- current release ---->当前稳定版
- previous release ---->旧版本
系统说明
- Ubuntu ----> 优般图
- Linux legacy ----> 通用版
- window ----> 不解释
- RHEL Linux ----> 红帽
- Amazon Linux ----> 亚马逊
- Debian Linux ----> Debian
- SUSE Linux ----> SUSE
用户权限说明
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限。
常用命令
- mongo:连接数据库
- show dbs:查看数据库
- use admin:切换到admin数据库
- db.creatUser():创建用户
安装流程
Ⅰ· 组织文件夹目录
- cd /usr/local/
- wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.9.tgz
- tar -zxvf mongodb-linux-x86_64-rhel70-4.0.9.tgz -C /usr/local/
- mv mongodb-linux-x86_64-rhel70-4.0.9 mongoDB
- cd mongoDB
- mkdir data
- mkdir data/db
- mkdir logs
- touch logs/mongoLogs.log
- touch mongodb.conf
vim mongodb.conf
#端口号 默认27017 port=27017 #数据目录 dbpath = /usr/local/mongoDB/data/db #日志文件 logpath = /usr/local/mongoDB/logs/mongoLogs.log #设置后台运行 fork = true #日志输出方式 logappend = true
Ⅱ· 配置本地访问
- ./mongod --config /usr/local/mongoDB/mongodb.conf
- ./mongo
-
use admin
-
db.createUser({user:"root",pwd:"123456",roles:["root"]})
修改密码
- db.changeUserPassword("usertest","changepass") //usertest用户, changepass
- db.updateUser("usertest",{pwd:"changepass1"})
- use admin
- db.auth('root','123456');
- db.shutdownServer();
Ⅲ· 修改配置内容使远程访问
#端口号 默认27017 port=27017 #绑定ip 默认127.0.0.1只允许本地连接 bind_ip = 0.0.0.0 #数据目录 dbpath = /usr/local/mongoDB/data/db #日志文件 logpath = /usr/local/mongoDB/logs/mongoLogs.log #设置后台运行 fork = true #日志输出方式 logappend = true #开启身份验证 auth = true
- ./mongod --config /usr/local/mongoDB/mongodb.conf
- ctrl C^
- ./mongo 127.0.0.1:27017/admin --username "root" --password "123456"
-
use blog
-
db.createUser({user:"blogAdmin",pwd:"123456",roles:[{role:"readWrite",db:"blog"}]})
Ⅳ· 开放对外端口,远程连接
相关报错信息解决办法:
https://jingyan.baidu.com/article/49ad8bce97bd965834d8fa8b.html
https://serverfault.com/questions/951870/why-does-firewall-cmd-throws-error-already-enabled-but-is-the-port-not-listedsystemctl status firewalld
systemctl start firewalld
打开防火墙
- firewall-cmd --zone=public --add-port=27017/tcp --permanent
- firewall-cmd --reload
- firewall-cmd --zone=public --query-port=27017/tcp
NodeJs连接数据库
- mongoose.connect('mongodb://user:password@localhost:port/databaseName')
Ⅲ · 撒花
至此,一个完整的Node项目已经可以再服务器跑起来了,本文后续会持续完善更新,如有错误及其疏漏请不吝赐教!