使用 XShell 或者其它 SSH 工具即可远程连接云服务器,进一步安装你所需要的软件和应用程序。在 Git Bash 中,可以使用 ssh 命令进行连接
ssh root@xxx.xx.xxx.xxx
# 输入密码,连接成功
一、基础软件安装
1、nginx 安装
yum info nginx
yum install nginx
# linux上面可以直接使用yum命令
# 默认安装在 /etc/nginx目录
# nginx.conf 是默认配置文件
nginx常用命令有:
# 检测修改后配置文件是否有语法错误
nginx -t
#启动 nginx 服务
nginx -c /etc/nginx/nginx.conf
# 停止 nginx 服务
nginx -s stop
# 重启 nginx 服务
nginx -s reload
2、node 安装
如何安装各个版本和设置环境变量可以参考这个
www.runoob.com/nodejs/node…
# 下载nodejs v12
wget https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.xz
# 解压
tar xf node-v12.14.1-linux-x64.tar.xz
# 重命名文件夹
mv node-v12.14.1-linux-x64 node12
# 解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:
# 注意换成自己的文件地址,pwd查看一下地址
sudo ln -s /home/lighthouse/node12/bin/npm /usr/local/bin/
sudo ln -s /home/lighthouse/node12/bin/npm /usr/local/bin/
# 测试node安装是否成功
node -v
npm -v
# npm设置镜像
npm config set registry https://registry.npmmirror.com/
二、利用ssh传输文件
在linux下一般用scp这个命令来通过ssh传输文件。
用ssh连接:
1、从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)
2、上传本地文件到服务器
scp /path/filename username@servername:/path
例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中
3、从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
例如:scp -r root@192.168.0.101:/var/www/test /var/www/
4、上传目录到服务器
scp -r local_dir username@servername:remote_dir
例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录
传输的代码如下,或者直接在服务器直接创建一个server.js
代码主要功能是返回一个mock的json数据,5秒钟后宕机报错
const express = require('express')
const Mock = require('mockjs')
const app = express()
app.get("/api/users", (req, res) => {
const userList = Mock.mock({
'userList|10': [{
'id|+1': 1,
'name': '@cname',
'email': '@email'
}]
})
setTimeout(()=> {
throw new Error('服务器故障')
}, 5000)
res.status(200)
res.json(userList)
})
app.listen(3000, () => {
console.log("服务启动: 3000")
})
三、使用 PM2 管理应用
在开发阶段,我们可以使用 nodemon 来做实时监听和自动重启,提高开发效率。在生产环境,就需要祭出大杀器—PM2 了。
首先全局安装 pm2:
# npm i -g pm2
# 创建软连接,不然全局找不到
sudo ln -s ln -s /home/lighthouse/node12/lib/node_modules/pm2/bin/pm2 /usr/local/bin
执行 pm2 -v 命令查看是否安装成功:
[root@ecs-221238 ~]# pm2 -v5.2.0
切换到项目目录,先把依赖装上:
npm i express mockjs -s
然后使用 pm2 命令来启动应用:
pm2 start server.js -i max // 或者pm2 start server.js -i 2
PM2 管理应用有 fork 和 cluster 两种模式。在启动应用时,通过使用 -i 参数指定创建实例的个数,会自动开启 cluster 模式。此时就具备了负载均衡的能力。
-i :instance,实例的个数。可以写具体的数字,也可以配置成 max,
PM2会自动检查可用的 CPU 的数量,然后尽可能多地启动进程。
PM2 常用命令小结
# Fork模式
pm2 start app.js --name app # 设定应用的名字为 app
# Cluster模式
# 使用负载均衡启动4个进程
pm2 start app.js -i 4
# 将使用负载均衡启动4个进程,具体取决于可用的 CPU
pm2 start app.js -i 0
# 等同于上面命令的作用
pm2 start app.js -i max
# 给 app 扩展额外的3个进程
pm2 scale app +3
# 将 app 扩展或者收缩到2个进程
pm2 scale app 2
# 查看应用状态
# 展示所有进程的状态
pm2 list
# 用原始 JSON 格式打印所有进程列表
pm2 jlist
# 用美化的 JSON 打印所有进程列表
pm2 prettylist
# 展示特定进程的所有信息
pm2 describe 0
# 使用仪表盘监控所有进程
pm2 monit
# 日志管理
# 实时展示所有应用的日志
pm2 logs
# 实时展示 app 应用的日志
pm2 logs app
# 使用json格式实时展示日志,不输出旧日志,只输出新产生的日志
pm2 logs --json
# 应用管理
# 停止所有进程
pm2 stop all
# 重启所有进程
pm2 restart all
# 停止指定id的进程
pm2 stop 0
# 重启指定id的进程
pm2 restart 0
# 删除id为0进程
pm2 delete 0
# 删除所有的进程
pm2 delete all
记得开通防火墙3000!
此时通过公网ip:3000/api/users打开就成功了~
四、Nginx 代理转发接口
上面我们直接将 nodejs 项目的 3000 端口暴露了出去。一般我们都会使用 nginx 做一个代理转发,只对外暴露 80 端口。 使用 yum 安装:
添加CentOS 7 Nginx yum资源库,不然找不到nginx
# sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum install -y nginx
然后启动 nginx:
# sudo systemctl start nginx
设置开机启动 nginx:
# sudo systemctl enable nginx.service
此时打开公网能看到自己nginx页面了~
配置接口转发
为项目新建一个配置文件:
# vim /etc/nginx/conf.d/express.conf
监听 80 端口,将所有请求转发给服务器本地的 3000 端口的程序处理:
server {
listen 80;
server_name 47.xx.xx.xx; //自己的公网ip
location / {
proxy_pass http://localhost:3000;
}
}
修改完配置文件,一定要重启服务:
# sudo systemctl restart nginx
或者 重启 nginx 服务
sudo nginx -t
sudo nginx -s reload
此时去掉3000端口访问: