目錄
- 第一步:安裝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
- 修改權限
修改/usr/local/nginx/html/目錄的讀寫權限,或者是把nginx的啟動用戶改成目錄的所屬用戶
chmod -R 777 /usr/local/nginx/html/
- 檢查 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.sh
和 shutdown.sh
來進行啟動和關閉。
檢查是否啟動成功:在瀏覽器輸入:http://localhost:8080
第四步:安裝Redis
- 安裝 EPEL 倉庫
首先,你需要啟用 EPEL (Extra Packages for Enterprise Linux) 倉庫,因為 Redis 可能不在 CentOS 的默認倉庫中。
sudo yum install epel-release
sudo yum update
- 安裝 Redis
安裝 Redis 服務器和客戶端工具。
sudo yum install redis
- 啟動 Redis 服務
sudo systemctl start redis
- 設置 Redis 服務開機自啟
sudo systemctl enable redis
- 檢查 Redis 狀態
sudo systemctl status redis
- 在Redis配置文件(通常是redis.conf)中添加:
requirepass 123456
第五步:安裝MySQL
參考地址1
參考地址2
- 獲取 mysql 官方 yum 源
下載地址
# 一定要看好下面的文字!如果后面自己安裝不成功,就看看這個
# 注意:最好安裝和自己系統一致的mysql版本,否則可能會存在軟件兼容性問題
# 查看自己的系統版本
# [root@VM-8-5-centos ~]# cat /etc/redhat-release
# CentOS Linux release 7.8.2003(Core)
# 可以進入 http://repo.mysql.com/,找一下和自己版本一致的資源
# 下載到你的本地,然后上傳到你的Linux服務器
- 安裝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
- 修改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)
終于成功了!!!!