源代碼部署 LAMP 架構

源代碼部署 LAMP 架構

(Linux + Apache + MySQL + PHP)

一、LAMP 架構概述

LAMP 是一套經典的開源 Web 服務架構,通過源代碼安裝可實現高度定制化,適用于對軟件版本、功能模塊有特定需求的場景。本指南基于 CentOS 7 系統,詳細介紹通過源代碼編譯安裝 Apache、MySQL、PHP 及相關依賴的完整流程。

二、環境準備

1. 基礎環境配置

關閉防火墻和 SELinux
# 停止并禁用防火墻systemctl stop firewalldsystemctl disable firewalld# 臨時關閉 SELinuxsetenforce 0
配置 YUM 源(阿里云)
# 替換系統默認 YUM 源為阿里云源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 清理緩存并生成新緩存yum clean allyum makecache
安裝基礎工具和依賴包
# 安裝編譯工具、依賴庫等yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel

上傳apr,apr-utils,httpd,mysql,php的源碼包

三、安裝依賴組件:APR 與 APR-util

APR(Apache Portable Runtime)是 Apache 的跨平臺運行時庫,必須優先安裝。

1. 安裝 APR

解壓源碼包
# 源碼包上傳至當前目錄tar -xzvf apr-1.7.0.tar.gzcd apr-1.7.0/
預處理配置文件
# 修復編譯沖突(刪除 configure 中的冗余命令)sed -i '/$RM "$cfgfile"/d' configure
配置與編譯安裝
# 指定安裝路徑為 /usr/local/apr./configure --prefix=/usr/local/apr# 編譯源碼make# 安裝到指定目錄---編譯安裝make install

2. 安裝 APR-util

解壓源碼包
tar -xzvf apr-util-1.6.1.tar.gzcd apr-util-1.6.1/
配置與編譯安裝(關聯 APR)
# 指定安裝路徑,并關聯已安裝的 APR./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr# 編譯源碼make# 安裝到指定目錄make install

四、安裝 Apache(httpd)

1. 解壓源碼包

tar -xzvf httpd-2.4.54.tar.gzcd httpd-2.4.54/

2. 配置編譯參數

./configure \--prefix=/usr/local/apache \ # Apache 安裝路徑--sysconfdir=/etc/httpd24 \ # 配置文件存放路徑--enable-so \ # 啟用動態模塊加載--enable-ssl \ # 啟用 SSL 支持(HTTPS)--enable-cgi \ # 啟用 CGI 支持--enable-rewrite \ # 啟用 URL 重寫模塊--with-zlib \ # 支持 zlib 壓縮--with-pcre \ # 支持 PCRE 正則庫--with-apr=/usr/local/apr \ # 關聯 APR--with-apr-util=/usr/local/apr-util/ \ # 關聯 APR-util--enable-modules=most \ # 啟用大部分模塊--enable-mpms-shared=all \ # 支持多進程模型--with-mpm=prefork # 默認使用 prefork 進程模型

3. 編譯與安裝

# 編譯源碼make# 安裝到指定目錄make install

4. 啟動 Apache 服務

# 通過絕對路徑啟動服務/usr/local/apache/bin/apachectl start# 驗證服務狀態(無報錯即啟動成功)ps -ef | grep httpd

五、安裝 MySQL(MariaDB)

1. 創建 MySQL 系統用戶

# 創建不可登錄的系統用戶(用于運行 MySQL 服務)useradd -r -M -s /sbin/nologin mysql# 驗證用戶創建id mysql # 輸出類似:uid=997(mysql) gid=995(mysql) 組=995(mysql)

2. 安裝 MySQL 依賴

yum -y install libncurses* libaio

3. 解壓與配置安裝路徑

# 解壓源碼包到 /usr/local/tar -xzvf /opt/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local/# 創建軟鏈接(簡化路徑引用)ln -s /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql

4. 配置權限與數據目錄

# 設置安裝目錄權限為 mysql 用戶chown -R mysql.mysql /usr/local/mysql# 創建數據存儲目錄并授權mkdir /opt/datachown -R mysql.mysql /opt/data/

5. 初始化數據庫

# 初始化數據庫(無密碼模式)/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/

6. 配置頭文件軟鏈接(編譯依賴)

# 為 MySQL 頭文件創建軟鏈接,方便其他程序(如 PHP)調用ln -s /usr/local/mysql/include/ /usr/local/include/mysql# 更新系統庫緩存ldconfig

7. 配置 MySQL 核心配置文件

# 編輯 /etc/my.cnf(清空原有內容后添加以下配置)vim /etc/my.cnf

添加內容:

