1、安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 或者 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
安装完,关闭重新启动一下Xshell。
2、用nvm安装node
// 查看当前可安装node版本 nvm ls-remote // 选择'nodejs.org'官网LTS稳定版本 nvm install v10.16.0 // 出现这样的显示表示安装好了,默认的是v10.16.0的node版本,6.9.0的npm版本 Now using node v10.16.0 (npm v6.9.0) Creating default alias: default -> v10.16.0 // 可以使用命令查看版本 node --version // nvm可以安装多个node版本 nvm install v10.11.0 // 可以使用命令查看安装了多少个node版本 nvm ls // 可以使用命令指定默认的node版本,如果安装了多个node版本,一定要指定一个默认的版本 nvm alias default v10.11.0 // 如果你不想使用默认,只是零时用一下,可以使用命令 nvm use v10.11.0
3、安装nginx
// 查看服务器系统版本 $ cat /etc/redhat-release // 安装epel-release 源 yum install epel-release -y // 打开源配置 vim /etc/yum.repos.d/nginx.repo // 在配置中设置nginx安装源,具体可以参考nginx官网文档('http://nginx.org/en/linux_packages.html#stable') [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 // 安装nginx yum install nginx -y // 查看nginx是否安装成功,成功的话会显示路径 whereis nginx
4、设置nginx
// 设置开机启动 systemctl enable nginx // 启动服务,重启是'systemctl restart nginx',停止是 'stop' systemctl start nginx // 重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载 systemctl reload nginx // 查看服务器状态 systemctl status nginx // 如果CentOS7 系统打开了防火墙,还需打开防火墙端口 firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --reload firewall-cmd --list-service // 如果要使用反向代理,CentOS7 需要打开网络访问权限 setsebool httpd_can_network_connect 1
5、部署测试项目
// 创建文件夹 mkdir server // 进入文件夹 cd server // 创建js文件 vim home.js // 编写测试代码,注意,这里的ip地址一定要配置成0.0.0.0,如果配置成127.0.0.1,外网会报错端口3000链接不通 const http = require('http'); const hostname = '0.0.0.0'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`服务器运行在 ${hostname}:${port}/`); }); // 启动 node home.js // 如果报错'Unhandled 'error' event',可能是端口被占用了,先查看端口占用情况 ps -ef|grep node // 如果有占用,删除占用,'xxxx'为'root'后的数字 skill -9 xxxxx
出现:服务器运行在 :3000/ 即表示node运行成功,运行成功后,登录阿里云后台配置安全组规则
配置成功如下显示:
允许 自定义 TCP 3000/3000 IPv4地址段访问 0.0.0.0/0 node后台端口
然后就可以在浏览器地址栏输入你的服务器公网ip地址加上:3000,成功出现Hello World即表示安全组配置成功
6、配置nginx
// 进入 '/etc/nginx' 文件夹,查看下 'nginx.conf' 配置文件 cd /etc/nginx ls vim nginx.conf // 低版本的nginx 'nginx.conf' 文件夹里有以下内容 // # include /etc/nginx/conf.d/*.conf; // # include /etc/nginx/sites-enabled/*; // 去掉 '#' 号 // 创建nginx配置文件,文件名随意,我一般喜欢用项目名加端口号,比如 'wxServer-3000' vim /etc/nginx/conf.d/wxServer-3000.conf // 编写配置文件代码 # 项目名字 upstream wxServer { # 需要代理的node端口号,也就是你写的端口号 server 0.0.0.0:3000; # nginx最大连接数 keepalive 8; } # nginx服务器实例 server { # 代理出去的端口号,默认Http协议的80端口,如果配置其它端口需要更改 SELinux 的设置 listen 0.0.0.0:80; # 别人访问的域名或者ip地址,多个用空格隔开 server_name lzf.fun ; # 错误日志存放地址 access_log /var/log/nginx/wxServer-3000.log; location / { 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_pass 设置反向代理用服务器域名,不使用反向代理,直接用上面upstream的名字就可以了 proxy_pass ; proxy_redirect off; } } // 保存配置文件后,检查是否编写错误 nginx -t // 出现以下内容为正确 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful // 重新加载nginx服务器 systemctl reload nginx // 在阿里云后台开启80端口的安全组,然后在浏览器输入域名,可以看到 'Hello World' 就表示nginx配置成功了
7、配置PM2