为什么要写这篇文章呢😄
最近秋招结束,打算研究一下自己实习期间没有机会触碰的模块(太菜了😂)。从一开始的写页面,模块开发,到一整个小程序和后台的开发,感觉只停留在前端最基础的层面,想通过这篇文章记录下最近项目上线的整套流程。
参考
技术栈
- 前端:Vue;
- 后端:NodeJS,MongoDB;
- 服务器:Nginx,PM2,Navicat
第一步 阿里云服务器
我买的配置:
- 镜像:WorldPress
- 系统:CentOS
第二步 VsCode连接服务器
以前用过Xshell和Xftp连接服务器,不太熟悉Linix系统,所以改用vscode连接,好处是上传文件只要拖进去就ok,开多个终端方便,并且修改文件就像平时开发一样
安装Remote-SSH
配置Remote-SSH
然后输入密码,打开根目录文件夹'/',就连接成功,可以下一步操作啦!
第三步 配置服务器
1. 安装NodeJs
wget命令下载Node.js安装包
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz
解压
tar xvf node-v18.12.1-linux-x64.tar.xz
通常文件会安装到/root目录下,为了方便把文件夹名称改为nodejs,放到/usr/local下
mv nodejs /usr/local/
配置环境变量 打开/etc/profile,加上这两行代码
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH
执行下命令
source /etc/profile
最后检查一下node是否装好
node -v
2.安装PM2
- pm2是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。(通俗易懂点就是只要服务器开着node进程就一直开启,不用你每次手动执行node app.js开启后端服务器)
介绍一些常用命令
pm2 start app.js //启动app.js应用
pm2 start app.js --name 程序名 //启动进程并指定应用的程序名
pm2 start app.js --name 程序名 --watch //监听模式启动,当文件发生变化,自动重
pm2 ls //列出所有进程
pm2 delete app // 指定进程名删除
pm2 stop [AppName] //根据应用名停止指定应用
安装
npm install pm2 -g
建立软连接
ln -s /usr/local/nodejs/bin/pm2 /usr/local/bin
3.安装MongDB并将本地数据库同步到服务器
安装
- 软件安装位置:/usr/local/mongodb
- 数据存放位置:/var/mongodb/data
- 日志存放位置:/var/mongodb/logs
进入 /usr/local/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.5.tgz
tar zxvf mongodb-linux-x86_64-3.4.5.tgz
把文件名改为mongodb
创建数据和日志存放目录
mkdir /var/mongodb
mkdir /var/mongodb/data
mkdir /var/mongodb/logs
配置开机启动项
打开/etc/rc.d/rc.local文件,在后面输入
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork
然后在终端执行一下(需要把服务器的27017端口打开)
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork
最后检查一下是否安装成功mongo
使用Navicat同步数据
先把本地和服务器的数据库都开启
类似的新建一个连接,将主机改为服务器ip地址
导入和导出数据
对应的数据库点导出向导,导出为json文件,然后在服务器的数据库导入向导
最后在服务器检查一下,看看是否已经同步
mongo
show dbs
第三步 部署NodeJs
把后端的代码文件夹拖进/root,记得不要把node_modles也拖进来了,然后执行下nmp i安装依赖
记得先把服务器对应的端口打开
启动进程
pm2 start app.js --name demo
配置pm2开机启动
pm2 startup centos
到这一步后端已经部署完成,可以用postman或浏览器测试一下后端接口
第四步 Nginx
阿里云的服务器自带了nginx所以不用安装啦,这里先从前端打包说起 在axios配置文件中
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 50000 // 请求超时时间
})
方案一 客户端直接请求后端地址加端口
.env.production配置
ENV = 'production'
VUE_APP_BASE_API = 'http://服务器ip:后端端口'
/usr/local/nginx/nginx.conf配置
server {
listen 80;
charset utf-8;
server_name localhost;
location / {
root /root/demo/dist; #打包出来的dist存放路径
index index.html index.htm;
}
}
检查一下有没有问题nginx -t,显示successful的话,就执行nginx -s reload
方案二 通过nginx反向代理,前端不直接请求后端
.env.production配置
ENV = 'production'
VUE_APP_BASE_API = '/api'
nginx配置
server {
listen 80;
charset utf-8;
server_name localhost;
location / {
root /root/demo/dist; #打包出来的dist存放路径
index index.html index.htm;
}
location /api {
proxy_pass http://127.0.0.1:XXXX; #XXXX是真实的后端服务器的端口
}
}
END
到这一步已经部署完成啦,完结撒花🎉🎉🎉 可以直接从服务器的公网ip地址访问啦
踩了几天的坑,希望这篇文章能帮助有需要的小伙伴啦哈哈哈,我也是小白,大家有问题可以评论或者私信我呀,写的不好的地方,欢迎大佬们指出🙏🙏