Centos7下nodejs-mongodb部署

本文档详细介绍了如何在Centos7环境下部署Node.js项目,并结合MongoDB进行数据库设置。首先,通过下载、解压、设置软连接的方式安装Node.js,然后解决命令找不到的问题。接着,展示如何在遇到端口占用问题时处理,确保Node.js应用正常运行。最后,介绍了MongoDB的下载、解压、配置路径以及启动过程,包括启动过程中可能遇到的警告和处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos7环境下部署nodejs网站,数据库为mongodb

一、 当前的系统环境
[root@7node ~]# uname -r
3.10.0-514.26.2.el7.x86_64
[root@7node ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
二、 nodejs项目部署

///下载
[root@c7-o12c-5 ~]# wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-x64.tar.xz
///解压
[root@c7-o12c-5 ~]# tar -xvf node-v6.11.2-linux-x64.tar.xz
///设置软连接
[root@c7-o12c-5 ~]# ln -s node-v6.11.2-linux-x64 nodejs
///切换到那个软连接的目录
[root@c7-o12c-5 ~]# cd nodejs
///可以ls查看里面有哪些文件,切换到里面的bin目录下
[root@c7-o12c-5 nodejs]# cd bin
///bin目录的可执行文件,
[root@c7-o12c-5 bin]# ls
node npm

///调用node
[root@c7-o12c-5 bin]# node -v  =====///其实#./node -v是可以的
bash: node: command not found.../////系统找不到node命令在哪里
//查看系统命令路径
[root@c7-o12c-5 bin]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/he/.local/bin:/home/he/bin
[root@c7-o12c-5 bin]# pwd ////当前路径
/root/nodejs/bin
[root@c7-o12c-5 bin]# vim /etc/bashrc ///配置node命令的路径
[root@c7-o12c-5 server]# cat /etc/bashrc | tail -n1
export PATH=$PATH:/root/nodejs/bin
[root@c7-o12c-5 bin]# source /etc/bashrc
[root@c7-o12c-5 bin]# node -v

v6.11.2
[root@c7-o12c-5 bin]# npm -v
3.10.10
////切换到你的项目文件里(我的项目文件在当前目录下)
[root@test ~]# cd server
[root@test server]# ls
////项目里的文件有哪些
index.js model node_modules package.json public

[root@c7-o12c-5 server]# node index.js


*************
////因为我的反复实验,再执行可能出现的错误
   events.js:160
   throw er; // Unhandled 'error' event
   ^
   Error: listen EADDRINUSE :::3000
   at Object.exports._errnoException (util.js:1020:11)
   at exports._exceptionWithHostPort (util.js:1043:20)
   at Server._listen2 (net.js:1258:14)
   at listen (net.js:1294:10)
   at Server.listen (net.js:1390:5)
   at EventEmitter.listen (/root/server/node_modules/express/lib/application.js:618:24)
   at Object.<anonymous> (/root/server/index.js:32:5)
   at Module._compile (module.js:570:32)
   at Object.Module._extensions..js (module.js:579:10)
   at Module.load (module.js:487:32)
///解决
  [root@c7-o12c-5 server]# ps | grep node ////监听端口被占用
  3065 pts/0 00:00:01 node
  [root@c7-o12c-5 server]# kill 3065
  [1]+ Terminated node server/index.js (wd: ~)
  (wd now: ~/server)
  [root@c7-o12c-5 server]# ps -ef | grep node ///查看进程
**********************

[root@c7-o12c-5 server]# node index.js //////前端运行
处于等待中
在浏览器里输入:http://localhost:3000------ok
Ctrl+c
浏览器刷新,木有了
[root@c7-o12c-5 server]# node index.js & //////后端运行咯
[root@c7-o12c-5 server]# netstat -tpln | grep node //////浏览成功,端口肯定存在喽,我只是看看。
tcp6 0 0 :::3000 :::* LISTEN 3641/node

****///////数据库还没有,所以一用到存储机制nodejs进程就会自动停止,和项目程序有关。下面安装mongo数据库

三、 mongodb部署
下载:方式一:先下到window系统再用xshell传到虚拟机上喽
http://www.mongodb.org/downloads



方式二:也可以直接wget,不过注意解压方式
[root@7node server]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.9.tgz //////我用这个包有问题,bin下面没有mongo,真是绝了,我用方式一


安装
:用xshell上传到虚拟机root用户的家目录下
[root@c7-o12c-5 ~]# ls
mongodb-linux-x86_64-rhel70-3.4.9.gz ///查看虚拟机已经有这个包了
[root@c7-o12c-5 ~]# tar -xvf mongodb-linux-x86_64-rhel70-3.4.9.gz//解压
[root@c7-o12c-5 ~]# mv mongodb-linux-x86_64-rhel70-3.4.9 mongo///将解压后的文件改个好记的名字
//////或者做软连接# ln ‐s mongodb‐linux‐x86_64‐rhel70-3.4.0/ mongo
[root@c7-o12c-5 ~]# ls mongo
bin GNU-AGPL-3.0 MPL-2 README THIRD-PARTY-NOTICES
[root@c7-o12c-5 ~]# cd mongo
[root@c7-o12c-5 mongo]# pwd

/root/mongo
配置:
[root@c7-o12c-5 mongo]# vim /etc/bashrc///在末尾添加
export PATH=$PATH:/root/mongo/bin
[root@c7-o12c-5 mongo]# source /etc/bashrc
[root@c7-o12c-5 mongo]# which mongo

/root/mongo/bin/mongo
[root@c7-o12c-5 mongo]# mkdir /mongodb/data/db -p
[root@c7-o12c-5 mongo]# mkdir /mongodb/data/log -p



没有启动就用mongo命令连接数据库,会出现以下问题
[root@c7-o12c-5 mongo ]# mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
2017-09-19T08:47:52.805+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-09-19T08:47:52.809+0800 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
(///如果重启还是出现以上报错,关掉selinux看看,再重新启动,查看进程。)

启动

命令行启动////我不喜欢这个方式

[root@c7-o12c-5 mongo]# mongod --dbpath /mongodb/data/db/ --logpath /mongodb/data/log/mongodb.log --logappend &
[2] 4454
[root@c7-o12c-5 mongo]# ps -ef | grep mongo ////查看启动是否成功
root 2669 2483 1 08:49 pts/0 00:00:10 mongod --dbpath /mongodb/data/db/ --logpath /mongodb/data/log/mongodb.log --logappend
root 4487 2483 0 09:01 pts/0 00:00:00 grep --color=auto mongo

[root@c7-o12c-5 mongo]# mongo ////连接,会出现一些警告,但不是错误!
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
Server has startup warnings:
2017-09-19T08:49:30.987+0800 I STORAGE [initandlisten]
2017-09-19T08:49:30.988+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-09-19T08:49:30.988+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-09-19T08:49:31.463+0800 I CONTROL [initandlisten]
2017-09-19T08:49:31.463+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-09-19T08:49:31.463+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-09-19T08:49:31.464+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-09-19T08:49:31.464+0800 I CONTROL [initandlisten]
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten]
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten]
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-09-19T08:49:31.465+0800 I CONTROL [initandlisten]
> exit
bye
(或者杀死进程,启动时加上—rest,然后浏览器输入:http://localhost:28017)

配置文件启动:

[root@c7-o12c-5 mongo]# cat /mongodb/mongodb.cnf

dbpath=/mongodb/data/db
logpath=/mongodb/data/log/mongodb.log
logappend=true
port=27017
[root@7 c7-o12c-5 mongo]# mongod -f /mongodb/mongodb.cnf &//启动
[root@c7-o12c-5 mongo]# ps -ef | grep mongo
root 5764 2483 1 09:46 pts/0 00:00:23 mongod -f /mongodb/mongodb.cnf --rest
root 6354 2483 0 10:13 pts/0 00:00:00 grep --color=auto mongo

[root@c7-o12c-5 mongo]# tail -n10 /mongodb/data/log/mongodb.log

[root@c7-o12c-5 mongo]# mongo
查看:在网页书填入信息,会自动寻找本机的27017端口存储。
> show dbs  ///数据存在哪个库,开发人员说了算……下面就是进入库查看是否生成数据集合
admin 0.000GB
local 0.000GB

可能遇到的问题:
遇到再说……




<think>好的,用户想要在CentOS 7.9上运行Node.js项目,我得一步步来指导他们。首先,可能需要安装Node.js,CentOS默认的软件库可能版本比较旧,所以得考虑用其他方法,比如NodeSource的仓库。然后,安装npm或者yarn来管理依赖。接着,可能需要安装PM2这样的进程管理工具,保持应用持续运行。用户可能还需要配置防火墙,开放相关端口,比如3000或者用户项目用的端口。另外,可能需要设置反向代理,比如用Nginx,这样可以通过域名访问,或者处理SSL。还要确保项目的依赖都正确安装,比如运行npm install。如果项目有数据库,可能还需要安装和配置数据库服务,比如MongoDB或者MySQL。最后,可能需要指导如何启动应用,检查日志,处理常见错误。需要注意CentOS 7.9的兼容性,确认Node.js版本是否支持,避免使用太新的版本导致问题。用户可能不熟悉Linux命令,需要给出具体的命令示例,并解释每个步骤的作用。另外,权限问题也是常见的,比如全局安装可能需要sudo,或者项目目录的权限设置。总之,要详细但清晰地引导用户完成整个流程,确保他们能顺利运行项目。</think>以下是在CentOS 7.9上运行Node.js项目的完整步骤指南: --- ### 一、环境准备 1. **更新系统** ```bash sudo yum update -y ``` 2. **安装开发工具链** ```bash sudo yum groupinstall "Development Tools" -y ``` --- ### 二、安装Node.js 推荐使用NodeSource仓库安装最新LTS版本: 1. **添加NodeSource仓库** ```bash curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash - ``` 2. **安装Node.js** ```bash sudo yum install -y nodejs ``` 3. **验证安装** ```bash node -v # 应显示v18.x或更高版本 npm -v ``` --- ### 三、部署Node.js项目 1. **上传项目文件** 使用SFTP/scp或git克隆项目到服务器: ```bash git clone <your_project_repo> cd your-project ``` 2. **安装依赖** ```bash npm install --production # 生产环境建议使用此参数 ``` 3. **配置环境变量** 创建.env文件: ```bash NODE_ENV=production PORT=3000 DATABASE_URL=your_db_connection_string ``` --- ### 四、进程管理(推荐PM2) 1. **全局安装PM2** ```bash sudo npm install pm2@latest -g ``` 2. **启动应用** ```bash pm2 start app.js --name "my-app" ``` 3. **设置开机启动** ```bash pm2 startup pm2 save ``` --- ### 五、网络配置 1. **开放防火墙端口** ```bash sudo firewall-cmd --permanent --add-port=3000/tcp sudo firewall-cmd --reload ``` 2. **配置Nginx反向代理(可选)** ```nginx server { listen 80; server_name yourdomain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } ``` 重启Nginx: ```bash sudo systemctl restart nginx ``` --- ### 六、维护命令 | 操作 | 命令 | |------|------| | 查看实时日志 | `pm2 logs` | | 重启应用 | `pm2 restart my-app` | | 停止应用 | `pm2 stop my-app` | | 查看进程列表 | `pm2 list` | --- ### 常见问题排查 1. **端口冲突**: ```bash netstat -tuln | grep <port> ``` 2. **权限问题**: ```bash sudo chown -R $(whoami):$(whoami) /path/to/project ``` 3. **内存不足**: 使用Node.js内存限制参数: ```bash pm2 start app.js --max-memory-restart 500M ``` --- 建议使用最新LTS版本Node.js以获得更好的安全性和性能支持。如果是旧项目,可通过`nvm`管理多版本Node环境: ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash nvm install 16 # 示例:安装Node.js 16 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值