1.前言
昨天看到网易云音乐node.js版API,但是因为对node.js的认识只在一些语句上面,苦于不知咋用.结果发现原来就直接node app.js
就能在本地服务器localhost
中运行.于是就想把他挂到我的vps上面.弄了一下午弄好了.把这次的踩坑经验发上来
我的vps是centos 6版本的
具体步骤:
1. node.js npm 环境配置
2. git配置(我的vps在做gitpage的时候已经配置了,所以就不写了)
3. pm2
4. Nginx
复制代码
2. 配置过程
1. node.js配置
由于linux上安装文件是真的有很多方式,没具体学过linux的我真的晕晕了,由于我对node的版本没有要求,就直接安装了具体版本号.
推荐以下操作在 /opt 目录下进行
下载压缩包
wget http://developer.jpanj.com/node-v10.15.3-linux-x64.tar.xz
复制代码
解压为 tar 包
xz -d node-v10.15.3-linux-x64.tar.xz
复制代码
如果xz命令不存在的话,可以查看博客或者根据一下步骤一步步敲
wget http://tukaani.org/xz/xz-5.2.2.tar.gz`
复制代码
`tar -zxf xz-5.2.2.tar.gz`
复制代码
./configure
make && make install
复制代码
解压
tar -xvf node-v10.15.3-linux-x64.tar
复制代码
当前目录下软链一个 node
目录出来
这样做的好处是,未来升级版本非常方便,只需要更新这个软链就行
ln -s ./node-v10.15.3-linux-x64 ./node
复制代码
通过软链接,将可执行程序放入系统环境变量的路径中
- 查看当前系统中都有哪些环境变量路径
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
复制代码
可以看到我的列表中有:
/usr/local/bin
/usr/bin
大家约定成俗逻辑是:
/usr/bin
下面的都是系统预装的可执行程序,会随着系统升级而改变。/usr/local/bin
目录是给用户放置自己的可执行程序的地方
所以我推荐将软链放在 /usr/local/bin
目录下:
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm
复制代码
但是在这一步我遇到了-bash: cd: src: Too many levels of symbolic links
的问题,后续解决方案是我cd ~
之后 ln -s /opt/node/bin/node /usr/local/bin/node
来完成的。
如果遇到file exists
的问题,就到你软链到的那个地址的命令文件删掉
检查是否安装成功
[root@dc8 ~]# node -v
v10.15.3
[root@dc8 ~]# npm -v
6.4.1
复制代码
2. pm2
pm2的作用是能够将你的node后台项目持久得挂载在后台并且能够自动地帮你负载均衡之类的,适合我这种傻瓜嘻嘻
安装pm2
npm i -g pm2
通过软链接,将可执行程序放入系统环境变量的路径中
因为不像windows,npm下载之后不能够直接在全局环境之中使用
所以也要像之前一样
ln -s /opt/node/bin/pm2 /usr/local/bin/pm2
复制代码
接下来就能将node项目一直挂载在后台了
使用
pm2 start app.js //启动pm2项目
pm2 stop all //停止所有项目
PORT=4000 pm2 start app.js //使用的这个网易云后台程序,在项目目录下启动,更多命令内容建议看参考
复制代码
3. Nginx
1.第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo:
cd /etc/yum.repos.d/
复制代码
vim nginx.repo
复制代码
填写如下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
复制代码
保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。
下面直接执行如下指令即可自动安装好Nginx:
yum install nginx -y
复制代码
安装完成,下面直接就可以启动Nginx了:
/etc/init.d/nginx start
复制代码
现在Nginx已经启动了,直接访问服务器就能看到Nginx欢迎页面了的。
如果还无法访问,则需配置一下Linux防火墙。
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
复制代码
这里注意 之后Nginx要监听哪个端口就必须开放哪个端口,我在这里踩了一下坑 现在我们释放的是默认的80端口
service iptables save
复制代码
service iptables restart
复制代码
Nginx的命令以及配置文件位置:
/etc/init.d/nginx start # 启动Nginx服务
/etc/init.d/nginx stop # 停止Nginx服务
/etc/nginx/nginx.reload # 重启Nginx服务
/etc/nginx/nginx.conf # Nginx配置文件位置
chkconfig nginx on #设为开机启动
复制代码
至此,Nginx已经全部配置安装完成。
2.一台主机上适应多个服务器
在你的nginx通过代理的方式转发请求:配置如下 vi /etc/nginx/nginx.conf 在http加入下面的内容,参考:wiki.nginx.org/FullExample
http {
....
server {
listen 80;
server_name www.a.com;
charset utf-8;
access_log /home/a.com.access.log main;
location / {
proxy_pass http://127.0.0.1:80;
}
}
server {
listen 80;
server_name www.b.com;
charset utf-8;
access_log /home/b.com.access.log main;
location / {
proxy_pass http://127.0.0.1:81;
}
}
...
复制代码
# 我使用的是这里的资料
server {
listen 80;
server_name www.xxxx.cn; #要访问的域名,我这里用的测试域名,如果有多个,用逗号分开,如果想直接用ip访问,则删除这一行
charset utf8;
location / {
proxy_pass http://127.0.0.1:8080; #映射到代理服务器,可以是ip加端口, 或url
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 我的node项目是在3000端口运行的,之后 在外网浏览器中访问`你的ip地址:3000即可`
server {
listen 3000;
charset utf8;
location / {
proxy_pass http://127.0.0.1:3000; #映射到代理服务器,可以是ip加端口, 或url ,4000端口的话就在外网访问4000端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
复制代码
到这里,一个简单的能在外网访问的node项目就完成了,希望会对大家有用