[mysqld]basedir = /usr/local/mysql # MySQL 安裝路徑datadir = /opt/data # 數據存儲路徑socket = /tmp/mysql.sock # 連接套接字路徑port = 3306 # 服務端口pid-file = /opt/data/mysql.pid # PID 文件路徑user = mysql # 運行用戶skip-name-resolve # 跳過主機名解析(提升性能)

進入mysql服務腳本修改路徑

vim /usr/local/mysql/support-files/mysql.server#查找basedir,添加路徑
basedir=/usr/local/mysql
datadir=/opt/data

8. 配置 MySQL 服務管理(systemd)

# 創建 systemd 服務配置文件vim /usr/lib/systemd/system/mysqld.service

添加內容:

[Unit]Description=mysql server daemonAfter=network.target[Service]Type=forkingExecStart=/usr/local/mysql/support-files/mysql.server startExecStop=/usr/local/mysql/support-files/mysql.server stopExecReload=/bin/kill -HUP $MAINPID[Install]WantedBy=multi-user.target

9. 啟動 MySQL 并設置自啟

# 重新加載 systemd 配置systemctl daemon-reload# 啟動服務并設置開機自啟systemctl enable --now mysqld# 驗證服務狀態systemctl status mysqld # 顯示 active (running) 即成功

10. 設置 MySQL root 密碼

# 無密碼登錄 MySQL(輸密碼直接回車)/usr/local/mysql/bin/mysql -uroot -p# 執行 SQL 設置密碼(在 MySQL 交互界面中)set password=password('123456');exit; # 退出

11. 配置 MySQL 環境變量

# 添加 MySQL 命令路徑到系統環境變量vim /etc/profile最后添加export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH# 使配置立即生效source /etc/profile# 驗證:直接輸入 mysql 命令測試mysql -uroot -p # 輸入密碼 123456 可登錄即生效

六、安裝 PHP

1. 安裝 PHP 依賴庫

# 安裝 GD 庫、XML、curl 等依賴(用于圖片處理、網絡請求等功能)yum -y install \libjpeg libjpeg-devel \libpng libpng-devel \freetype freetype-devel \libxml2 libxml2-devel \zlib zlib-devel \curl curl-devel

2. 解壓 PHP 源碼包

tar -xjvf php-7.1.10.tar.bz2cd php-7.1.10/

3. 配置 PHP 編譯參數

./configure \--prefix=/usr/local/php \ # PHP 安裝路徑--with-apxs2=/usr/local/apache/bin/apxs \ # 關聯 Apache 的 apxs 模塊(用于 Apache 加載 PHP)--with-mysql-sock=/tmp/mysql.sock \ # 關聯 MySQL 套接字--with-mysqli \ # 啟用 MySQLi 擴展(數據庫連接)--with-zlib \ # 支持 zlib 壓縮--with-curl \ # 啟用 curl 擴展--with-gd \ # 啟用 GD 庫(圖片處理)--with-jpeg-dir \ # 關聯 jpeg 庫--with-png-dir \ # 關聯 png 庫--with-freetype-dir \ # 關聯 freetype 庫--with-openssl \ # 啟用 OpenSSL 支持--enable-mbstring \ # 啟用多字節字符串(支持中文)--enable-xml \ # 啟用 XML 擴展--enable-session \ # 啟用會話支持--enable-ftp \ # 啟用 FTP 擴展--enable-pdo \ # 啟用 PDO 擴展--enable-tokenizer \ # 啟用令牌解析器--enable-zip # 啟用 ZIP 壓縮支持

4. 編譯與安裝 PHP

# 編譯源碼make# 安裝到指定目錄make install

5. 配置 PHP 核心配置文件

# 復制開發環境配置模板(測試環境用php.ini-development;)cp php.ini-development /usr/local/php/lib/php.ini# 編輯配置文件,設置時區vim /usr/local/php/lib/php.ini# 查找并修改:date.timezone = Asia/Shanghai # 設置時區為上海

七、配置 Apache 支持 PHP

1. 修改 Apache 配置文件

# 編輯 Apache 主配置文件vim /etc/httpd24/httpd.conf
配置默認索引頁(添加 index.php)

找到 <IfModule dir_module> 區塊,修改為:

<IfModule dir_module>DirectoryIndex index.html index.php # 優先加載 index.php</IfModule>
添加 PHP 類型支持

在配置文件末尾添加:

# 識別 .php 和 .phps 文件類型AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps

2. 創建 PHP 測試頁面

# 進入 Apache 網站根目錄cd /usr/local/apache/htdocs/# 刪除默認頁面(可選)rm -f index.html# 創建測試頁面vim index.php

添加內容:

<?phpphpinfo(); // 輸出 PHP 環境信息?>

3. 重啟 Apache 服務

