CentOS 安裝 JDK+ NGINX+ Tomcat + Redis + MySQL搭建項目環境

目錄

  • 第一步:安裝JDK 1.8
    • 方法 1:安裝 Oracle JDK 1.8
    • 方法 2:安裝 OpenJDK 1.8
  • 第二步:使用yum安裝NGINX
  • 第三步:安裝Tomcat
  • 第四步:安裝Redis
  • 第五步:安裝MySQL
  • 第六步:MySQL版本兼容性問題

第一步:安裝JDK 1.8

在 CentOS 7 上安裝 JDK 1.8 可以通過多種方式完成,例如使用 Oracle 的官方安裝包、OpenJDK 或者通過 RPM 包管理工具。下面我將介紹兩種常見的方法:使用 Oracle JDK 和使用 OpenJDK。

方法 1:安裝 Oracle JDK 1.8

1、下載 JDK
訪問 Oracle 官網下載 JDK 1.8 的 RPM 包。由于 Oracle JDK 需要接受許可協議,你也可以選擇下載 tar.gz 包然后手動解壓。
訪問 Oracle JDK 下載頁面 并選擇 Linux x64 的 RPM 包。
2、安裝 JDK
使用 wget 下載 RPM 包(如果你已經下載到本地,則跳過此步驟):

wget https://download.oracle.com/otn-pub/java/jdk/8uXXX-bXX/XXX_jdk-8uXXX-linux-x64.rpm

(其中 XXX 是版本號,例如 191 對于 8u191)
3、然后安裝:

sudo yum localinstall XXX_jdk-8uXXX-linux-x64.rpm

4、配置環境變量
編輯 /etc/profile 或用戶的 ~/.bashrc 文件,添加以下行:

export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export PATH=$PATH:$JAVA_HOME/bin

(確保替換 XXX 為具體的版本號)
5、然后執行:

source /etc/profile

或重新登錄終端。

方法 2:安裝 OpenJDK 1.8

1、安裝 OpenJDK
OpenJDK 是免費的開源實現,可以直接通過 yum 安裝:

sudo yum install java-1.8.0-openjdk

2、配置環境變量
同樣,編輯 /etc/profile 或 ~/.bashrc 文件,添加或修改以下行:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

3、然后執行:

source /etc/profile

或重新登錄終端。
4、驗證安裝
無論使用哪種方法,你都可以通過以下命令來驗證 JDK 是否正確安裝:

java -version

這將顯示安裝的 Java 版本,你應該看到類似java version "1.8.0_XXX"的輸出。
以上就是在 CentOS 7 上安裝 JDK 1.8 的步驟。選擇適合你的方法進行安裝。
如遇提示報錯:報錯14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的錯誤“,參考如下:地址。

第二步:使用yum安裝NGINX

參考如下:Nginx三種安裝方式
這種方式安裝的 nginx 版本一般也不是最新的,但是也夠用了,主要是安裝簡單。

1 安裝 EPEL 存儲庫

yum install -y epel-release

2 更新存儲庫

yum update

3 安裝Nginx

yum install -y nginx

4 驗證安裝
查看nginx版本

nginx -v

5 啟動NGINX服務并設置開機啟動:

# 設置開機自啟動
sudo systemctl enable nginx
# 取消開機自啟動
sudo systemctl disable nginx# 啟動
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重啟
sudo systemctl reload nginx

6 驗證NGINX是否安裝成功:

sudo systemctl status nginx

7 Nginx的基本配置
Nginx的配置文件通常位于 /etc/nginx/nginx.conf ,以及位于 /etc/nginx/sites-available/ 目錄下的站點特定配置文件。以下是一個基本的Nginx配置文件示例:執行 sudo vim /etc/nginx/nginx.conf

