服务器从零部署nodejs(midway)项目

有任何问题,都可以私信博主,共同探讨学习。


正文开始


前言

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,先设置淘宝镜像源。

c 复制代码
npm config set registry https://registry.npmmirror.com  
npm install pm2 -g

3.启动项目

通过后端项目的根目录lize-tools-back进入cmd:

然后输入命令,启动midwayjs,并命名为lize-tools-back:

c 复制代码
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的文件夹输入命令行:

c 复制代码
mysql -u root -p

会提示输入密码,输入前面已经设置的密码即可。

如果mysql报错MySQL报错:Found option without preceding group in config file,说明my.ini文件编码有问题。设置为UTF-8无BOM格式(就是设置成正常的UTF-8)。

进入mysql后,输入:

c 复制代码
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地址。配置如下:

c 复制代码
     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证书免费申请指南 中二少年学编程"。

证书申请后,按照上面第七步中的相对路径,将证书复制粘贴:


总结

后续如果有补充,还会持续更新。

相关推荐
梨落秋溪、30 分钟前
输入框元素覆盖冲突
java·服务器·前端
枫叶落雨22234 分钟前
08-Elasticsearch
运维·jenkins
猫猫的小茶馆1 小时前
【网络编程】UDP协议
linux·服务器·网络·网络协议·ubuntu·udp
鱼嘻1 小时前
Linux自学day23-进程和线程
linux·服务器·c语言·进程和线程
爆更小小刘2 小时前
Linux下基本指令(4)
linux·运维·服务器
我码玄黄2 小时前
解决本地模拟IP的DHCP冲突问题
linux·运维
若云止水2 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数
运维·nginx
yuanbenshidiaos2 小时前
【linux核心命令】
linux·服务器·数据库
Self-Discipline2 小时前
Linux arm64 IOMMU总结
linux·运维·服务器
我言秋日胜春朝★2 小时前
【Linux】命名管道------Linux进程间通信的桥梁
linux·运维·服务器