【運維進階】LAMPLNMP 最佳實踐

LAMP/LNMP 最佳實踐

LAMP/LNMP 組件

LAMPLinux+Apache+Mysql/Mariadb+PHP/Python/Perl。

LNMPLinux+Nginx+Mysql/Mariadb+PHP/Python/Perl。

  • Linux:操作系統,提供程序運行基礎。
  • Apache/Nginx:Web 服務器,提供網頁訪問。
  • Mysql/Mariadb:數據庫,提供數據管理。
  • PHP/Python/Perl:腳本語言,提供動態執行生成。

LAMP/LNMP 工作原理

在這里插入圖片描述

  1. 客戶端通過HTTP協議請求web服務器資源

  2. web 服務器根據資源類型進行處理:

    • 靜態資源:web直接把資源返回至客戶端。

    • 動態資源:通過指定的通訊方式將腳本網頁交給后端程序執行。如果運算期間需要連接mysql數據庫,則通過mysql連接器連接mysql。后端程序將運算結果返回給web服務。

  3. web服務將結果返回給客戶端。

PHP 與 WEB 協同工作模式

PHP 與 WEB 協同工作模式:

  1. CGI:Web 進程動態調用相應腳本解釋器執行動態頁面 ,執行完后再釋放。特點:性能差。
  2. Modules:Web 進程動態加載相應模塊執行動態頁面 。特點:性能較好。
  3. FastCGI:后端進程獨立運行管理,通過獨立的網絡套接字接口接收Web進程傳過來的請求。特點:真正地實現前后端分離。適合于性能要求比較高的場景。Web 服務器需要開啟反向代理功能,將請求轉發到后端服務器。

ALL-IN-ONE

以部署 wordpress 應用為例。

實驗環境
主機名IP 地址角色
blog.laoma.cloud10.1.8.10all

以部署 wordpress 應用為例。

部署數據庫
# 安裝服務端
[root@server ~ 21:55:21]# yum install -y mariadb-server# 啟用并啟動服務
[root@server ~ 22:00:25]# systemctl enable --now mariadb# 配置防火墻(一般防火墻是關閉的,不用做此步)
[root@blog ~]# firewall-cmd --permanent --add-service=mysql
[root@blog ~]# firewall-cmd --reload# 加固 MariaDB
[root@server ~ 22:00:42]# mysql_secure_installation
# 交互式提示您進行更改,包括: 
# - 為root帳戶設置密碼,例如123。 
# - 禁止root帳戶從本地主機外部訪問數據庫。
# - 刪除匿名用戶帳戶。
# - 刪除用于演示的test數據庫。 

準備數據庫