server {listen       80;listen       [::]:80;server_name  _;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root   html;index  index.html index.htm;autoindex on;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

檢查是否有語法錯誤

sudo nginx -t

查看錯誤日志
查看 Nginx 的錯誤日志可以提供更多關于為什么頁面找不到的信息。日志文件通常位于 /var/log/nginx/error.log。使用以下命令查看日志:

sudo tail -f /var/log/nginx/error.log
  1. 修改權限

修改/usr/local/nginx/html/目錄的讀寫權限,或者是把nginx的啟動用戶改成目錄的所屬用戶

chmod -R 777 /usr/local/nginx/html/
  1. 檢查 SELinux 狀態
    !!!!!!!!!!!!!!!!注意這一步非常重要!!!!!!!!!!!!!!!!!!!
    如果你的系統啟用了 SELinux(Security-Enhanced Linux),它可能會阻止某些操作。你可以臨時禁用 SELinux 來測試是否是 SELinux 導致的問題:
sudo setenforce 0

在這里插入圖片描述
如果禁用 SELinux 后問題解決,那么你可能需要調整 SELinux 的策略而不是完全禁用它。例如,你可以為 Nginx 設置適當的上下文:

sudo restorecon -v /etc/nginx/nginx.conf

檢查目錄和文件的 SELinux 上下文
確保 Nginx 的配置文件和目錄具有正確的 SELinux 上下文:

ls -Z /etc/nginx/nginx.conf

運行 http://localhost/upload/defaultpicture/1.jpg,成功后看到
在這里插入圖片描述

第三步:安裝Tomcat

Tomcat的下載和安裝過程比較簡單,適用于多種操作系統:
訪問Tomcat官方網站,下載對應操作系統的Tomcat二進制版本。
解壓縮下載的文件到一個目錄,例如 /opt/tomcat 或 C:\apache-tomcat-9.0.34 。
運行Tomcat的 bin/startup.sh (Unix/Linux)或 bin/startup.bat (Windows)腳本來啟動Tomcat服務器。
用文件夾下面的startup.shshutdown.sh來進行啟動和關閉。
檢查是否啟動成功:在瀏覽器輸入:http://localhost:8080

第四步:安裝Redis

  1. 安裝 EPEL 倉庫
    首先,你需要啟用 EPEL (Extra Packages for Enterprise Linux) 倉庫,因為 Redis 可能不在 CentOS 的默認倉庫中。
sudo yum install epel-release
sudo yum update
  1. 安裝 Redis

安裝 Redis 服務器和客戶端工具。

sudo yum install redis
  1. 啟動 Redis 服務
sudo systemctl start redis
  1. 設置 Redis 服務開機自啟
sudo systemctl enable redis
  1. 檢查 Redis 狀態
sudo systemctl status redis
  1. 在Redis配置文件(通常是redis.conf)中添加:
requirepass 123456

第五步:安裝MySQL

參考地址1
參考地址2

  1. 獲取 mysql 官方 yum 源
    下載地址
# 一定要看好下面的文字!如果后面自己安裝不成功,就看看這個
# 注意:最好安裝和自己系統一致的mysql版本,否則可能會存在軟件兼容性問題
# 查看自己的系統版本
# [root@VM-8-5-centos ~]# cat /etc/redhat-release
# CentOS Linux release 7.8.2003(Core)
# 可以進入 http://repo.mysql.com/,找一下和自己版本一致的資源
# 下載到你的本地,然后上傳到你的Linux服務器
  1. 安裝Mysql

2.1 輸入以下命令開始安裝

[root@localhost src]# yum localinstall mysql80-community-release-el7-5.noarch.rpm

2.2 完成后繼續執行以下命令安裝

[root@localhost src]# yum install mysql-community-server

2.3 安裝完畢,啟動Mysql服務

[root@localhost src]# service mysqld start

2.4 查看Mysql服務啟動狀態是否成功,或:ps -ef | grep mysql

[root@localhost src]# service mysqld status
  1. 修改Mysql密碼
    3.1 查詢Mysql臨時密碼
[root@localhost src]# more /var/log/mysqld.log

在這里插入圖片描述

3.2 復制臨時密碼,然后登陸Mysql

在這里插入圖片描述
3.3 此時不能做任何事情,因為MySQL默認必須修改密碼之后才能操作數據庫:

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

其中‘new password’替換成你要設置的密碼,
注意:密碼設置必須要大小寫字母數字和特殊符號(,/';:等),不然不能配置成功
在這里插入圖片描述

3.4 創建lexian數據庫
運行樂鮮數據庫sql腳本文件:

mysql> source /home/51testing/Desktop/WorkSpace/lexian/lexian.sql

請注意確保lexian.sql文件的路徑正確。可以看到創建個表、存儲過程以及插入初始數據的語句運行結果。
驗證數據庫,運行下列命令確保返回相應的結果:

use lexian;
select * from category;

3.5 創建和使用非管理員賬號
  一般不建議直接在應用程序中使用 root 賬號訪問數據庫,應創建新的非管理員賬號。

  • 創建賬號etc,密碼為51Testing~

以root賬號進入mysql,運行以下語句:

CREATE USER 'etc'@'%' IDENTIFIED BY '51Testing~';
  • 賦予etc賬號訪問lexian數據庫的權限:
grant all on lexian.* to 'etc'@'%';
  • 驗證etc賬號:
    以etc身份進入mysql:
mysql -uetc -p
  • 執行下列命令,確保可以看到返回相應的結果:
use lexian;
show tables;

第六步:MySQL版本兼容性問題

解決數據庫MySQL 5.* 遷移到MySQL 8.*的問題。

問題1:MySQL 5.* 和MySQL 8.*的jdbc連接數據庫的方式不同。
解決方式參考另一篇博文。

問題2:ERROR 6125 (HY000): Failed to add the foreign key constraint. Missing unique key for constraint 'commodity_browse' in the referenced table 'commodity'
通常在嘗試在MySQL數據庫中添加外鍵約束時出現,當引用的列不是唯一索引或主鍵時,就會觸發這個錯誤。為了解決這個問題,你需要確保引用的列(即在FOREIGN KEY中指定的列)具有唯一性。
添加一個UNIQUE的約束就行。
在這里插入圖片描述

問題3:注冊時無法注冊報錯如下。
在這里插入圖片描述
參考鏈接:jdbc配置之后,提示table does not exist

查看數據庫表名是wallet小寫,而這里是Wallet是大寫的‘W’,改成大寫的就行了,無語。

問題4:首頁商品圖片加載不顯示。
在這里插入圖片描述
這里是MySQL 8.* 與MySQL 5.*的兼容性的問題,MySQL 8.* 默認支持sql_mode = only_full_group_by,而MySQL 5.*則默認不支持,這里需要在配置中刪掉這個only_full_group_by。

mysql> select @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> use lexian;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select @@sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> select @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                         |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

在這里插入圖片描述
終于成功了!!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90717.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何設計一個登錄管理系統:單點登錄系統架構設計

關鍵詞:如何設計一個登錄管理系統、登錄系統架構、用戶認證、系統安全設計 📋 目錄 開篇:為什么登錄系統這么重要?整體架構設計核心功能模塊安全設計要點技術實現細節性能優化策略總結與展望 開篇:為什么登錄系統這么…

論跡不論心

2025年7月11日,16~26℃,陰 緊急不緊急重要 備考ing 備課不重要 遇見:免費人格測試 | 16Personalities,下面是我的結果 INFJ分析與優化建議 User: Anonymous (隱藏) Created: 2025/7/11 23:38 Updated: 2025/7/11 23:43 Exported:…

【面板數據】省級泰爾指數及城鄉收入差距測算(1990-2024年)

對中國各地區1990-2024年的泰爾指數、城鄉收入差距進行測算。本文參考龍海明等(2015),程名望、張家平(2019)的做法,采用泰爾指數測算城鄉收入差距。參考陳斌開、林毅夫(2013)的做法&…

http get和http post的區別

HTTP GET 和 HTTP POST 是兩種最常用的 HTTP 請求方法,它們在用途、數據傳輸方式、安全性等方面存在顯著差異。以下是它們的主要區別:1. 用途GET:主要用于請求從服務器獲取資源,比如獲取網頁內容、查詢數據庫等。GET 請求不應該用…

I2C集成電路總線

(摘要:空閑時,時鐘線數據線都是高電平,主機發送數據前,要在時鐘為高電平時,把數據線從高電平拉低,數據發送采取高位先行,時鐘線低電平時可以修改數據線,時鐘線高電平時要…

為了安全應該使用非root用戶啟動nginx

nginx基線安全,修復步驟。主要是由于使用了root用戶啟動nginx。為了安全應該使用非root用戶啟動nginx一、檢查項和問題檢查項分類檢查項名稱身份鑒別檢查是否配置Nginx賬號鎖定策略。服務配置檢查Nginx進程啟動賬號。服務配置Nginx后端服務指定的Header隱藏狀態服務…

論文解析篇 | YOLOv12:以注意力機制為核心的實時目標檢測算法

前言:Hello大家好,我是小哥談。長期以來,改進YOLO框架的網絡架構一直至關重要,但盡管注意力機制在建模能力方面已被證明具有優越性,相關改進仍主要集中在基于卷積神經網絡(CNN)的方法上。這是因…

學習C++、QT---20(C++的常用的4種信號與槽、自定義信號與槽的講解)

每日一言相信自己,你比想象中更接近成功,繼續勇往直前吧!那么我們開始用這4種方法進行信號與槽的通信第一種信號與槽的綁定方式我們將按鍵右鍵后轉到槽會自動跳轉到這個widget.h文件里面并自動生成了定義,我們要記住我們這個按鈕叫…

Anolis OS 23 架構支持家族新成員:Anolis OS 23.3 版本及 RISC-V 預覽版發布

自 Anolis OS 23 版本發布之始,龍蜥社區就一直致力于探索同源異構的發行版能力,從 Anolis OS 23.1 版本支持龍芯架構同源異構開始,社區就在持續不斷地尋找更多的異構可能性。 RISC-V 作為開放、模塊化、可擴展的指令集架構,正成為…

4萬億英偉達,憑什么?

CUDA正是英偉達所有神話的起點。它不是一個產品,而是一個生態系統。當越多的開發者使用CUDA,就會催生越多的基于CUDA的應用程序和框架;這些殺手級應用又會吸引更多的用戶和開發者投身于CUDA生態。這個正向飛輪一旦轉動起來,其產生…

Unity3D iOS閃退問題解決方案

前言 在Unity3D開發中解決iOS閃退問題需要系統性排查,以下是關鍵步驟和解決方案: 對惹,這里有一個游戲開發交流小組,希望大家可以點擊進來一起交流一下開發經驗呀! 1. 獲取崩潰日志(關鍵第一步&#xff…

嵌入式八股文之 GPIO

1. GPIO 的基本概念(1) 什么是 GPIO?GPIO 的中文意思是通用輸入輸出端口(General Purpose Input/Output),是嵌入式系統中可編程控制的通用引腳,可通過軟件配置為輸入或輸出模式。(背誦)(2) 它的…

Umi-OCR 的 Docker安裝(win制作鏡像,Linux(Ubuntu Server 22.04)離線部署)

前置博客:Ubuntu-Server 22.04.4 詳細安裝圖文教程 wget命令在windows終端下不能使用的原因及解決辦法 在 Ubuntu 22.04 LTS 上離線安裝 Docker 手把手教你在Win11下安裝docker Umi-OCR 安裝docker時報錯:workstation服務啟動報錯。錯誤1075&#…

力扣242.有效的字母異位詞

給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的 字母異位詞。示例 1:輸入: s "anagram", t "nagaram" 輸出: true示例 2:輸入: s "rat", t "car" 輸出: false提示:1 < s.length, t.length < 5 * 104s…

基于Springboot+UniApp+Ai實現模擬面試小工具二:后端項目搭建

本節介紹本項目后端項目的開發工具及基礎項目的搭建&#xff0c;包括開發工具介紹及后端項目的創建和依賴框架的引入及對應配置。 源碼下載&#xff1a; 點擊下載 講解視頻&#xff1a; UniappSpringbootKimi實現模擬面試小程序-Springboot項目創建一&#xff0e;開發工具 1.…

Linux711 Mysql

模版 root192.168.235.130s password:┌──────────────────────────────────────────────────────────────────────┐│ ? MobaXterm Personal Edition v23.2 ? ││…

QT 秘鑰生成工具

該項目是注冊機和驗證機項目&#xff0c;分別是密鑰生成工具&#xff0c;和密鑰驗證demo,可以識別電腦唯一標識碼。#include "frmmain.h" #include "ui_frmmain.h" #include "qmessagebox.h" #include "qfile.h" #pragma execution_ch…

PyTorch神經網絡訓練全流程詳解:從線性層到參數優化

目錄 一、神經網絡訓練的核心組件 二、代碼逐行解析與知識點 三、核心組件詳解 3.1 線性層(nn.Linear) 3.2 損失函數(nn.MSELoss) 3.3 優化器(optim.SGD) 四、訓練流程詳解 五、實際應用建議 六、完整訓練循環示例 七、總結 在深度學習實踐中&#xff0c;理解神經網絡…

從代碼學習深度學習 - 針對序列級和詞元級應用微調BERT PyTorch版

文章目錄 前言針對序列級和詞元級應用微調BERT單文本分類文本對分類或回歸文本標注問答總結前言 在自然語言處理(NLP)的廣闊天地里,預訓練模型(Pre-trained Models)的出現無疑是一場革命。它們如同站在巨人肩膀上的探索者,使得我們能夠利用在大規模文本語料上學到的豐富…

學習筆記丨卷積神經網絡(CNN):原理剖析與多領域Github應用

本文深入剖析了卷積神經網絡&#xff08;CNN&#xff09;的核心原理&#xff0c;并探討其在計算機視覺、圖像處理及信號處理等領域的廣泛應用。下面就是本篇博客的全部內容&#xff01;&#xff08;內附相關GitHub數據庫鏈接&#xff09; 目錄 一、什么是CNN&#xff1f; 二、…