服务器从零部署nodejs(midway)项目
有任何问题,都可以私信博主,共同探讨学习。
正文开始
- 前言
- 笔记内容
- 1.环境安装
- 2.pm2安装
- 3.启动项目
- 4.数据库mysql安装
- 5.数据库工具navicat安装
- 6.云服务器防火墙设置
- 7.nginx代理
- 8.免费证书部署
- 总结
前言
electron桌面端软件、小程序,web网站等都需要后端服务,最近换了一次服务器,相当于从零部署了一次服务器,所以把部署过程中一些关键信息记录成笔记,供同学们学习。
因为不是初次尝试,可能很多我认为不重要的,恰恰是某些同学要踩的坑,所以如果有所疏漏,望谅解。
博主其他资源,可以通过中二少年学编程的个人主页来获取。
笔记内容
1.环境安装
先在服务器上安装环境,我的项目基于nodejs框架midwayjs,所以需要安装node和npm。如果是java项目,则需要安装jdk。
安装nodejs,可以选择博主的工具便捷管理各版本nodejs,也可以下载nvm,安装node和npm,我的node版本为16.18.0。博主的工具软件界面如下:
工具获取方式——百度网盘地址:https://pan.baidu.com/s/1yrl0jYpti7QCn8CHBRT2lw?pwd=1234
2.pm2安装
下载pm2,先设置淘宝镜像源。
npm config set registry https://registry.npmmirror.com
npm install pm2 -g
3.启动项目
通过后端项目的根目录lize-tools-back进入cmd:
然后输入命令,启动midwayjs,并命名为lize-tools-back:
pm2 start ./bootstrap.js --name lize-tools-back -i 4
4.数据库mysql安装
安装mysql8.4.2,下载exe安装包。安装时,提示需要 Redistributable for Visual Studio 2019。下载对应的C++库。然后重新点击exe安装,按照提示,点击下一步。在服务中找到Mysql服务,说明下载成功。
5.数据库工具navicat安装
navicat远程连接mysql时报错:Authentication plugin ‘caching_sha2_password‘ cannot be loaded
从MySQL 8.0开始,默认的认证插件从mysql_native_password更改为caching_sha2_password。较旧的MySQL客户端库可能不支持这种新的认证方法,导致连接失败。
如果习惯了旧的客户端,就按照下面的步骤解决。如果没什么特殊原因,就升级navicat到最新版本,pj教程非常简单,请自行查询,或者下载博主的工具软件,以后这些功能都会集成。
旧的navicat连接新的MySQL简易步骤:
进入mysql,在存在mysql.exe的文件夹输入命令行:
mysql -u root -p
会提示输入密码,输入前面已经设置的密码即可。
如果mysql报错MySQL报错:Found option without preceding group in config file,说明my.ini文件编码有问题。设置为UTF-8无BOM格式(就是设置成正常的UTF-8)。
进入mysql后,输入:
ALTER USER 'root'@'xxx.xxx.xxx.xxx' IDENTIFIED WITH mysql_native_password BY 'Goldengate*1'
xxx.xxx.xxx.xxx是你服务器的ip
如果提示: Plugin ‘mysql_native_password’ is not loaded。
则在my.ini增加配置:mysql_native_password=ON
然后服务里找到mysql重启服务。重新进入命令行。
6.云服务器防火墙设置
部署后端成功后,在云服务器通过localhost:7001可以访问到数据。但是通过公网ip无法访问,这是因为云服务器安全策略限制。
在云服务器管理平台,防火墙设置中,增加公网端口访问权限。
7.nginx代理
后端正常访问可以通过http协议,也可以通过https协议。
小程序要求必须通过https协议,所以需要用nginx做一次转发,其实就是nginx加载证书,访问时,访问的是nginx暴露的端口,访问nginx后,nginx再转发,去访问对应的ip:port,所以需要修改一下ip地址。配置如下:
server {
listen 443 ssl;
server_name lizetoolbox.top;
ssl_certificate cert/lizetoolbox.top.pem;
ssl_certificate_key cert/lizetoolbox.top.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://43.138.xxx.xxx:7001;
}
}
配置好后,访问https://lizetoolsbox.top时,就会自动转发访问http://43.138.xxx.xxx:7001,而此ip和端口,部署了我们的后端服务。
8.免费证书部署
阿里云和腾讯云都提供了免费证书申请,证书期限为3个月。如果需要详细的证书申请步骤,请全网搜索关键字:“ssl证书免费申请指南 中二少年学编程”。
证书申请后,按照上面第七步中的相对路径,将证书复制粘贴:
总结
后续如果有补充,还会持续更新。