CentOS 7 環境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)

在 CentOS 7 環境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP) 環境的詳細步驟如下。此方案確保各組件版本兼容,并提供完整的配置驗證流程。


1. 更新系統

?sudo yum update -y

2. 安裝 MySQL 5.7

2.1 添加 MySQL 官方 YUM 倉庫

由于MySQL并不在CentOS的官方倉庫中,所以我們通過上述rpm命令:


  • 導入MySQL倉庫的密鑰

  • 配置MySQLQ的yum倉庫


# 更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql yum庫
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
2.2 安裝 MySQL 5.7
sudo yum install mysql-community-server -y
2.3 啟動 MySQL 服務
systemctl start mysqld		# 啟動
systemctl enable mysqld		# 開機自啟
2.4 獲取初始密碼并修改
?# 查看初始密碼grep 'temporary password' /var/log/mysqld.log?# 登錄 MySQLmysql -u root -p

設置密碼:

# 在MySQL控制臺內執行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Tang@123';	
# 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc

?[擴展],配置root的簡單密碼

# 如果你想設置簡單密碼,需要降低Mysql的密碼安全級別
set global validate_password_policy=LOW; # 密碼安全級別低
set global validate_password_length=4;	 # 密碼長度最低4位即可# 然后就可以用簡單密碼了(課程中使用簡單密碼,為了方便,生產中不要這樣)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

?[擴展],配置root運行遠程登錄

# 授權root遠程登錄
grant all privileges on *.* to root@"%" identified by '123456' with grant option;  
# IP地址即允許登陸的IP地址,也可以填寫%,表示允許任何地址
# 密碼表示給遠程登錄獨立設置密碼,和本地登陸的密碼可以不同# 刷新權限,生效
flush privileges;# 退出命令
exit
2.5 檢查端口

MySQL默認綁定了3306端口,可以通過端口占用檢查MySQL的網絡狀態

netstat -anp | grep 3306

3. 安裝 Nginx

3.1 添加 EPEL 和 Nginx 官方倉庫
sudo yum install epel-release -y
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.2 安裝 Nginx
sudo yum install nginx -y
3.3 啟動 Nginx 服務
sudo systemctl start nginx
sudo systemctl enable nginx
3.4 驗證 Nginx
curl http://localhost

?或者在瀏覽器輸入服務器地址看到以下頁面,默認監聽端口80

如果看到 Welcome to nginx! 頁面,說明安裝成功。


4. 安裝 PHP 7.2(兼容 MySQL 5.7)

4.1 添加 Remi 倉庫
sudo yum install yum-utils -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
4.2 啟用 PHP 7.2 倉庫
sudo yum-config-manager --enable remi-php72
4.3 安裝 PHP 及常用擴展
sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-cli php-gd php-json -y
4.4 啟動 PHP-FPM 服務
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
4.5 配置 PHP-FPM
#編輯vim /etc/php-fpm.d/www.conf,修改以下參數:
user = nginx
group = nginx
listen = /var/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx#重啟 PHP-FPM:
sudo systemctl restart php-fpm

5. 配置 Nginx 支持 PHP

5.1 修改 Nginx 默認配置

編輯 Nginx 配置文件vim?/etc/nginx/conf.d/default.conf(或 /etc/nginx/nginx.conf):

server {listen 80;server_name your_domain_or_ip;root /usr/share/nginx/html;index index.php index.html index.htm;location / {try_files $uri $uri/ =404;}location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/var/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
}
5.2 重啟 Nginx
sudo systemctl restart nginx

6. 驗證 LNMP 環境

6.1 創建 PHP 測試文件
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
6.2 訪問測試頁面

在瀏覽器中訪問:

?http://your_server_ip/info.php

如果看到 PHP 信息頁面,說明 LNMP 環境配置成功。


7. 常見問題排查

7.1 權限問題

確保 Nginx 用戶(nginx)有權限訪問網站目錄:

?sudo chown -R nginx:nginx /usr/share/nginx/htmlsudo chmod -R 755 /usr/share/nginx/html
7.2 端口沖突

如果啟動 Nginx 報錯 Address already in use,檢查占用 80 端口的進程并終止:

?sudo netstat -tuln | grep 80sudo kill -9 <PID>
7.3 SELinux 配置

