源代碼部署 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 架構
- 訪問 PHP 信息頁:在瀏覽器中輸入服務器 IP(如 http://192.168.100.xxx),應顯示 PHP 環境信息頁面,確認 PHP 模塊(如 mysqli、gd、curl)加載正常。
九、總結
通過源代碼安裝 LAMP 架構的核心優勢是高度定制化,可按需選擇軟件版本、啟用 / 禁用模塊,適合生產環境或特殊需求場景。關鍵步驟包括:
- 依賴組件(APR、APR-util)的預安裝;
- 各組件的編譯參數配置(需正確關聯依賴路徑);
- 服務管理與環境變量配置(確保系統可識別命令);
- Apache 與 PHP 的聯動配置(通過 apxs 模塊和類型映射)。
實際使用中需注意權限管理、路徑一致性及安全配置(如生產環境建議使用 php.ini-production 模板)。