服务器从零部署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证书免费申请指南 中二少年学编程"。

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


总结

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

相关推荐
YongCheng_Liang6 分钟前
锐捷无线控制器基础配置
运维·网络
荣光波比20 分钟前
Ansible(三)—— 使用Ansible自动化部署LNMP环境实战指南
运维·自动化·云计算·ansible
七七七七0728 分钟前
【Linux 系统】理解Linux下一切皆文件
linux·运维·服务器
tjsoft1 小时前
专栏丨华为HN8145XR光猫获取超级管理员密码
运维·服务器·网络
盛满暮色 风止何安2 小时前
网络安全设备 防火墙
服务器·网络·网络协议·计算机网络·安全·web安全·网络安全
荣光波比3 小时前
Docker(五)—— Docker Compose 一键搭建 LNMP 架构并部署 WordPress
运维·docker·容器·云计算
古月-一个C++方向的小白8 小时前
Linux——查看与创建进程
linux·运维·服务器
驱动探索者11 小时前
find 命令使用介绍
java·linux·运维·服务器·前端·学习·microsoft
半路_出家ren11 小时前
IPTables防火墙
服务器·网络·iptables
洋哥网络科技12 小时前
Centos系统替代选择
linux·运维·centos