最近要重装一下 PC 系统,考虑到重装后各个环境的配置可能变得更麻烦而不易于 Sypastebin 的上线,同时也为了学习一下传统的项目部署,故顺手先部署了。果不其然,遇到了很多问题。但问题虽多,却也都是很基础的问题,也可以感受一下。
一、部署
部署主流程及要点:
- 服务器启动(可考虑在服务商主页打开终端,执行安装宝塔面板命令,能省去ssh、ftp等麻烦);
- 服务器供应商服务器主页处开放相应的安全组端口;
- 服务器防火墙开放相应端口(更安全);
1 | 查看防火墙状态,没有则根据提示安装 |
安装Nginx,将前端文件上传并配置页面;
安装MySQL并配置数据库和表,启动服务;
安装MongoDB并配置数据库和集合,启动服务;
……其他程序及其配置等(看需要),启动服务;
安装 Java 开发环境(宝塔安装 Tomcat 间接安装并配置好 JDK 8.0);
在 IDEA 利用 Maven 将 Springboot 打包:clean 后 package,在 target 目录下得到项目的 Jar包;
注:打包前需更改数据源的ip地址等,可直接使用公网ip。
上传Jar包到服务器并启动:
nohup java -jar 包名 &
,持续运行,会输出日志到当前目录下的nohup.out
文件(可自定义),用于观察服务运行状况,查看日志;完成。
因为服务器配置不够,MySQL 8.0 都需要 2 核。所以,直接转战Docker,索性 MySQL 和 MongoDB 都用 Docker 容器提供了。因为都是 Docker 及应用的基本操作,这里不详细介绍。(好像 Docker 容器的服务不需要开放远程连接授权)运行完之后,可以直接使用,跟服务器自身安装无差别,本地PC可直接远程连接。
利用Docker容器(代替部分程序的安装)提供服务:
- 拉取MySQL镜像、运行容器并配置;
- 录取MongoDB镜像、运行容器并配置;
二、遇到的问题和关键操作
问题很多,但基础,随缘记!
- Ubuntu 安装 MySQL
注意事项:MySQL安装完成后,若需要授权外部连接(默认只有 localhost),需要执行授权指令或更新权限表,使得某个ip的PC(或所有PC)可以连接。授权命令:
1 | 用户user使用password密码从任何主机连接MySQL服务器 |
补充:若项目中使用角色非root,需要创建对应的角色并授权。
Navicat连接服务器MySQL
Navicat连接服务器MySQL(老生常谈了,总有error想害朕):
- Ubuntu 安装 MongoDB
注意事项:下载 MongoDB压缩包,解压后,需要同时在安装目录(推荐)增加 data目录
、log目录
及其.log文件
,以及conf目录
里的.conf文件
,在.cong文件
中编写好相应的配置(将bind_ip
修改,或删除,否则无法远程连接),启动时直接利用配置文件启动。(具体操作参考)
补充:启动后,初始进入的是admin,没有账号和密码。需要新创建用户(包括root),用户创建规则:创建超级用户,在admin库
,use admin
后createUser
,然后再在当前库进行db.auth("账号","密码")
。其他普通用户也是如此,在哪个数据库下创建就在哪个库进行授权,否则出现授权失败的错误,导致无法连接。(权限部分可参考学习)
查看参考命令
1 | 使用admin库 |
- 其他
- 本地 IDEA 使用数据源时,需要添加数据源并测试是否连通,在右侧 DataSource栏。避免盲目配置,运行时连接靠运气。
- 因为前后端分离,所以部署后,相当于有了四个服务:两个前端、两个后端,分别跑在本地和服务器上。那么可以修改ip等参数,相互测试。(有点意思!
- 数据库权限授权部分还不得,折腾半天,不如认真回顾一下。
- MongoDB不正常结束进程会导致应用被锁,需要删除data目录下的
.lock
文件和日志目录下的.log
日志文件。
三、总结&收获
- 虽说是第一次部署服务,但其实不难,难在细节,难在各个部件的安装和配置,以及某些玄学的错误。
- 这次部署涉及到了很多内容,包括:
- 服务器重装系统,从零开始部署项目;
- 进一步熟悉Linux:基本的Linux命令、文件常规保存位置等;
- 服务器安全组、端口和防火墙的开关和配置;
- 宝塔面板的熟练使用;
- Nginx部署Web页面,域名配置;
- MySQL的安装、远程连接、数据库恢复和表创建、遭遇版本不对等;
- MongoDB的安装、远程连接(Win终端连接、MongoDBCompass连接、IDEA连接)、数据库创建和使用、权限管理等;
- Docker的安装、回顾了一波容器使用、常用命令;
- 项目服务的部署需要修改的参数和配置;
- 了解了波整个项目的部署的操作,下次遇到经历过的问题更轻车熟路。
- 发现了新东西、也回顾和一下旧东西,有助于整个项目的改进和个人能力的提升。
- 这次部署花了很多时间在探索和试错上,以为时间一晚上够用,可惜,花了一天。
不足:
- 服务器的运维能力不得,还得多玩一下服务器;
- 数据库的安装和配置不熟,还得多玩几次;
- 数据库本身不熟,还得回顾学习,不只是理论。
四、未来
对于下一次部署,会集成更多的服务组件,比如 redis 和 MySQL 的读写分离。因此,下次会结合 Dockerfile 一起配置,将整个服务容器化,方便一键拉取运行。