java 项目服务器部署

准备服务器

服务器种类很多,应该买哪种类型的服务器呢?

像我这样部署项目,就买买弹性云(ECS)轻量云

  1. 比如腾讯云:
  1. 比如阿里云:
  1. 比如华为云:
  1. 百度智能云的 BCC(Baidu Cloud Compute)云服务器:

BCC 就是百度云提供的类似于阿里 ECS

  1. 比如京东云:

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

  1. 天翼云
  1. 移动云
  1. 联通云
  1. 火山引擎(字节跳动)

还有:

  1. 七牛云
  2. 金山云
  3. 青云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系统中默认是没有这个命令的,需要我们安装一下:

  1. 第一步:安装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
  1. 第二步:安装screen
bash 复制代码
dnf install -y screen  

都安装好了。

  1. 怎么用呢?

创建一个绘画窗口:

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;                                                                                                  
        }    

要注意的事项

  1. 后端项目打包的时候,注意一下spring-boot的配置文件,mysql,redis的等的密码和数据库名等都要写云服务器上的。
  2. 前端打包的时候有需要主义的地方吗?

比如那我的项目举例,我的前端是vite+vue3

我是在vite.config.js中配置代理:

axios配置:

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

相关推荐
呉師傅34 分钟前
佳能iR-ADV C5560复印机如何扫描文件到电脑
运维·网络·windows·计算机外设·电脑
半梦半醒*1 小时前
Linux网络管理
linux·运维·网络·centos·运维开发
破刺不会编程1 小时前
linux线程概念和控制
linux·运维·服务器·开发语言·c++
Nightwish52 小时前
Linux随记(二十一)
linux·运维·服务器
IT成长日记4 小时前
【自动化运维神器Ansible】Ansible常用模块之File模块详解
运维·自动化·ansible·file·常用模块
獭.獭.4 小时前
Linux -- 文件【上】
linux·运维·服务器·进程·pcb
不会敲代码的XW5 小时前
高可用集群KEEPALIVED的详细部署
运维·云原生
老实巴交的麻匪5 小时前
提问的智慧,用最少的时间获得最有效的帮助
运维·团队管理
nbsaas-boot5 小时前
收银系统优惠功能架构:可扩展设计指南(含可扩展性思路与落地细节)
java·大数据·运维
爱喝酸奶的桃酥6 小时前
解密负载均衡:如何轻松提升业务性能
运维·负载均衡