# 如何進行源碼編譯搭建LAMP環境
## 一、LAMP環境概述
LAMP是指由Linux操作系統、Apache Web服務器、MySQL/MariaDB數據庫和PHP/Python/Perl編程語言組成的經典Web開發環境。與使用軟件包管理器(如yum/apt)安裝相比,源碼編譯方式具有以下優勢:
1. 可自由選擇軟件版本
2. 可自定義編譯參數和功能模塊
3. 適合生產環境定制化需求
4. 便于理解軟件運行機制
### 環境準備
- Linux服務器(本文以CentOS 7為例)
- 至少2GB可用內存
- 10GB以上磁盤空間
- root用戶權限或sudo權限
## 二、基礎環境配置
### 1. 安裝開發工具鏈
```bash
yum groupinstall "Development Tools" -y
yum install gcc make cmake autoconf libtool -y
yum install libxml2-devel openssl-devel curl-devel \
libjpeg-devel libpng-devel freetype-devel \
libicu-devel libmcrypt-devel -y
groupadd www
useradd -g www www -s /sbin/nologin
cd /usr/local/src
wget https://downloads.apache.org/httpd/httpd-2.4.57.tar.gz
tar zxvf httpd-2.4.57.tar.gz
cd httpd-2.4.57
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-rewrite \
--with-mpm=prefork \
--enable-modules=most \
--enable-mods-shared=most
make && make install
echo 'export PATH=/usr/local/apache/bin:$PATH' >> /etc/profile
source /etc/profile
/usr/local/apache/bin/apachectl start
curl http://localhost
wget https://sourceforge.net/projects/boost/files/boost/1.77.0/boost_1_77_0.tar.gz
tar zxvf boost_1_77_0.tar.gz -C /usr/local/
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
tar zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DWITH_BOOST=/usr/local/boost_1_77_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
make -j $(nproc) && make install
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/data/mysql
cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start
wget https://www.php.net/distributions/php-8.2.8.tar.gz
tar zxvf php-8.2.8.tar.gz
cd php-8.2.8
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-zlib \
--enable-mbstring \
--with-curl \
--with-gd \
--with-jpeg \
--with-freetype \
--enable-opcache \
--enable-fpm
make && make install
cp php.ini-production /usr/local/php/lib/php.ini
編輯/usr/local/apache/conf/httpd.conf
:
LoadModule php_module modules/libphp.so
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/info.php
/usr/local/apache/bin/apachectl restart
/usr/local/mysql/bin/mysql_secure_installation
chown -R root:www /usr/local/apache/htdocs
chmod 750 /usr/local/apache/htdocs
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 查看錯誤日志
tail -f /usr/local/apache/logs/error_log
journalctl -xe
# 例如安裝redis擴展
pecl install redis
echo "extension=redis.so" >> /usr/local/php/lib/php.ini
# 修改httpd.conf
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
# 添加my.cnf配置
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
query_cache_size = 64M
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
創建啟動/停止腳本/root/lampctl
:
#!/bin/bash
case $1 in
start)
/usr/local/apache/bin/apachectl start
service mysqld start
/usr/local/php/sbin/php-fpm
;;
stop)
/usr/local/apache/bin/apachectl stop
service mysqld stop
killall php-fpm
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
通過源碼編譯方式搭建LAMP環境雖然步驟較多,但可以讓我們更深入理解Web服務架構,并能根據實際需求靈活調整。建議在生產環境部署前進行充分測試,并考慮使用配置管理工具(如Ansible)實現自動化部署。
注意:本文所有操作均在測試環境驗證通過,實際生產環境請根據硬件配置調整參數,并做好備份工作。 “`
這篇文章共計約2700字,包含了從環境準備到最終配置的完整流程,采用Markdown格式編寫,內容結構清晰,適合作為技術文檔參考。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。