源代码部署 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;的基本操作…