# 停止并重啟服務/usr/local/apache/bin/apachectl stop/usr/local/apache/bin/apachectl start

八、驗證 LAMP 架構

  1. 訪問 PHP 信息頁:在瀏覽器中輸入服務器 IP(如 http://192.168.100.xxx),應顯示 PHP 環境信息頁面,確認 PHP 模塊(如 mysqli、gd、curl)加載正常。

九、總結

通過源代碼安裝 LAMP 架構的核心優勢是高度定制化,可按需選擇軟件版本、啟用 / 禁用模塊,適合生產環境或特殊需求場景。關鍵步驟包括:

  • 依賴組件(APR、APR-util)的預安裝;
  • 各組件的編譯參數配置(需正確關聯依賴路徑);
  • 服務管理與環境變量配置(確保系統可識別命令);
  • Apache 與 PHP 的聯動配置(通過 apxs 模塊和類型映射)。

實際使用中需注意權限管理、路徑一致性及安全配置(如生產環境建議使用 php.ini-production 模板)。

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

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

相關文章

GO環境變量中GO111MODULE到底是干啥的?

查看GO111MODULE變量GO111MODULE的作用GO111MODULE的案例演示 一&#xff0c;查看GO111MODULE變量 ]# go env GO111MODULE 或者 ]# go env | grep GO111MODULE二&#xff0c;GO111MODULE的作用 auto : 自動判斷機制 當項目位于 $GOPATH/src 目錄外且包含 go.mod 文件時&…

在線培訓機構如何降低培訓視頻被盜錄的風險

每一節精心錄制的培訓視頻&#xff0c;都凝聚著講師的心血與機構的巨大投入。然而&#xff0c;只需一個簡單的錄屏軟件&#xff0c;這一切都可能被輕易竊取。一旦被盜取&#xff0c;不但會損失經濟利益&#xff0c;還可能會影響機構的聲譽。那么&#xff0c;在線培訓機構如何降…

Docker:安裝配置

目錄一、卸載舊版本二、配置Docker的yum庫三、安裝Docker3.1 在線安裝方式3.2 離線安裝方式四、配置阿里云鏡像加速【選配】五、Docker服務相關命令六、導出和導入鏡像官網 一、卸載舊版本 首先如果系統中已經存在舊版本的Docker&#xff0c;則先卸載&#xff1a; yum remov…

RabbitMQ:SpringAMQP 入門案例

目錄一、概述二、基礎配置三、生產者四、消費者一、概述 這是一篇Java集成RabbitMQ的入門案例&#xff0c;在這里我們做一個小案例&#xff0c;來體會一下RabbitMQ的魅力。 首先我們要做的就是創建一個生產者一個消費者&#xff1a; 生產者直接向RabbitMQ的隊列&#xff08;Q…

Ubuntu 下面安裝搜狗輸入法debug記錄

目錄0. 整體安裝流程1. 在鍵盤輸入法系統中&#xff0c;沒有“fcitx”選項解決方法0. 整體安裝流程 詳細的Ubuntu搜狗輸入法安裝指南請參考官方教程&#xff1a;Ubuntu搜狗輸入法安裝指南 1. 在鍵盤輸入法系統中&#xff0c;沒有“fcitx”選項 即使是安裝完 fcitx&#xff0…

Jenkins+GitLab在CentOS7上的自動化部署方案

最近在安裝jenkins實現微服務的自動發布&#xff0c;記錄配置過程以免再次踩坑。 Centos7環境準備 jenkins、gitlab配置&#xff0c;全程使用ftpuser普通用戶操作 &#xff08;1&#xff09;安裝好jdk并配置好環境變量 安裝路徑/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.…

打開或者安裝Navicat時出現Missing required library libcurl.dll,126報錯解決方法(libmysql_e.dll等)

提示 Missing required library libcurl.dll 出現原因是由于Navicat安裝目錄下libcurl.dll可能不能用了&#xff0c;下載該文件放到Navicat安裝目錄下即可。下載地址&#xff1a;libcurl.dll — download free for Windows 下載解壓包里只有個libcurl.dll 提示 Missing requir…

基于SpringBoot的流浪動物領養管理系統【2026最新】

作者&#xff1a;計算機學姐 開發技術&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源碼”。 專欄推薦&#xff1a;前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄&#xff1a;…

Qt實現TabWidget通過addTab函數添加的頁,頁內控件自適應窗口大小

前言&#xff1a;因為項目的要求&#xff0c;需要把幾個不同類型功能的界面集成在同一個窗口中&#xff0c;方便用戶不切換窗口&#xff0c;也能快捷的操作不同類型的功能。我首先想到的是通過選項卡方式&#xff0c;讓幾個類別的功能界面通過不同選項卡進行切換&#xff0c;這…

代碼隨想錄算法訓練營27天 | ??56. 合并區間、738.單調遞增的數字、968.監控二叉樹(提高)

題目鏈接&#xff1a;56. 合并區間、738.單調遞增的數字、968.監控二叉樹 文章鏈接&#xff1a;代碼隨想錄 貪心算法 1. 合并區間 &#xff08;待更新...&#xff09; class Solution { private:static bool cmp(const vector<int>& a, const vector<int>&…

從 H.264/H.265 到 H.266:RTSP播放器的跨代際演進

引言&#xff1a;H.266與實時視頻的交匯點 視頻編解碼的發展歷程&#xff0c;始終是 帶寬效率與視覺體驗的博弈。從 H.264 的普及&#xff0c;到 H.265/HEVC 的深化應用&#xff0c;每一次標準迭代&#xff0c;都在推動視頻向更高分辨率、更高幀率、更復雜場景的應用邁進。而 …

oc-mirror plugin v2 錯誤could not establish the destination for the release i

openshift 4.19使用的鏡像倉庫為harbor. 運行disk to registry時出現下面的錯誤&#xff1a; 2025/08/19 17:51:13 [ERROR] : [Executor] [release collector] could not establish the destination for the release image 備注&#xff1a; 我沒有賬戶&#xff0c;無法打開…

Android auncher3實現簡單的負一屏功能

Android launcher3實現簡單的負一屏功能 1.前言&#xff1a; 之前實現過Launcher3從湊提修改成單層&#xff0c;今天來講解一下如何實現一個簡單的負一屏功能&#xff0c;涉及的類如下&#xff0c;直接看代碼。 2.NegativeScreenAdapter&#xff1a; package com.example.ne…

跨網閘數據庫同步:在物理隔離中架起安全的數據橋梁

作者:DeepSeek-R1 | 日期:2025年8月17日 引言 在等保2.0和分級保護政策的要求下,高密級網絡(如政務內網、金融核心網)必須與低密級網絡(如互聯網)物理隔離。但業務又要求數據跨網流動(如市民在線提交申請、分支機構數據回傳)。如何解決這一矛盾?雙向網閘與單向光閘成…

【Android】一文詳解Android里的AOP編程

一文詳解Android里的AOP編程 1. 基于 AspectJ&#xff08;編譯期/打包期織入&#xff09; 思路&#xff1a;用 AspectJ 編譯器在 編譯階段 或 Gradle Transform 階段&#xff0c;把切面邏輯織入 class / bytecode。 特點&#xff1a; 能實現類似 Spring AOP 的注解切面&#…

AI+預測3D新模型百十個定位預測+膽碼預測+去和尾2025年8月21日第167彈

從今天開始&#xff0c;咱們還是暫時基于舊的模型進行預測&#xff0c;好了&#xff0c;廢話不多說&#xff0c;按照老辦法&#xff0c;重點8-9碼定位&#xff0c;配合三膽下1或下2&#xff0c;殺1-2個和尾&#xff0c;再殺4-5個和值&#xff0c;可以做到100-300注左右。(1)定位…

機器學習【十】neural network

系統梳理了機器學習與神經網絡的基礎知識&#xff0c;涵蓋理論、核心概念及代碼實踐。理論部分包括線性模型&#xff08;向量表示、廣義線性模型&#xff09;、分類與回歸的區別、梯度下降&#xff08;批量/隨機/小批量&#xff09;、激活函數&#xff08;Sigmoid、ReLU等&…

如何用算力魔方4060安裝PaddleOCR MCP 服務器

在當今數字化快速發展的時代&#xff0c;OCR&#xff08;光學字符識別&#xff09;技術已經成為從圖像中提取文本信息的重要工具。無論是在自動化辦公、智能文檔處理還是在內容創作領域&#xff0c;OCR 技術的應用都極大地提高了工作效率和準確性。本文將詳細介紹如何利用算力魔…

Azure的遷移專業服務是怎么提供的

好的&#xff0c;這是一個非常實際的問題。Azure的遷移專業服務&#xff08;Professional Services for Migration&#xff09;并非一個單一的“產品”&#xff0c;而是一個由微軟及其龐大的合作伙伴生態系統共同提供的、基于成熟方法論的綜合服務框架。其提供方式可以概括為&a…

Seaborn數據可視化實戰:Seaborn入門-環境搭建與基礎操作

Seaborn環境搭建與配置 學習目標 本課程將指導學員如何在不同的操作系統&#xff08;Windows, macOS, Linux&#xff09;上安裝Seaborn庫&#xff0c;以及如何配置Python環境&#xff0c;包括使用Jupyter Notebook和Spyder等集成開發環境&#xff08;IDE&#xff09;的基本操作…