在CentOS操作系统上编译安装LAMP(Linux、apache、MySQL/MariaDB、PHP)环境,可以提供更高的自由度和定制性,以下是详细的步骤指南:
1、准备工作

关闭防火墙和SELinux:为了简化安装过程,可以先关闭系统的防火墙和SELinux。
- systemctl stop firewalld
- systemctl disable firewalld
- setenforce 0
安装基本的开发工具:确保安装了GCC编译器和其他必要的开发库。
- yum y install gcc gccc++ make autoconf openssldevel expatdevel
2、下载源码包
将所需的源码包下载到服务器的某个目录,例如/lamp
。
- mkdir /lamp
- cd /lamp
- wget http://archive.apache.org/dist/httpd/httpd2.4.37.tar.gz
- wget https://ftp.pcre.org/pub/pcre/pcre8.10.tar.gz
- wget https://downloads.mysql.com/archives/get/p/23/file/mysqlboost5.7.25.tar.gz
- wget https://www.php.net/distributions/php7.1.33.tar.gz
- wget https://www.openssl.org/source/openssl1.1.1i.tar.gz
- wget https://github.com/curl/curl/releases/download/curl7_74_0/curl7.74.0.tar.gz
3、编译安装依赖库
OpenSSL:首先编译并安装最新版本的OpenSSL。

- cd /lamp/openssl1.1.1i
- ./config shared prefix=/usr/local/openssl1.1.1i && make && make install
- ln s /usr/local/openssl1.1.1i/bin/openssl /usr/bin/openssl
- echo "/usr/local/openssl1.1.1i/lib" >> /etc/ld.so.conf
- /sbin/ldconfig
PCRE:编译并安装PCRE库。
- cd /lamp/pcre8.10
- ./configure prefix=/usr/local/pcre && make && make install
其他依赖库:根据需要编译和安装其他库,如libxml2、libmcrypt、zlib、libpng等。
4、编译安装Apache
解压源码包并配置:
- cd /lamp
- tar zxvf httpd2.4.37.tar.gz C /usr/local/src/
- cd /usr/local/src/httpd2.4.37
- ./configure prefix=/usr/local/apache enableso enablerewrite enablecharsetlite enablecgi withpcre=/usr/local/pcre
编译和安装:
- make j 4 && make install
创建系统服务脚本:
- cp /usr/local/apache/bin/apachectl /etc/init.d/apachectl
- chmod +x /etc/init.d/apachectl
- vim /etc/init.d/apachectl
在文件开头添加以下行:
- #!/bin/bash
- # chkconfig: 35 85 21
- # description: Apache is a World Wide Web server
启动Apache服务:
- chkconfig add apachectl
- service apachectl start
5、编译安装MySQL
解压源码包并配置:
- cd /lamp
- tar xf mysqlboost5.7.25.tar.gz
- mv mysqlboost5.7.25 /usr/local/mysql
- cd /usr/local/mysql
- ./scripts/mysql_install_db user=mysql basedir=/usr/local/mysql datadir=/data/mysql
创建用户和组:
- useradd M s /sbin/nologin mysql
- chown R mysql:mysql /usr/local/mysql /data/mysql /var/log/mysqld.log
配置MySQL服务:
- vim /etc/my.cnf
添加以下内容:
- [client]
- port = 3306
- [mysqld]
- basedir = /usr/local/mysql
- datadir = /data/mysql
- log_error = /var/log/mysqld.log
启动MySQL服务:
- chown R mysql:mysql /usr/local/mysql /data/mysql /var/log/mysqld.log
- /usr/local/mysql/supportfiles/mysql.server start
6、编译安装PHP
解压源码包并配置:
- cd /lamp
- tar zxvf php7.1.33.tar.gz C /usr/local/src/
- cd /usr/local/src/php7.1.33
- ./configure prefix=/usr/local/php withopenssl=/usr/local/openssl1.1.1i withpcre=/usr/local/pcre withmysql=/usr/local/mysql withzlib withjpeg withpng enablembstring withcurl=/usr/local/curl7.74.0
编译和安装:
- make j 4 && make install
配置Apache以使用PHP:
- echo "LoadModule php7_module modules/libphp7.so" >> /usr/local/apache/conf/httpd.conf
- echo "AddType application/xhttpdphp .php" >> /usr/local/apache/conf/httpd.conf
- echo "AddType application/xhttpdphpsource .phps" >> /usr/local/apache/conf/httpd.conf
重启Apache服务:
- service apachectl restart
在实际操作过程中,可能还会遇到一些问题,以下是一些常见问题及其解答:
Q&A:
Q1: 编译时提示缺少某些库或头文件怎么办?
A1: 确保已经安装了所有必要的开发包,可以使用yum groupinstall "Development Tools"
一次性安装多个常用开发包,如果仍然缺少某些库,可以尝试手动下载并安装这些库。
Q2: 如何更改Apache的默认运行用户?
A2: 在Apache配置文件中修改User和Group设置,然后重启Apache服务,在httpd.conf
中添加:
- User apache
- Group apache
然后执行service apachectl restart
。
Q3: 如何优化MySQL的性能?
A3: 可以通过调整my.cnf
中的参数来优化MySQL性能,例如增加缓冲区大小、调整连接数等,具体参数可以根据服务器硬件资源和应用需求进行调整。
Q4: PHP扩展模块如何安装?
A4: 在编译PHP时,可以通过withxxx
选项指定要包含的扩展模块,要启用mbstring扩展,可以在配置命令中添加enablembstring
,如果忘记添加,可以重新编译PHP并指定需要的扩展。
Q5: 如何备份和恢复数据库?
A5: 可以使用mysqldump
工具备份数据库,使用mysql
命令恢复数据库,备份数据库的命令为:mysqldump u root p database_name > backup.sql
,恢复数据库的命令为:mysql u root p database_name < backup.sql
。
通过上述步骤,可以在CentOS操作系统上成功编译并安装LAMP环境,这一过程虽然复杂,但能够提供高度定制化的Web服务器环境,适合对性能和安全性有较高要求的应用场景。