[root@server ~ 22:03:48]# mysql -uroot -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 23
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> CREATE DATABASE wordpress;
ERROR 1007 (HY000): Can't create database 'wordpress'; database exists
MariaDB [(none)]> CREATE DATABASE word;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> CREATE USER wp@'%' identified by '123';
Query OK, 0 rows affected (0.01 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'%';
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> exit
Bye
部署 Nginx 服務
[root@server ~ 22:05:37]# yum install -y nginx
[root@server ~ 22:14:51]# echo 'Hello World !' > /usr/share/nginx/html/index.html
[root@server ~ 22:15:04]# systemctl enable nginx --now
部署 PHP 服務
部署 php 服務
[root@server ~ 22:15:09]# yum install -y php php-fpm php-mysqlnd
[root@server ~ 22:16:11]# systemctl enable php-fpm.service --now# 修改配置文件
[root@server ~ 22:16:21]# vim /etc/nginx/default.d/php.conf
location ~ \.php$ {try_files $uri =404;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;
}[root@server ~ 22:17:21]# systemctl restart nginx
準備 php 測試文件
[root@server ~ 22:22:33]# cd /usr/share/nginx/html/
# 準備 index.php
[root@server html 22:25:46]# cat > index.php <<EOF
<?phpecho "<h1>Hello World !</h1>\n";
?>
EOF# 準備 test-mysql.php
[root@server html 22:26:15]# cat > test-mysql.php <<'EOF'
<?php$link=mysqli_connect('10.1.8.10','wp','123');if($link)echo "<h1>Connect Mysql Success !</h1>\n";elseecho "<h1>Connect Mysql Failed !</h1>\n";$link->close();
?>
EOF# 準備 info.php
[root@server html 22:27:07]# cat > info.php <<EOF<?phpphpinfo()
?>
EOF[root@server html 22:27:20]# cp *.php /usr/share/nginx/html
cp: "index.php""/usr/share/nginx/html/index.php" 為同一文件
cp: "info.php""/usr/share/nginx/html/info.php" 為同一文件
cp: "php_test.php""/usr/share/nginx/html/php_test.php" 為同一文件
cp: "test-mysql.php""/usr/share/nginx/html/test-mysql.php" 為同一文件
php 程序測試
[root@server html 22:27:33]# php -f index.php 
<h1>Hello World !</h1>
[root@server html 22:27:46]# php -f test-mysql.php 
<h1>Connect Mysql Success !</h1>
部署 wordpress 應用

下載 wordpress,上傳到家目錄。

# 如果 Web 服務是 Nginx,則解壓文件到/usr/share/nginx/html
[root@server ~ 22:35:00]# rz -E
rz waiting to receive.
[root@server ~ 22:35:13]# unzip -o wordpress-4.9.4-zh_CN.zip -d /usr/share/nginx/html
[root@server ~ 22:35:23]# chown -R nginx:nginx /usr/share/nginx/html/wordpress# php-fpm 進程默認以 apache 用戶身份運行,修改運行用戶為 nginx,并重啟服務
[root@server ~ 22:35:52]# vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
[root@server ~ 22:36:19]# systemctl restart php-fpm

客戶端配置 blog.xiexin.cloud 名稱解析。訪問http://blog.xiexin.cloud/wordpress/。

在這里插入圖片描述

在這里插入圖片描述

如果是nginx服務,則單擊提交后,會出現如下提示:

在這里插入圖片描述

根據提示創建文件,然后單擊現在安裝

在這里插入圖片描述

Standalone

以部署 wordpress 應用為例。

實驗環境
主機名IP 地址角色
www.xiexin.cloud10.1.8.21apache
php.xiexin.cloud10.1.8.22php
db.xiexin.cloud10.1.8.23mariadb
storage.xiexin.cloud10.1.8.24nfs

所有節點關閉防火墻和SELinux。

預配置

所有節點配置名稱解析:

[root@all-node ~ ]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.21 www.xiexin.cloud www
10.1.8.22 php.xiexin.cloud php
10.1.8.23 db.xiexin.cloud db
10.1.8.24 storage.xiexin.cloud storage
部署存儲服務器

由于靜態文件和動態文件沒有分開,所以 Web 服務器和 PHP 服務器都要存一份。實驗環境通過NFS共享提供wordpress應用。

下載 wordpress,上傳到家目錄。

[root@storage ~ 22:57:11]# yum install -y nfs-utils
[root@storage ~ 22:57:18]# mkdir -m 777 /www
[root@storage ~ 22:57:30]# echo '/www 10.1.8.0/24(rw)' > /etc/exports
[root@storage ~ 22:57:38]# systemctl enable nfs-server.service --now# 準備 wordpress資源
[root@storage ~ 22:57:43]# rz -E
rz waiting to receive.
[root@storage ~ 22:58:20]# unzip -o wordpress-4.9.4-zh_CN.zip -d /www/# 準備網頁測試文件
[root@storage ~ 22:58:28]# echo 'Hello World !' > /www/index.html
[root@storage ~ 22:58:54]# cat > /www/index.php <<EOF
> <?php
>   echo "<h1>Hello World !</h1>\n";
> ?>
> EOF[root@storage ~ 22:59:08]#  cat > /www/test-mysql.php <<'EOF'
> <?php
>   $link=mysqli_connect('db.xiexin.cloud','wp','123');
>   if($link)
>     echo "<h1>Connect Mysql Success !</h1>\n";
>   else
>     echo "<h1>Connect Mysql Failed !</h1>\n";
>   $link->close();
> ?>
> EOF[root@storage ~ 22:59:35]#  cat > /www/info.php <<EOF
> <?php
>   phpinfo();
> ?>
> EOF
部署數據庫服務器
[root@db ~ 23:00:42]# yum install -y mariadb-server
[root@db ~ 23:00:47]# systemctl enable mariadb --now# 加固 MariaDB
[root@db ~ 23:01:02]# mysql_secure_installation
# 交互式提示您進行更改,包括: 
# - 為root帳戶設置密碼,例如123。 
# - 禁止root帳戶從本地主機外部訪問數據庫。
# - 刪除匿名用戶帳戶。
# - 刪除用于演示的test數據庫。 # 準備wordpress數據庫和用戶
[root@db ~ 23:01:40]# mysql -uroot -p123
mysql> CREATE DATABASE wordpress;
mysql> CREATE USER wp@'%' identified by 'Laoma@123';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit
部署 Nginx 服務器
# 部署 Nginx 服務
[root@www ~ 23:09:11]# yum install -y nginx
[root@www ~ 23:09:17]# systemctl enable nginx --now# 安裝 nfs 工具
[root@www ~ 23:09:31]# yum install -y nfs-utils# 掛載存儲
[root@www ~ 23:09:36]# echo 'storage.xiexin.cloud:/www /usr/share/nginx/html nfs defaults 0 0' >> /etc/fstab 
[root@www ~ 23:09:39]# mount /usr/share/nginx/html/
[root@www ~ 23:09:49]# df -h/usr/share/nginx/html/
Filesystem            Size  Used Avail Use% Mounted on
storage.xiexin.cloud:/www   64G  3.2G   61G   5% /usr/share/nginx/html
[root@www ~ 23:09:55]# ls /usr/share/nginx/html/
index.html  index.php  info.php  test-mysql.php  wordpress
部署 PHP 服務器

部署 php 服務

[root@php ~ 23:12:09]# yum install -y php php-fpm php-mysqlnd
[root@php ~ 23:12:13]# vim /etc/php-fpm.d/www.conf
#使用;號注釋掉原有listen行
;listen = 127.0.0.1:9000
# 新增listen 監聽所有ip的9000端口
listen = 9000
# 支持監聽特定ip的9000端口,例如listen = 10.1.8.22:9000# 使用;號注釋掉原有 listen.allowed_clients 行
# 允許所有客戶端訪問
;listen.allowed_clients = 127.0.0.1[root@php ~ 23:13:00]# systemctl enable php-fpm.service --now[root@php ~ 23:13:06]# useradd -u 997 -s /sbin/nologin nginx

掛載存儲

# 安裝 nfs 工具
root@php ~ 23:13:14]# yum install -y nfs-utils# 掛載存儲
[root@php ~ 23:15:27]# echo 'storage.xiexin.cloud:/www /www nfs defaults 0 0' >> /etc/fstab 
[root@php ~ 23:15:38]# mkdir /www
[root@php ~ 23:15:44]# mount /www
[root@php ~ 23:15:48]# df -h /www
文件系統                   容量  已用  可用 已用% 掛載點
storage.xiexin.cloud:/www   50G  1.7G   49G    4% /www
[root@php ~ 23:15:52]# ls /www
index.html  index.php  info.php  test-mysql.php  wordpress

