在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 expatdevel2、下载源码包
将所需的源码包下载到服务器的某个目录,例如/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.gz3、编译安装依赖库
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/ldconfigPCRE:编译并安装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 start5、编译安装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 start6、编译安装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服务器环境,适合对性能和安全性有较高要求的应用场景。
