天天看點

阿裡雲伺服器部署前後端分離項目

阿裡雲伺服器部署 【若依】 前後端分離項目

文章目錄

    • 一、域名解析
    • 二、伺服器作業系統置空
    • 三、部署方式
    • 四、需安裝環境配置
    • 五、Linux伺服器安裝相應内容(具體安裝步驟)
      • (一)安裝JDK(3種方式)
        • 使用Yum安裝(推薦)
        • 使用rpm包安裝
        • 使用JDK壓縮包(相對複雜,容易出錯)
      • (二)安裝Maven
        • 安裝(推薦方式)
        • 解壓Maven
        • 添加一對localRepository,用來添加本地倉庫路徑;
        • 切換鏡像源
        • 配置環境變量
      • (三)安裝Mysql
        • 安裝
        • 安裝5個rpm,有安裝順序,依賴嵌套
        • 修改密碼
        • 為防火牆添加開放端口
        • 更改mysql語言
      • (四)安裝Nginx
        • 安裝前環境檢測
        • 下載下傳nginx
        • 安裝nginx
        • 配置防火牆
        • 配置開機自啟動
      • (五)安裝Redis
        • 環境确認
        • 下載下傳redis
        • 解壓redis
        • 安裝redis
        • 啟動redis
          • 1、直接啟動
          • 2、指定redis.conf檔案啟動
        • 檢視Redis是否正在運作
        • 設定開機自啟動
        • redis-cli
        • 操作指令總結
    • 六、啟動後端
      • 首次啟動
      • 重新開機後端
        • 方式一:(傳統方式)
        • 方式二:(如果會的話,建議此方式)
    • 七、可能出現的問題
      • 防火牆問題
      • Nginx問題

一、域名解析

  • 詳情參考:阿裡雲官網

二、伺服器作業系統置空

  • 此處選擇的是CentOS 7.5 + 版本
  • 詳情參考阿裡雲官網

三、部署方式

  • 使用Redis + Nginx

四、需安裝環境配置

  • 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包安裝

  • Oracle JDK所有版本下載下傳
  • OracleJDK8下載下傳
  • Oracle官方站點下載下傳需要登入【百度一個】
    阿裡雲伺服器部署前後端分離項目

将下載下傳的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,用來添加本地倉庫路徑;

切換鏡像源

# 修改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安裝包有兩種方式:

  • wget 或 curl
  • 還可以在官網下載下傳然後手動上傳**(不建議手動上傳)**
# 官網下載下傳位址(下載下傳完上傳即可)
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預設必須修改密碼之後才能操作資料庫:

其中‘new password’替換成你要設定的密碼,注意:密碼設定必須要大小寫字母數字和特殊符号(,/';:等),不然不能配置成功

執行以下指令開啟遠端通路限制(注意:下面指令開啟的IP是 192.168.1.1,如要開啟所有的,用%代替IP):

然後再輸入下面兩行指令

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 --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 [email protected]
           

Nginx問題

  1. server 配置問題
  2. Vue打包之後路徑跳轉不到“location /”問題,需要單獨指向一個路徑
  3. 前後端分離項目,要寫兩個location,不要影響到業務的跨域
阿裡雲伺服器部署前後端分離項目
若依解決登入頁面驗證碼不出現檢查思路

① Redis沒啟動

② 看一下浏覽器或者日志,有沒有調到接口,沒有的話檢查一下nginx反向代理,能不能跳轉過去,以及防火牆有沒有開相應的端口

到此為止

繼續閱讀