php 程序測試

root@php ~ 23:16:21]# php /www/index.php
<h1>Hello World !</h1>
[root@php ~ 23:16:45]# php /www/test-mysql.php
<h1>Connect Mysql Success !</h1>
配置 Nginx 對接 PHP
[root@www ~ 23:09:41]# cat > /etc/nginx/conf.d/vhost-www.conf <<'EOF'
> server {
>     listen 80;
>     server_name www.xiexin.cloud;
> 
>     # 靜態資源處理
>     location / {
>         root /usr/share/nginx/html;
>         index index.html index.htm index.php;
>     }
> 
>     # PHP 請求處理
>     location ~ \.php$ {
>         # 配置 PHP-FPM 監聽的地址和端口
>         fastcgi_pass php.xiexin.cloud:9000;
>         fastcgi_index index.php;
>         # 配置 php 服務器上 wordpress 應用所在位置
>         fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
>         include fastcgi_params;
>     }
> }
> EOF# 重啟服務
[root@www ~ 23:18:39]# systemctl restart nginx

配置存儲權限

# 更改擁有者為nginx對應的uid
[root@storage ~ 22:59:47]# chown -R 997 /www# php-fpm 進程默認以 apache 用戶身份運行,修改運行用戶為 nginx,并重啟服務
[root@php ~ 23:16:49]# useradd -u 997 -s /sbin/nologin nginx
[root@php ~ 23:19:49]# vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
[root@php ~ 23:20:07]# systemctl restart php-fpm
測試應用

