源代码部署 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 架构
- 访问 PHP 信息页:在浏览器中输入服务器 IP(如 http://192.168.100.xxx),应显示 PHP 环境信息页面,确认 PHP 模块(如 mysqli、gd、curl)加载正常。
九、总结
通过源代码安装 LAMP 架构的核心优势是高度定制化,可按需选择软件版本、启用 / 禁用模块,适合生产环境或特殊需求场景。关键步骤包括:
- 依赖组件(APR、APR-util)的预安装;
- 各组件的编译参数配置(需正确关联依赖路径);
- 服务管理与环境变量配置(确保系统可识别命令);
- Apache 与 PHP 的联动配置(通过 apxs 模块和类型映射)。
实际使用中需注意权限管理、路径一致性及安全配置(如生产环境建议使用 php.ini-production 模板)。