如何进行源码编译搭建LAMP环境

发布时间:2021-12-10 17:48:07 作者:柒染
来源:亿速云 阅读:130
# 如何进行源码编译搭建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

2. 安装依赖库

yum install libxml2-devel openssl-devel curl-devel \
libjpeg-devel libpng-devel freetype-devel \
libicu-devel libmcrypt-devel -y

3. 创建专用用户(安全考虑)

groupadd www
useradd -g www www -s /sbin/nologin

三、Apache源码编译安装

1. 下载源码包

cd /usr/local/src
wget https://downloads.apache.org/httpd/httpd-2.4.57.tar.gz
tar zxvf httpd-2.4.57.tar.gz

2. 编译安装

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

3. 配置环境变量

echo 'export PATH=/usr/local/apache/bin:$PATH' >> /etc/profile
source /etc/profile

4. 启动测试

/usr/local/apache/bin/apachectl start
curl http://localhost

四、MySQL源码编译安装

1. 下载Boost库(MySQL 8+需要)

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/

2. 下载MySQL源码

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
tar zxvf mysql-8.0.33.tar.gz

3. 编译安装

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

4. 初始化数据库

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

5. 启动服务

cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start

五、PHP源码编译安装

1. 下载源码包

wget https://www.php.net/distributions/php-8.2.8.tar.gz
tar zxvf php-8.2.8.tar.gz

2. 编译安装

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

3. 配置PHP.ini

cp php.ini-production /usr/local/php/lib/php.ini

六、环境整合配置

1. 配置Apache支持PHP

编辑/usr/local/apache/conf/httpd.conf

LoadModule php_module modules/libphp.so
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html

2. 创建测试文件

echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/info.php

3. 重启服务

/usr/local/apache/bin/apachectl restart

七、安全加固措施

1. MySQL安全初始化

/usr/local/mysql/bin/mysql_secure_installation

2. 文件权限控制

chown -R root:www /usr/local/apache/htdocs
chmod 750 /usr/local/apache/htdocs

3. 防火墙配置

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

八、常见问题解决

1. 编译错误处理

2. 服务启动失败

# 查看错误日志
tail -f /usr/local/apache/logs/error_log
journalctl -xe

3. PHP扩展安装

# 例如安装redis扩展
pecl install redis
echo "extension=redis.so" >> /usr/local/php/lib/php.ini

九、性能优化建议

1. Apache调优

# 修改httpd.conf
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 1000

2. MySQL优化

# 添加my.cnf配置
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
query_cache_size = 64M

3. PHP OPcache配置

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格式编写,内容结构清晰,适合作为技术文档参考。

推荐阅读:
  1. 使用docker搭建LAMP环境
  2. LAMP环境搭建小结

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

lamp

上一篇:基于docker-registry 源代码怎样搭建私有环境

下一篇:solr与zookeeper搭建solrcloud分布式索引服务的实例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》