如果 SELinux 未禁用,臨時關閉或調整策略:

?sudo setenforce 0 ?# 臨時關閉# 或永久禁用(不推薦):sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

8. 完成

至此,LNMP 環境(Linux + Nginx + MySQL 5.7 + PHP 7.2)已成功部署。你可以將 PHP 項目文件放置在 /usr/share/nginx/html 目錄下運行。

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

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

相關文章

UniApp微信小程序自定義導航欄實現

UniApp微信小程序自定義導航欄 在UniApp開發微信小程序時&#xff0c;頁面左上角默認有一個返回按鈕&#xff08;在導航欄左側&#xff09;&#xff0c;但有時我們需要自定義這個按鈕的樣式和功能&#xff0c;同時保持與導航欄中間的標題和右側膠囊按鈕&#xff08;藥丸屏&…

Java大師成長計劃之第35天:未來展望與個人總結

引言 作為一門歷史悠久的編程語言&#xff0c;Java自1995年問世以來&#xff0c;經歷了多個版本的迭代與演進&#xff0c;依然在當今技術生態中占據著重要地位。從早期的Java SE、Java EE到后來的Java Spring框架&#xff0c;再到現代的微服務架構與云原生應用&#xff0c;Jav…

Ubuntu開機自動運行Docker容器中的Qt UI程序

Ubuntu開機自動運行Docker容器中的Qt UI程序 引言為什么需要這樣配置?解決方案概覽詳細實現步驟1. 創建容器啟動腳本2. 創建系統服務3. 配置自動登錄和顯示設置常見問題解決方案1. 程序無法顯示(X11權限問題)2. 分辨率設置不生效3. 服務啟動失敗安全注意事項結語附錄:完整文…

Scratch節日 | 龍舟比賽 | 端午節

端午節快樂&#xff01; 這款專為孩子們打造的Scratch游戲——《龍舟比賽》&#xff0c;讓你在掌控龍舟的競速中&#xff0c;沉浸式體驗中華傳統節日的魅力&#xff01; &#x1f3ae; 游戲亮點 節日氛圍濃厚&#xff1a;化身龍舟選手&#xff0c;在波濤洶涌的河流中展開刺激競…

(五)MMA(OpenTelemetry/Rabbit MQ/ApiGateway/MongoDB)

文章目錄 項目地址一、OpenTelemetry1.1 配置OpenTelemetry1. 服務添加2. 添加服務標識3. 添加請求的標識4. 添加中間價 二、Rabbit MQ2.1 配置Rabbit MQ1. docker-compose2. 添加Rabbit MQ的Connect String 2.2 替換成Rabbit MQ1. 安裝所需要的包2. 使用 三、API Gateways3.1 …

格恩朗超聲波水表 助力農業精準灌溉與振興?

在農業現代化的征程中&#xff0c;水資源的精準利用至關重要&#xff0c;而這離不開高精度計量設備的支持。大連格恩朗品牌積極響應國家全面推進鄉村振興、加快農業農村現代化的號召&#xff0c;精心打造的超聲波水表&#xff0c;憑借其超高精度&#xff0c;成為綠色灌溉領域的…

微信小程序頁面嵌套web-view點擊系統導航返回時進行彈窗處理

實現效果&#xff1a;微信小程序頁面嵌套web-view點擊系統導航返回時進行彈窗處理 首先在web-view里是不可實現的&#xff08;據我了解下來&#xff09; 參考小程序文檔&#xff1a;page-container 大致邏輯&#xff1a; 1、page-container可實現頁面離開前攔截 2、由于web-vie…

設計模式25——中介者模式

寫文章的初心主要是用來幫助自己快速的回憶這個模式該怎么用&#xff0c;主要是下面的UML圖可以起到大作用&#xff0c;在你學習過一遍以后可能會遺忘&#xff0c;忘記了不要緊&#xff0c;只要看一眼UML圖就能想起來了。同時也請大家多多指教。 中介者模式&#xff08;Mediat…

Java基礎 Day25

一、線程通信 1、簡介 確保線程能夠按照預定的順序執行并且能夠安全地訪問共享資源 使多條線程更好的進行協同工作 2、常用方法 void wait() 使當前線程進入等待狀態 void notify(); 隨機喚醒單個等待的線程&#xff08;可以空喚醒&#xff09; void notifyAll(); 喚醒…