客戶端配置 www.xiexin.cloud 名稱解析。訪問http://www.xiexin.cloud/wordpress/。

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

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

相關文章

深入解析 resolv.conf 文件:DNS 配置的核心

/etc/resolv.conf 文件是 Linux 和類 Unix 系統中 DNS 配置的核心組件。它決定了系統如何將域名解析為 IP 地址&#xff0c;這是網絡通信的關鍵環節。本文將深入探討 resolv.conf 文件的核心內容&#xff0c;重點講解 nameserver 指令以及 options 配置中的 attempts 和 rotate…

【LeetCode】102 - 二叉樹的層序遍歷

題目描述 給你二叉樹的根節點 root&#xff0c;返回其節點值的層序遍歷&#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 解題思路 使用 BFS&#xff08;廣度優先搜索&#xff09;的思想&#xff0c;維護當前層的所有節點&#xff0c;逐層處理&#xff1a;…

計算機網絡1-5:計算機網絡的性能指標

目錄 常用性能指標 速率 帶寬 吞吐量 時延 時延帶寬積 ?往返時間 ?利用率 ?丟包率 常用性能指標 性能指標可以從不同的方面來度量計算機網絡的性能 常用的計算機網絡的性能指標有8個:速率、帶寬、吞吐量、時延、時延帶寬積、往返時間、利用率、丟包率 速率 比特…

TDengine IDMP 文檔介紹

TDengine IDMP (Industrial Data Management Platform) 是一款 AI 原生的物聯網、工業數據管理平臺。它通過經典的樹狀層次結構組織傳感器、設備采集的數據&#xff0c;建立數據目錄&#xff0c;對數據提供語境化、標準化的處理、并提供實時分析、可視化、事件管理與報警等功能…

使用 iFLOW-CLI GitHub Action 和 Qwen3-Coder 給 GitHub 倉庫生成幻燈片風格的文檔站點

阿里的心流 https://www.iflow.cn/ 團隊最近開源了一款基于終端的 AI Agent 工具 iFLOW CLI, 目前可以免費使用到強大的 Qwen3-Coder、Kimi K2 等模型。又是一款類似 Anthropics Claude Code 的產品。 iFlow CLI 是一款直接在終端中運行的強大 AI 助手。它能夠無縫分析代碼倉庫…

【2025最新】在 macOS 上構建 Flutter iOS 應用

推薦超級課程&#xff1a; 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰 目錄軟件要求操作系統開發工具文本編輯器或集成開發環境安裝 Flutter SDK下載并安裝 Flutter將 Flutter 添加到您的PATH配置 i…

MySQL 臨時表詳細說明

目錄 MySQL 臨時表詳細說明 1. 定義 2. 核心特性 3. 創建與使用 4. 典型應用場景 5. 生命周期管理 6. 注意事項 7. 性能優化建議 MySQL 臨時表詳細說明 1. 定義 臨時表是存儲在內存或磁盤上的臨時性數據表&#xff0c;僅在當前數據庫會話中存在。會話結束時自動銷毀&a…

深入解析 Apache APISIX 在微服務網關中的性能優化實踐指南

深入解析 Apache APISIX 在微服務網關中的性能優化實踐指南 文章類型&#xff1a;性能優化實踐指南 技術領域&#xff1a;微服務架構 —— API 網關 文章結構&#xff1a;原理深度解析型 目標讀者&#xff1a;有一定微服務與運維基礎的后端開發工程師一、技術背景與應用場景 隨…

【Spring Boot刷新上下文核心流程詳解】

Spring Boot 刷新上下文核心流程詳解 一、前言 在使用 Spring Boot 啟動應用時&#xff0c;控制臺會打印出一大串日志&#xff0c;其中最核心的啟動動作之一就是 刷新上下文&#xff08;refresh&#xff09;。 refresh 方法不僅負責 Bean 的創建與初始化&#xff0c;還涉及監…

關于過濾器(Filter)的學習

過濾器&#xff08;Filter&#xff09;概述 過濾器是 Java Servlet 規范的一部分&#xff0c;用于在請求到達 Servlet 之前或響應返回客戶端之前攔截請求和響應。它可以用于執行各種任務&#xff0c;如請求預處理、響應后處理、身份驗證、日志記錄等。 過濾器的作用 預處理請…

