如何在Linux服务器中部署Nodejs项目?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
什么是Linux系统
Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。
登录服务器
采用 GitBash
或者 Xshell
或者 CMD
等终端登录连接到服务器
ssh 用户名@ip地址
假如第一次使用服务器先更新下,以下程序基本采用 Yum
源的安装方式:
yum update -y
Yum 命令
// 1 安装 yum install package // 安装指定的安装包package // 2 更新和升级 yum update // 全部更新 yum update package // 更新指定程序包packageyum check-update // 检查可更新的程序 yum upgrade package // 升级指定程序包package // 3 查找和显示 yum info // 列出所有可以安装或更新的包的信息yum info package //显示安装包信息package yum list // 显示所有已经安装和可以安装的程序包 yum list package // 显示指定程序包安装情况packageyum search package // 搜索匹配特定字符的package的详细信息// 4 删除程序 yum remove | erase package // 删除程序包packageyum deplist package // 查看程序package依赖情况// 5 清除缓存 yum clean packages // 清除缓存目录下的软件包 yum clean headers // 清除缓存目录下的 headers yum clean oldheaders // 清除缓存目录下旧的 headers yum clean, yum clean all // (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
Git 安装
服务器下安装 git
;开发源码上传服务器的方式可以使用 传统的 scp
或者 ftp
方式,但这里使用 Git
流来管理,在服务器端执行 git
操作;
2.1、查看是否安装了git
rpm -qa|grep git或者 git --version或者 yum info git
若已经安装,需要先卸载。卸载命令如下:rpm -e --nodeps git 或者 rpm -e git
2.2、安装Git
yum install git
输入y,并回车
再使用 rpm -qa|grep git
来 或者 git version
查看是否已经安装好了Git。
2.3、克隆远程项目到服务器
Node 安装
服务器下安装,选择以下任意一种方法部署Node.js环境;
3.1、使用二进制文件安装
该部署过程使用的安装包是已编译好的二进制文件。解压之后,在bin文件夹中就已存在node
和npm
,无需重复编译。完成以下操作,使用二进制文件部署Node.js环境:下载Node.js安装包
wget nodejs.org/dist/v6.9.5…
解压文件
tar xvf node-v6.9.5-linux-x64.tar.xz
创建软链接,您就可以在任意目录下直接使用node
和npm
命令
ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/nodeln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm
查看 node
、npm
版本
node -vnpm -v
至此,Node.js环境已安装完毕。软件默认安装在/root/node-v6.9.5-linux-x64/
目录下
如果需要将该软件安装到其他目录(例如:/opt/node/
)下,请进行如下操作:
mkdir -p /opt/node/mv /root/node-v6.9.5-linux-x64/* /opt/node/rm -f /usr/local/bin/noderm -f /usr/local/bin/npmln -s /opt/node/bin/node /usr/local/bin/nodeln -s /opt/node/bin/npm /usr/local/bin/npm
3.2、使用 NVM 管理多版本(yum 安装)
NVM(Node Version Manager)是Node.js的版本管理软件,使您可以轻松在Node.js各个版本间进行切换。适用于长期做node开发的人员或有快速更新node版本、快速切换node版本的场景
完成以下操作,使用NVM安装多个 Node.js 版本:
使用git将源码克隆到本地的~/.nvm
目录下,并检查最新版本
yum install git
git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
激活NVM
echo ". ~/.nvm/nvm.sh" >> /etc/profilesource /etc/profile
列出Node.js的所有版本
nvm list-remote
安装多个Node.js版本
nvm install v14.0.0 -gnvm install v14.10.0 -g
运行nvm ls
查看已安装的 Node.js 版本,当前使用的版本为v7.4.0。返回结果如下所示
[root@iZXXXXZ .nvm]# nvm ls v6.9.5-> v7.4.0 systemstable -> 7.4 (-> v7.4.0) (default)unstable -> 6.9 (-> v6.9.5) (default)
运行nvm use v7.4.0
切换Node.js版本至v7.4.0
。返回结果如下所示。
[root@iZXXXXZ .nvm]# nvm use v7.4.0Now using node v7.4.0
Nginx 部署
服务器下安装;
sudo yum install -y nginx// 检测是否安装成功,验证 Nginx 配置是否正确;nginx -t启动命令 service nginx start停止命令 service nginx stop重启命令 service nginx restart# config: /etc/nginx/nginx.conf 安装目录# config: /etc/sysconfig/nginx# pidfile: /var/run/nginx.pid日志文件在var/log/nginx
Pm2 安装
工程项目内安装,cd 至项目内;
npm i pm2 -g
启动项目
pm2 start app // 实际执行文件在app 工程下的 index.js
pm2 常用命令:
// 安装sudo npm i pm2 -g --watch:监听文件变化 // 2表示启动多少实例pm2 start app.js --watch i 2 // 根据机器cpu核心数最大限度利用资源pm2 start app -i max // 查看运行的进程pm2 ls // 关闭pm2 stop apppm2 stop all// 重启pm2 restart app
我们也可以在项目中建一个 process.yml
配置文件
apps: - script : app.js intance : 2 watch : true env : NODE_ENV : production
然后执行
pm2 start process.yml
MongoDB 安装
工程项目内安装;使用 Yum 源安装;
配置系统yum源
vi /etc/yum.repos.d/mongodb-org-4.4.repo添加以下信息:
[mongodb-org-4.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.4.ascname # 名称baseurl # 获得下载的路径gpkcheck=1 # 表示对从这个源下载的rpm包进行校验;enable=1 # 表示启用这个源。gpgkey # gpg验证
最新 MongoDB
配置地址:
docs.mongodb.com/manual/tuto…
保存退出::wq退出不保存:wq!
安装MongoDB
sudo yum install -y mongodb-org
验证
rpm -qa |grep mongodbrpm -ql mongodb-org-server
运行结果分别如下图:
启动MongoDB(常用指令)
// 开启MongoDBsudo service mongod start 或者systemctl start mongod.service sudo chkconfig mongod on # 加入开机启动sudo service mongod restart # 重启MongoDB// 关闭MongoDBsudo service mongod stop # 关闭防火墙// 卸载MongoDBsudo yum erase $(rpm -qa | grep mongodb-org) # 卸载MongoDBsudo rm -r /var/log/mongodb # 删除日志文件sudo rm -r /var/lib/mongo # 删除数据文件
实现远程连接Mongodb
修改绑定 ip 默认127.0.0.1 只允许本地连接, 所以修改为 bindIp:0.0.0.0,退出保存;.1
vi /etc/mongod.conf// 编辑以下内容// network interfacesnet: port: 27017 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
重启MongoDB
sudo service mongod restart 复制代码
开放对外端口,关闭防火墙
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT
远程连接
// 启动 MongoDB 服务,后面是服务器公网 ip 地址 + 默认端口 27017mongo 10.128.218.14:27017
1.0 创建用户,设置账号,密码,权限
// admin数据库(管理使用)> use adminswitched to db admin> db.createUser({ user:"root", pwd:"123456", roles:["root"] })Successfully added user: { "user" : "root", "roles" : [ "root" ] }// 其他数据库 test (用作开发使用)> use testswitched to db test> db.createUser({ user:"admin", pwd:"123456", roles:["readWrite", "dbAdmin"] })Successfully added user: { "user" : "root", "roles" : [ "root" ] }
2.0 修改 mongodb.conf 文件,启用身份验证
vi /etc/mongod.confsecurity: authorization: "enabled" # disable or enabled
3.0 重启 MongoDB
sudo service mongod restart
4.0 用户认证
> use adminswitched to db admin> db.auth("root", "123456")1 // 授权成功 // 其他常用命令db.updateUser(user, writeConcern) # 更新用户db.dropUser('test') # 删除用户
5.0 远程连接
// 终端连接mongo 10.128.218.14:27017/database -u username -p password// mongoose方式连接(项目内的方式)mongoose.connect('mongodb://admin:123456@10.128.218.14:27017/test?options...', {useNewUrlParser: true});# 用户名:密码@域名或者服务器公网IP:端口/数据库名称?配置项
Window本地启动 MongoDB:
0 管理员身份打开 cmd ;
0 进入本地 MongoDB 安装目录 cd C:\Program Files\MongoDB\Server\4.4
0 执行 net start mongodb
其他命令
端口被占用了:检查端口占用命令. 根据报错提示, 我这里检查的是 4000
端口:
lsof -i:4000
杀掉当前进程
kill 2805
在执行
npm run dev
可以了!!!查看服务器个程序占用内存大小
du -h --max-depth=1
Linux shell 脚本
自己编写服务运行脚本,直接在服务器上运行,下面是运行指令,脚本内容这里就不展示了,可以自己补充 xshell
脚本相关知识。
sh run.sh // 启动服务脚本;sh stop.sh // 启动服务脚本;netstat -nltp // 当前服务器端口状态;
看完上述内容,你们掌握如何在Linux服务器中部署Nodejs项目的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!