Node项目上线部署到CentOS7阿里云服务器

1. 简介

效果: songtang.xyz

  最近写了一个比较简陋的后台管理系统来练练手,主要学习了一下mongooseexpress,终于来到了最后的项目上线。经历两天的不断失败终于搞上去了。特此总结,以备日后更换服务器和域名。这个东西说简单不简单说难其实也不难,只达到简单的让项目上线还是可以搞得,至于安全性什么的交给运维吧。好了,以上内容纯属废话,下面进入正题!

2. 分析

  这篇记录一切以阿里云为主,其它的暂不考虑。在阿里云购买域名和服务器什么的在此不再赘述,记录自己遇到的一个坑,买完服务器必须重置登录密码,或者说初始化登录密码。不然我竟然登录不上
是不是发现了我只有一个月的
对于服务器的系统,毫不犹豫的选择了Linux的代表CentOS7.0系列,这里不建议安装可视化界面,但是话说回来装了也没太大影响,毕竟在学习阶段。
安装图形界面命令:

#  1. 先安装 GNOME Desktop
	  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

#  2. 更新系统的运行级别
	  ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

#  3. 设置默认通过桌面环境启动服务器:(图形化界面体验下就行了,对服务器来说没啥用,浪费)
	  systemctl set-default graphical.target

#     或者设置成命令模式(推荐)
	  systemctl set-default multi-user.target

#  4. 安装 X Window System
	  yun groups install "X Window System"

#  5. 重启
	  reboot

3. 连接远程服务器

3.1 工具: Xshell配合Xftp(Mac可用iterm2和transmit)

在这里插入图片描述
在这里插入图片描述
Xftp同理,应该没什么问题。一般用的IP都是公网IP…

3.2 修改主机名:即Xshell@后面的名字

在这里插入图片描述
1. vim /etc/hosts

2. vim /etc/hostname
在这里插入图片描述

4. node环境部署

推荐使用nvm安装node,不仅不容易出错,而且方便管理:

1. # 安装必备git
   	 yum install git
   
2. # 安装nvm管理工具
	 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
	
3. # 加入系统环境
	 source ~/.bashrc
	
4. # 查看是否成功
	 command -v nvm

5. # 查看所有node版本
	 nvm list-remote

6. # 安装指定node版本
	 nvm install v12.10.0

7. # 切换node版本
	 nvm use v.......

8. # 设置默认的node版本
	 nvm alias default v12.10.0

9. # 查看node自带npm
	 npm

至此,node环境搭建完毕!

5. MongoDB数据库环境搭建

下载前请自行新建一个mongo文件夹,用于解压下载好的数据库!

1. # 下载mongoDB
	 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.0.tgz

2. # 解压
	 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.0.tgz

3. # 重命名方便读取
	 mv mongodb-linux-x86_64-rhel70-4.2.0 mongodb

4. # 进入
	 cd mongodb

5. # 创建数据和日志文件
	 mkdir data  
	 mkdir log

6. # 配置环境变量
	 vim /etc/profile
	 添加代码(路径为自己的mongodb路径,每个人每次每台机器是不一样的):
		export MONGODB_HOME=/root/Program/mongo/mongodb
	    export PATH=$PATH:$MONGODB_HOME/bin
	 保存退出(按Esc-->输入  :wq)
 
	 vi ~/.bash_profile
     添加代码
    	PATH=$PATH:/root/Program/mongo/mongodb/bin
	 保存退出
	
7. # 使其生效
	 source /etc/profile
	 source ~/.bash_profile

8. # 测试是否配置环境变量成功
	 mongo --version

配置数据库成功
9. # 启动mongodb
mongod --dbpath /root/Program/mongo/mongodb/data --fork --logpath /root/Program/mongo/mongodb/log/mongo.log
success

6. nginx下载与配置

6.1 使用宝塔快速下载编译配置nginx(偷懒)

1. # 安装宝塔免费版控制面板方便编译安装lnmp(省了点事...)
	 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

2. # 下面就是根据提示信息登录网页去配置安装nginx了,傻瓜式安装...

6.2 自己手动下载配置nginx

1. # 安装nginx依赖
	 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. # 在新建的nginx文件夹中下载nginx,版本可以在官网自选
	 wget http://nginx.org/download/nginx-1.9.13.tar.gz   
3. # 解压
	 tar -xvf nginx-1.9.13.tar.gz
4. # 进入解压后的nginx-1.18.0包目录
	 cd /usr/local/nginx/nginx-1.9.13
5.   ./configure
6. 	 make
7.   make install

在任意目录执行 nginx -v发现可能会提示没有找到nginx命令则判断为环境变量问题,配置nginx环境变量如下:

1. vim /etc/profile
2. # 指向nginx的sbin目录
	PATH=$PATH:/usr/local/nginx/sbin
3. # 重新加载使其生效
	source /etc/profile
4. 任意目录执行
	nginx -v

6.3 node部署

2. # 安装pm2方便管理程序后台运行
	 npm i -g pm2

3. # 安装express
     npm -g install express
   
4. # 启动node项目(进到项目根目录下)
	 pm2 start ./bin/www
	 
5. # 查找nginx相关配置的位置
	 find /|grep nginx.conf

6. # 进入conf(具体根据nginx的下载位置有所不同)
	 cd /www/server/nginx/conf

7. # 编译nginx.conf
	 vim nginx.conf

8. # 添加代码
	 server {
	    listen 80;
	    server_name www.songtang.xyz,songtang.xyz;   // 换成自己的域名或者IP地址
	    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_set_header Connection "";
	        proxy_pass      http://127.0.0.1:8080;  // 代理指定的端口
	    }
     } 

9. # 测试nginx配置文件
	  nginx -t
	 
10. # 重载nginx配置文件(使其生效)
	  nginx -s reload

11. # 重启nginx(以防万一)
	  service nginx restart

12. # 重启node项目(项目根目录)
	  pm2 restart ./bin/www

到这里项目基本上部署完毕了:
在这里插入图片描述

7. 部署时刻监听的操作

  很多的时候我们会感觉命令都没错,配置都没错但是就是达不到想要的效果,这时候就需要进行以下操作

1. # 阿里云安全组放行需要的端口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
比如说比如放行27017:
在这里插入图片描述

2. # 放行防火墙端口
	 因为有时候只在阿里云安全组放行是不够的的,就是这么莫名其妙,当时在这卡了12个小时,
	 就是因为没有放行防火墙端口,尽管安全组都放行了
	 
	 2.1 # 查看开放的端口列表
	 	   firewall-cmd --zone=public --list-ports
	
	 2.2 # 添加放行的端口
	 	   firewall-cmd --zone=public --add-port=9999/tcp --permanent
	
	 2.3 # 重启使其生效
	 	   firewall-cmd --reload


3. # 解决进程占用

	 3.1 # 查看端口被哪个进程占用
	 	   netstat -lnp|grep 3000
	 3.2 # 干掉占用端口的进程
       	   kill -9 3382

8. 总结

  之前买的域名没有备案,拖着拖着就忘了,而且现在备案需要3个月以上的实例才行,我的第一个服务器还是免费试用的一个月的,没办法,用完再买一年的喽,先体验一下。Vue项目的打包上线回头再记录,好累。希望遇见更好的自己,黑芝麻…

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值