Spring AI 打造智能面試人實戰

Spring AI人工智能面試機器人相關實例 以下是與Spring AI人工智能面試機器人相關的實用案例,涵蓋技術實現、功能設計及常見問題解決方案,按應用場景分類呈現: 技術集成案例 調用Hugging Face模型庫處理專業領域問題 通過Spring Security添加面試會話身份驗證 結合WebSoc…

QT 程序發布時候調用自定義動態庫

1、需要在pro文件中增加下面的內容&#xff1a;QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN\" QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN/lib\" QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN/../lib\"其中lib為動態庫的文件夾名稱&#xff0c;可以根據自己喜好…

SpringBoot學習日記 Day6:解鎖微服務與高效任務處理

一、開篇&#xff1a;從單體到微服務的思維轉變剛開始接觸微服務時&#xff0c;我總習慣把所有功能寫在一個項目里。直到項目越來越臃腫&#xff0c;每次修改都要全量部署&#xff0c;才意識到微服務架構的價值。今天我們就來探索SpringBoot在微服務場景下的強大能力&#xff0…

機械學習--DBSCAN 算法(附實戰案例)

DBSCAN 算法詳解DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff0c;帶噪聲的基于密度的空間聚類應用&#xff09;是一種經典的密度聚類算法&#xff0c;由 Martin Ester 等人于 1996 年提出。與 K-means 等基于距離的聚類算法不同&am…

【昇騰】基于RK3588 arm架構Ubuntu22.04系統上適配Atlas 200I A2加速模塊安裝EP模式下的驅動固件包_20250808

一、背景 1.1 主要的硬件是&#xff1a;1.2 主要的軟件是&#xff1a; RK3588跑操作系統Atlas 200I A2加速模塊作為EP模式關鍵參數版本說明CPU架構aarch64OS版本Ubuntu 22.04.5 LTSkernel版本5.10.198 二、適配 準備固件run包文件&#xff1a;Ascend-hdk-310b-npu-firmware_7.…

如何在 VS Code 中進行 `cherry-pick`

cherry-pick 是 Git 的一個功能&#xff0c;允許你選擇某個 commit 并將其應用到當前分支&#xff0c;而無需合并整個分支。在 VS Code 中&#xff0c;你可以通過 內置的 Git 功能 或 終端 來完成 cherry-pick。方法 1&#xff1a;使用 VS Code 的 Git 圖形界面&#xff08;GUI…

STM32CubeMX(十三)FatFs文件系統(SPI驅動W25Qxx)

目錄 一、知識點 1. 什么是Fatfs文件系統? 2. Fatfs操作系統控制流程 二、實戰操作 1.CubeMX配置 2. 配置串口以及SPI 3. 修改功能映射接口 4. 添加測試代碼 5. 實驗現象 在完成本章之前需要完成一些基礎配置,詳情查看下面的文章。 STM32CubeMX(二)新建工…

【前端后端部署】將前后端項目部署到云服務器

更多筆記在這里? 全棧之路&#xff1a; https://gitee.com/oldbe/notes 【跳轉到】 覺得有用請點個 star &#xff0c;非常感謝&#xff01; 現在AI太強大&#xff0c;開發個人產品的門檻和成本太低了&#xff0c;只要你有好的想法都可以很快速的開發一款產品 1.…

vue如何監聽localstorage

在Vue中監聽localStorage的變化可以通過幾種方式實現&#xff0c;但需要注意的是&#xff0c;localStorage本身不提供原生的事件監聽機制&#xff0c;如DOM元素的MutationObserver。不過&#xff0c;你可以通過一些間接的方法來監聽localStorage的變化。方法1&#xff1a;使用w…

灰狼算法+四模型對比!GWO-CNN-LSTM-Attention系列四模型多變量時序預測

摘要&#xff1a;聚劃算&#xff01;大對比&#xff01;灰狼算法四模型對比&#xff01;GWO-CNN-LSTM-Attention系列四模型多變量時序預測&#xff0c;該代碼特別適合需要橫向對比不同深度學習模型性能的時序預測場景&#xff0c;研究者可通過參數快速適配不同預測需求&#xf…