阿里云服务器部署前后端分离项目

Posted 经理,天台风好大

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云服务器部署前后端分离项目相关的知识,希望对你有一定的参考价值。

阿里云服务器部署 【若依】 前后端分离项目


文章目录

一、域名解析

二、服务器操作系统置空

  • 此处选择的是CentOS 7.5 + 版本
  • 详情参考阿里云官网

三、部署方式

四、需安装环境配置

  • JDK1.8+
  • Maven3.6+
  • mysql(5.5.62+)
  • Nginx(1.19.8)
  • Redis(6.2.1)
  • Tomcat

五、Linux服务器安装相应内容(具体安装步骤)

(一)安装JDK(3种方式)

使用Yum安装(推荐)

# 查看是否有JDK环境
java -version
    
# 卸载现有环境
# (如果java -version出现-bash: /usr/local/java: No such file or directory可以省略此步骤)
rpm -qa | grep java
# .noarch文件可以不用管,卸载下面四个
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.322.b06-1.el7_9.x86_64
    
# 这里以openjdk8为例
yum install java-1.8.0-openjdk
#不想确认的带上 -y
yum install -y java-1.8.0-openjdk

# 安装完之后重新检查一下环境

使用rpm包安装

将下载的rpm包上传到服务器上

# rpm包的安装命令
rpm -ivh 包全名
选项:
    -i(install)    安装
    -v(verbose)    显示详细信息
    -h(hash)       显示进度
    --nodeps       不检测依赖性

# 执行下面的命令安装 (jdk-8u311-linux-x64.rpm替换成你当前要安装的文件名)
rpm -ivh jdk-8u311-linux-x64.rpm
# 安装完检查环境配置
java -version

使用JDK压缩包(相对复杂,容易出错)

# 这里使用wget命令下载
wget -c https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz

下载Oralce JDK(方式2 中有下载地址)

# 解压gz压缩包  jdk-8u311-linux-x64.tar.gz替换为你当前实际的文件名
tar -zxvf jdk-8u311-linux-x64.tar.gz

# 创建文件夹 (你可以自己定义)
mkdir -p /usr/local/java/jdk1.8.0_311

# 复制jdk到上一步创建的文件夹
cp -r ./jdk1.8.0_311/ /usr/local/java/


配置环境变量

# 编辑全局变量文件
vim /etc/profile

# 将下载的gz压缩包上传到服务器并解压
(PS:JAVA_HOME的 “/usr/local/java/jdk1.8.0_311” 为上一步创建的目录,使用你当时创建的目录名。)
    
export JAVA_HOME=/usr/local/java/jdk1.8.0_311
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
    
# 配置完之后保存退出,重启一下文件
source /etc/profile

(二)安装Maven

安装(推荐方式)

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

解压Maven

tar -zxvf apache-maven-3.6.3-bin.tar.gz

添加一对localRepository,用来添加本地仓库路径;

<localRepository>/soft/maven/repo</localRepository>

切换镜像源

# 修改settings.xml文件(匹配你自己的路径)
vi /soft/apache-maven-3.6.3/conf/settings.xml 

# 找到【mirrors】标签对,【添加】一下代码
<mirror>       <!--阿里云仓库-->
     <id>alimaven</id>
     <mirrorOf>central</mirrorOf>
     <name>aliyun maven</name>
     <url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>    <!--maven国内镜像-->
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

配置环境变量

vi /etc/profile

#你的maven路径
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH

# 重启
source /etc/profile

# 查看结果
mvn -version

(三)安装Mysql

安装

Centos7默认安装 mariadb,为防止和MySQL冲突,需要先卸载。

# 查看mariadb版本信息
rpm -qa | grep mariadb
    
# 卸载(mariadb-libs-5.5.65-2.el7.x86_64这一个是根据你查到的版本信息填写,每个系统有差异)
sudo rpm -e mariadb-libs-5.5.65-2.el7.x86_64 --nodeps

在云服务器里下载MySQL安装包有两种方式:

  • wgetcurl
  • 还可以在官网下载然后手动上传**(不建议手动上传)**
# 官网下载地址(下载完上传即可)
https://dev.mysql.com/downloads/mysql/
# 下载完,上传,解压
例:tar -xvf mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

# wget方式下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
# curl方式下载
curl -O https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

安装5个rpm,有安装顺序,依赖嵌套

# 3个依赖包
rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm

# 客户端和服务端
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

