当前位置: 首页 > news >正文

源代码部署 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.dtcms.com/a/339518.html

相关文章:

  • C++小游戏NO.1游戏机
  • 通过分布式系统的视角看Kafka
  • Gemini CLI 最近版本更新说明(v0.1.17~v0.1.22)
  • pyecharts可视化图表K线图_Candlestick:从入门到精通 (进阶版)
  • 技术分享:跨域问题的由来与解决
  • AP6275S AMPAK正基WiFi6模块方案与应用
  • 阀门漏水超声波检测类产品有哪些?
  • 【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)
  • 进程间通信(信号、共享内存)
  • 17.web api 8
  • STM32之beep、多文件、延迟、按键以及呼吸灯
  • 大模型部署基础设施搭建 - LlamaFactory
  • Java优选算法——滑动窗口
  • Fragment重要知识点总结
  • CloudDM 新增支持 GaussDB 与 openGauss:国产数据库管理更高效
  • OpenHarmony 之多模态输入子系统源码深度架构解析
  • Android -登录注册实践技术总结
  • 2025最新华为云国际版注册图文流程-不用绑定海外信用卡注册
  • 延时任务定时器的实现
  • Python 新工具 uv
  • 读《精益数据分析》:营收(Revenue)—— 设计可持续盈利模式
  • 【ASP.NET Core】ASP.NET Core中间件解析
  • sfc_os!SfcQueueValidationRequest函数分析之sfc_os!IsFileInQueue
  • 关闭VSCode Markdown插件在Jupyter Notebook中的自动预览
  • 在linux系统中下载Andconda
  • windows电脑对于dell(戴尔)台式的安装,与创建索引盘,系统迁移到新硬盘
  • Vim 编辑器使用指南
  • Java I/O 模型精讲:从传统BIO到高性能NIO与AIO
  • uv与conda的区别及选择指南
  • Linux软件编程:进程与线程(进程(消息队列、共享内存、信号灯))