准备服务器
服务器种类很多,应该买哪种类型的服务器呢?
像我这样部署项目,就买买
弹性云(ECS)
,轻量云
。
- 比如腾讯云:

- 比如阿里云:

- 比如华为云:

- 百度智能云的 BCC(Baidu Cloud Compute)云服务器:
BCC 就是百度云提供的类似于阿里 ECS

- 比如京东云:

CVM(Cloud Virtual Machine)云主机是 弹性云服务器产品,和阿里的 ECS、百度的 BCC 是同类产品。
- 天翼云

- 移动云

- 联通云

- 火山引擎(字节跳动)

还有:
- 七牛云
- 金山云
- 青云QingCloud
你可以随便选择一家提供商,像腾讯,阿里等对新人是有优惠的。
下面这是我买的腾讯云服务器:
进入服务器的控制台,在防火墙(安全组)里把SSH端口放行,其它端口暂时不用管。

SSH工具
我用的SSH工具是Tabby,相似的工具很多,可以自行选择。

安装Mysql
安装mysql官方dnf(yum)仓库:
bash
dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

查看mysql仓库是否启动:
bash
dnf repolist enabled | grep mysql

**安装MySQL:**哈哈,我们刚才装的只是官方dnf(yum)仓库😁
bash
dnf install -y mysql-community-server --nogpgcheck
启动MySQL:
bash
systemctl start mysqld # 启动MySQL
systemctl enable mysqld # 开机自启动
systemctl status mysqld # 查看MySQL启动状态(启动或者未启动)
获取MySQL初始密码:

bash
fPtkok9T*EnM
安全权限的设置:
bash
mysql_secure_installation
改完以后有下面这些提示:
bash
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
登录MySQL:
bash
[root@VM-4-10-centos ~]# mysql -u root -p
Enter password:
退出MySQL:
bash
mysql> quit
Bye
[root@VM-4-10-centos ~]#
# 也可以输入exit退出:
mysql> exit
Bye
[root@VM-4-10-centos ~]#
# 也可以通过CTRL + C退出
放开防火墙/端口号:
注意,云服务器的安全服务是由云平台提供,比如我们在腾讯云设置的防火墙(阿里云叫安全组)。 所以,我们不用在服务器本身设置防火墙。
当然,如果有这方面的需求,请看下面的命令:
bash
# 允许 MySQL 服务
firewall-cmd --zone=public --add-service=mysql --permanent
# 或者放行 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 让规则立即生效
firewall-cmd --reload
# 验证防火墙规则
firewall-cmd --list-all
还是那句话,非必要不要设置这个防火墙。
那我怎么知道我的服务器的防火墙是否是启动的?
用下面的命令就可以查看防火墙状态:
bash
sudo systemctl status firewalld

注意,如果是没有开启状态,我们什么都不用管。
上传数据库代码:
上传文件等操作,我们可以使用SSH工具来实现。 不同ssh工具的上传文件操作基本差不多。
先在opt目录下创建项目所需要的目录。
在根目录下运行下面的命令:
bash
mkdir -p /opt/smart_edu/sql
Mysql数据库运行这个sql代码:
先进入数据库,然后执行下面的命令:
bash
mysql> source /opt/smart_edu/sql/smart_edu.sql
也可以这样写:
bash
# 注意,你的数据库代码中要有建数据库的语句
mysql -u root -p < smart_edu.sql
# 如果想在特定的数据库中运行这个代码
mysql -u root -p [your_database_name] < smart_edu.sql

查看数据库和表建好了没:
bash
# 查看所有数据库
mysql> show databases;
# 切换到我的数据库
mysql> use smart_edu;
# 查看我的表都建好了没
mysql> show tables;
Redis安装
安装命令:
bash
dnf install redis -y
修改redis配置
bash
# 配置文件一般都在etc目录下
vim /etc/redis/redis.config
# 第83行 修改为 * -::*,任意的ip地址都可以访问redis服务
bind * -::*
# 908行附近, 设置密码(可选)
requirepass 123456
启动redis:
bash
# 启动redis
systemctl start redis
# 开机自启动配置
systemctl enable redis
# 查看redis的状态
systemctl status redis
进入redis:
bash
# 进入redis命令行
[root@VM-4-10-centos /]# redis-cli
# 输入设置的密码
127.0.0.1:6379> auth 123456
OK
# 或者
[root@VM-4-10-centos /]# redis-cli -a [yourpassword]
JDK安装
下载完成以后我们可以拖怪的方式把这个压缩包上传到我们的服务器上。
进行解压:
bash
tar -xzf jdk-17.0.15_linux-x64_bin.tar.gz -C /usr/local
解压到:
/usr/local
目录下。
打开/etc/profile文件,配置环境变量
把下面的这些配置粘贴到配置文件的最后面:
bash
# 配置JAVA_HOME
export JAVA_HOME=/usr/local/jdk-17.0.15
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
然后重新加载这个文件:
bash
source /etc/profile
查看java版本:
bash
java -version
安装成功了
部署后端jar包:
先上传一个jar包,然后测试能不能启动:

Linux窗口绘画插件
现在问题来了,怎么才能这个启动进程挂载到后台呢,不然现在这个项目占用了我的控制台,我什么干不了了呀?
我们可以使用Linux的窗口绘画命令(screen
)来解决这个问题,Linux系统中默认是没有这个命令的,需要我们安装一下:
- 第一步:安装
epel
源
bash
dnf install -y epel-release
如果这样输出:
bash
No match for argument: screen
Error: Unable to find a match: screen
先运行一下下面三个命令:
bash
# 从仓库中下载最新的包索引
dnf makecache
# 清理掉 dnf 的本地缓存
dnf clean all
# 更新系统中所有已安装的软件包到最新版本
# 用途:打补丁、升级新版本、修复 bug 等。
dnf update -y
然后再运行这个命令:
bash
dnf install -y epel-release
- 第二步:安装
screen
bash
dnf install -y screen
都安装好了。
- 怎么用呢?
创建一个绘画窗口:
bash
screen -S [起个名字]
# 比如:
screen -S smart_edu
我们可以在这个绘画窗口启动我们的Java项目。
然后挂起当前会话(后台运行):
text
先按住 Ctrl,然后按 A,最后按 D

查看所有 screen 会话:
bash
screen -ls

重新进入某个会话:
bash
screen -r [绘画名]
# 比如
screen-r smart_edu
Nginx安装
安装命令:
bash
dnf install nginx -y
bash
# 启动 nginx
systemctl start nginx
# 开机自启动配置
systemctl enable nginx
# 查看 nginx 的状态
systemctl status nginx
然后放行80端口:

然后直接可以通过http://【你的公网ip地址】
就可以访问了。
注意,这里直接输入ip地址就可以了,不用写端口号80,因为我们访问web页面就是用http协议访问的。😁
配置ngix:
nginx的配置文件在etc/nginx/nginx.conf
用vim打开这个配置文件:

bash
# 前端页面路径
location / {
root /var/www/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# 后端接口转发
location /api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
要注意的事项
- 后端项目打包的时候,注意一下spring-boot的配置文件,mysql,redis的等的密码和数据库名等都要写云服务器上的。
- 前端打包的时候有需要主义的地方吗?
比如那我的项目举例,我的前端是vite+vue3
我是在vite.config.js中配置代理:

axios配置:


最后的答案是:前端打包的时候什么也不用改。