# 此步骤一般情况不用管,当前yum仓库没有包含mysql-server相关包时,才需要安装。其实前面步骤只要正确部署,就不存在yum仓库没有包含mysql-server相关包的情况。
(1)查看yum仓库有没有包含mysql-server相关包:
yum whatprovides mysql-server

(2)没有就安装 mysql-server:
yum -y install mysql-server
  1. 在安装第三个的时候如果出现

【libcrypto.so.10()(64bit) 被 mysql-community-libs-8.0.11-1.el7.x86_64 需要】类似的错误,要改变一下命令:

安装的时候最好在root权限下安装,需要在rpm包后面添加 --nodeps --force

  1. 在安装第五个之前要先安装 yum install libaio

修改密码

MySQL刚安装是没有密码的,需要初始化一个临时密码,再去修改。

# 生成临时密码
sudo mysqld --initialize

启动mysql

systemctl start  mysqld.service

查看MySQL运行状态,运行状态如图:

systemctl status mysqld.service

检查一个叫 Active 的参数,如果状态是 loaded,代表启动成功

不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

切记:一定要把临时密码保存下来

grep "password" /var/log/mysqld.log

如下命令进入数据库:

mysql -uroot -p

输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功

执行以下命令开启远程访问限制(注意:下面命令开启的IP是 192.168.1.1,如要开启所有的,用%代替IP):

mysql> grant all privileges on *.* to 'root'@'192.168.1.1' identified by 'password' with grant option;

然后再输入下面两行命令

mysql> flush privileges; 
mysql> exit

为防火墙添加开放端口

# 添加mysql端口3306和Tomcat端口8080
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 重新加载
firewall-cmd --reload

更改mysql语言

mysql -uroot -p
# 登陆之后,输入:
status


如果是utf8,就代表没问题

如果是latin1,就到 /etc 目录下的my.cnf文件下修改一下文件内容

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

保存文件后,重启mysql

service mysqld restart

安装完成

(四)安装Nginx

安装前环境检测

安装之前先检查有没有C++,没有的话安装先安装

安装C++

//安装c++
yum install gcc-c++ -y
//查看版本
gcc -v

安装ssl

yum install -y openssl openssl-devel

安装zlib

yum install -y zlib zlib-devel
//查看信息
cat /usr/lib64/pkgconfig/zlib.pc

安装pcre

yum install -y pcre pcre-devel
//查看版本号
pcre-config --version

下载nginx

nginx下载地址

下载解压

tar -xvf nginx-1.20.2.tar.gz

安装nginx

# 进入目录
cd nginx-1.20.2
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install

查看目录

cd /usr/local/nginx
ls

启动、关闭、重启nginx

cd /usr/local/nginx/sbin
# 启动    
./nginx
# 关闭
./nginx -s stop
# 重启
./nginx -s reload

配置防火墙

开放nginx所需的80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙

firewall-cmd --reload

验证端口是否开放成功

firewall-cmd --zone=public --query-port=80/tcp

在浏览器输入你的服务器IP地址,nginx默认端口是80,只需要输入IP地址即可!

配置开机自启动

即在rc.local增加启动代码就可以了。

vi /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx

设置执行权限:

chmod 755 rc.local

(五)安装Redis

环境确认

由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装

yum install -y gcc

下载redis

都知道服务器可以使用 wget 命令直接联网下载 但是这个下载路径也很重要 所以一定要自己进入官网复制 网上很多教程都是直接给的一个下载命令,但是那个命令里面的版本不一定还在,所以必须要自己去复制一下这个下载路径,然后输入wget + 复制的下载路径 回车进行下载

wget https://download.redis.io/releases/redis-7.0.8.tar.gz

如果报错提示 Connecting to download.redis.io (download.redis.io)...Permission denied,没有权限,那就需要切换root用户下载

解压redis

下载完后使用解压命令进行解压

tar -zvxf redis-7.0.8.tar.gz

因为 redis一般放在 /usr/local/redis 路径下 所以要使用命令将文件移动过去 这里我的文件在opt下

mv /opt/redis-7.0.8 /usr/local/redis

cd/usr/local目录下可以查看到当前目录已经多了一个 redis 子目录

安装redis

进入到redis目录输入make执行编译命令

cd /usr/local/redis
make
make PREFIX=/usr/local/redis install

启动redis

1、直接启动
cd bin
./redis-server
2、指定redis.conf文件启动

从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录

cp /opt/redis-6.2.5/redis.conf /usr/local/redis/bin/

修改 redis.conf 文件,把 daemonize no 改为 daemonize yes

vi redis.conf

运行

./redis-server redis.conf