WebSocket與實時對話式AI服務的集成

WebSocket與實時對話式AI服務的集成 在現代對話式AI系統中,傳統的HTTP請求-響應模型已難以滿足實時交互的體驗需求。特別是用戶對響應速度、逐字輸出、會話上下文保持等方面提出更高要求時,需要一種能夠建立持久連接并支持雙向通信的協議。WebSocket正是在這一背景下,成為A…

iOS 集成網易云信IM

云信官方文檔在這 看官方文檔的時候&#xff0c;版本選擇最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加頭文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…

人工智能100問?第37問:什么是擴散模型?

目錄 ??一、通俗解釋 二、專業解析?? 三、權威參考 擴散模型是一種??通過系統性地添加再去除噪聲來生成新數據(如圖像)的生成式AI技術??,其核心機制分為兩個階段:正向擴散??:對原始數據(如清晰圖片)逐步添加噪聲,直至完全變成隨機噪點(類似老照片逐漸模糊…

傳輸層核心技術解析

目錄 一、端口號機制 二、網絡診斷工具 1. netstat命令 2. pidof工具 三、UDP協議詳解 協議特征 典型應用場景 四、TCP協議深度解析 核心機制 狀態轉換模型 特殊狀態說明 五、協議對比分析 六、開發實踐要點 一、端口號機制 核心作用&#xff1a;標識主機唯一進程…

IO Vs NIO

一、IO(傳統阻塞式) 全稱?&#xff1a;Input/Output(輸入/輸出) 定義?&#xff1a;Java 1.0 引入的基礎 I/O 模型&#xff0c;基于流&#xff08;Stream&#xff09;的同步阻塞操作&#xff0c;線程在讀寫數據時會阻塞直到操作完成。 二、NIO(新式非阻塞式) ?全…

基于原生JavaScript前端和 Flask 后端的Todo 應用

Demo地址&#xff1a;https://gitcode.com/rmbnetlife/todo-app-js-flask.git Python Todo 應用 這是一個使用Python Flask框架開發的簡單待辦事項(Todo)應用&#xff0c;采用前后端分離架構。本項目實現了待辦事項的添加、刪除、狀態切換等基本功能&#xff0c;并提供了直觀…

005 ElasticSearch 許可證過期問題

ElasticSearch 許可證過期問題 項目啟動報錯 org.elasticsearch.client.ResponseException: method [GET], host [http://127.0.0.1:9200], URI [/_cluster/health/], status line [HTTP/1.1 403 Forbidden] {"error":{"root_cause":[{"type":…

哪些崗位最易被AI替代?

隨著AI技術高速演進&#xff0c;一場“職場大洗牌”正悄然上演。當ChatGPT出口成章、機器人能精準執勤&#xff0c;AI時代的“就業焦慮”已不再是空談。你是否認真思考過&#xff0c;自己所處的崗位是否也正面臨被AI邊緣化的風險&#xff1f; 以下幾類職業&#xff0c;已成為AI…

信號槽中 sender() 的作用

好的,sender() 是 Qt 框架中的一個重要函數,它用于獲取觸發當前槽函數的對象。在 Qt 的信號和槽機制中,一個信號可以連接到多個槽函數,而一個槽函數也可以被多個信號觸發。sender() 函數允許你在槽函數中確定是哪個對象觸發了當前信號。 信號和槽機制 在 Qt 中,信號和槽…

深度學習|pytorch基本運算

【1】引言 pytorch是深度學習常用的包&#xff0c;顧名思義&#xff0c;就是python適用的torch包&#xff0c;在python里面使用時直接import torch就可以調用。 需要注意的是&#xff0c;pytorch包與電腦配置、python版本有很大關系&#xff0c;一定要仔細閱讀安裝要求、找到…

DeepSeek 賦能數字人直播帶貨:技術革新重塑電商營銷新生態

目錄 一、引言二、DeepSeek 技術探秘2.1 DeepSeek 技術原理剖析2.2 DeepSeek 與其他大模型對比優勢 三、數字人直播帶貨現狀洞察3.1 數字人直播帶貨發展歷程回顧3.2 市場規模與增長趨勢分析3.3 現存問題與挑戰探討 四、DeepSeek 在數字人直播帶貨中的應用實例4.1 交個朋友的成功…