查看Redis是否正在运行

ps -ef | grep redis
    或者
ps -aux | grep redis

# 杀掉redis进程
kill 15376

设置开机自启动

/etc目录下新建redis目录

mkdir redis

/usr/local/redis/redis.conf 文件复制一份到 /etc/redis目录下,并命名为6379.conf

cp /usr/local/redis/redis.conf /etc/redis/6379.conf

将redis的启动脚本复制一份放到 /etc/init.d 目录下

cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd

设置redis开机自启动, 先切换到/etc/init.d目录下, 然后执行自启命令

cd /etc/init.d
# 执行自启命令
chkconfig redisd on

redis-cli

./redis-cli是连接本地redis服务的一个命令,通过该命令后可以既可控制redis的脚本控制台

如果 Redis报错:-bash: redis-cli: command not found

将redis-cli拷贝到bin下,让redis-cli指令可以在任意目录下直接使用

cp /opt/redis-7.0.8/src/redis-cli.c /usr/local/redis/bin

操作命令总结

systemctl start redis.service   #启动redis服务
systemctl stop redis.service   #停止redis服务
systemctl restart redis.service   #重新启动服务
systemctl status redis.service   #查看服务当前状态
systemctl enable redis.service   #设置开机自启动
systemctl disable redis.service   #停止开机自启动

六、启动后端

首次启动

前端
新建一个文件夹web,把项目打包,解压,放到服务器上即可

后端

  1. 在服务器中新建一个文件夹,把jar包传进去
  2. 新建一个文件,存放日志记录 ruoyi_log.out
  3. 新建一个脚本,方便启停项目(此步骤可选,可以不操作)
  4. 启动项目即可;

# 启动的是你的jar包名称,
nohup java -jar ruoyi-admin.jar > ruoyi_log.out 2>&1 &

重启后端

方式一:(传统方式)

  1. 过滤端口号 netstat -tnlp | grep :8090或者使用 ps -ef | grep java 查看正在运行的进程号,重启服务的时候直接杀掉。
  2. 然后执行Kill -9 进程号 杀掉进程,重新启动。

方式二:(如果会的话,建议此方式)

使用脚本。

大概设计思路就是在脚本里面执行外层的逻辑,先查询进程号kill,在重新启动

七、可能出现的问题

防火墙问题

通常情况下,CentOS 系统部署完成后,关闭并禁用防火墙。但有些特殊情况需要保持防火墙的启用。

  1. 检查防火墙开启的端口
# 查看开放端口
firewall-cmd --list-ports
  1. 参考命令
# 打开防火墙
systemctl start firewalld

# 启用防火墙
systemctl enable firewalld

# 查看已经开放的端口
firewall-cmd --list-ports

# 开启指定端口
firewall-cmd --zone=public --add-port=[端口号]/[协议] --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent

		--zone=<zone> # 指定 zone
		--add-port=<portid>]/<protocol> # 端口id / 协议
		--permanent # 永久开启,不添加则重启失效

# 关闭指定端口
firewall-cmd --zone=public –remove-port=[端口号]/[协议] --permanent
firewall-cmd --zone=public –remove-port=80/tcp --permanent

# 查看所有 zone ,默认有9个 zone
firewall-cmd --get-default-zones

# 重新加载防火墙 *重新加载过后才能生效
systemctl reload firewalld

# 测试端口是否开放成功
ssh -v -p [端口] [用户名]@[ip]
ssh -v -p 8080 root@47.128.209.xx

Nginx问题

  1. server 配置问题
  2. Vue打包之后路径跳转不到“location /”问题,需要单独指向一个路径
  3. 前后端分离项目,要写两个location,不要影响到业务的跨域

若依解决登录页面验证码不出现检查思路

① Redis没启动
② 看一下浏览器或者日志,有没有调到接口,没有的话检查一下nginx反向代理,能不能跳转过去,以及防火墙有没有开相应的端口



到此为止

以上是关于阿里云服务器部署前后端分离项目的主要内容,如果未能解决你的问题,请参考以下文章

阿里云(win server)部署前后端分离项目(springboot + vue + android)

阿里云(win server)部署前后端分离项目(springboot + vue + android)

前后端分离 -- SpringBoot + Vue实战项目 部署至阿里云服务器

阿里云部署node接口

项目部署Vue+SpringBoot前后分离个人博客项目实战部署保姆教程 Linux+docker安装部署启动一条龙教程

通过宝塔面板部署一个SpringBoot+Vue前后端分离项目的指南(三更)