如何在CentOS上定制LAMP环境
LAMP(Linux + Apache + MySQL/MariaDB + PHP)是经典的开源Web环境,适用于搭建动态网站、Web应用等。以下是在CentOS系统上定制LAMP环境的详细步骤,涵盖基础安装、个性化配置及优化建议。
在开始前,确保系统软件包为最新版本,并安装编译工具及依赖库,避免后续安装出现问题。
# 更新系统所有软件包
sudo yum update -y
# 安装开发工具组(包含gcc、make等编译工具)
sudo yum groupinstall "Development Tools" -y
# 安装常用依赖库(用于Apache、MySQL、PHP的编译与运行)
sudo yum install -y apr-devel apr-util-devel pcre-devel openssl-devel libxml2-devel bzip2-devel libcurl-devel
Apache是LAMP环境的Web服务器组件,负责处理HTTP请求。可根据需求选择YUM包管理器安装(快速便捷)或源码编译安装(自定义功能)。
# 安装Apache
sudo yum install httpd -y
# 启动Apache服务并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
# 检查Apache状态(确保显示"active (running)")
sudo systemctl status httpd
验证安装:在浏览器访问http://<服务器IP>,若看到Apache默认欢迎页面(如“Testing 123…”),则说明安装成功。
若需要最新版本或特定功能(如调整MPM模式),可选择源码编译:
# 安装依赖包
sudo yum install -y gcc gcc-c++ make cmake ncurses-devel libxml2-devel perl-devel libcurl-devel openssl-devel
# 下载Apache源码(以2.4.54为例)
cd /usr/local/src
wget https://www.apache.org/dyn/closer.cgi?action=download&filename=httpd/httpd-2.4.54.tar.gz
tar -xzvf httpd-2.4.54.tar.gz
cd httpd-2.4.54
# 配置编译选项(指定安装路径、启用必要模块)
./configure --prefix=/usr/local/apache2 \
--sysconfdir=/usr/local/apache2/etc \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-ssl=shared \
--enable-rewrite=shared \
--with-mpm=prefork # 可选:prefork(多进程)、worker(多线程)、event(事件驱动)
# 编译并安装
make
sudo make install
# 创建符号链接(方便命令调用)
sudo ln -s /usr/local/apache2/bin/apachectl /usr/sbin/apachectl
# 启动Apache并设置开机自启
sudo apachectl start
sudo systemctl enable apache2 # 需创建systemd服务文件(略)
配置防火墙:允许HTTP(80端口)流量通过:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
MySQL/MariaDB是LAMP环境的数据库组件,用于存储网站数据。推荐使用YUM仓库安装(简单稳定),若需要最新版本可选择官方YUM仓库。
# 安装MariaDB Server
sudo yum install mariadb-server mariadb -y
# 启动MariaDB并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 运行安全配置脚本(设置root密码、移除匿名用户等)
sudo mysql_secure_installation
验证安装:登录MariaDB:
mysql -u root -p
输入密码后,执行SHOW DATABASES;,若显示系统数据库(如information_schema),则说明成功。
若需使用MySQL官方版本,需先添加YUM仓库:
# 下载MySQL YUM仓库(以MySQL 8.0为例)
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL Server
sudo yum install mysql-community-server -y
# 启动MySQL并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 获取临时root密码(查看日志)
sudo grep 'temporary password' /var/log/mysqld.log
# 运行安全配置脚本(同MariaDB)
sudo mysql_secure_installation
PHP是LAMP环境的脚本语言组件,负责处理动态内容。可根据需求选择YUM包管理器安装(快速)或源码编译安装(自定义功能)。
# 安装EPEL仓库(提供额外软件包)
sudo yum install epel-release -y
# 安装Remi仓库(提供最新PHP版本)
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
# 启用Remi仓库中的PHP 7.4(可根据需求更换版本,如7.3、8.0)
sudo yum-config-manager --enable remi-php74
# 安装PHP及常用扩展(mysqlnd用于MySQL连接、gd用于图片处理、mbstring用于多字节字符串等)
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml php-zip -y
# 启动PHP-FPM(若使用PHP-FPM)并设置开机自启
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
验证PHP安装:创建info.php文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
在浏览器访问http://<服务器IP>/info.php,若看到PHP信息页面,则说明安装成功。
若需要特定PHP版本或扩展,可选择源码编译:
# 安装依赖包
sudo yum groupinstall "Development Tools" -y
sudo yum install -y openssl-devel bzip2-devel libcurl-devel libxml2-devel mysql-devel
# 下载PHP源码(以7.4.33为例)
cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33
# 配置编译选项(启用必要模块,如pdo_mysql、gd等)
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mbstring \
--enable-zip \
--enable-curl \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-gd \
--with-libxml-dir=/usr/include/libxml2
# 编译并安装
make
sudo make install
# 复制配置文件
sudo cp sapi/fpm/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp sapi/fpm/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# 启动PHP-FPM并设置开机自启
sudo /usr/local/php/sbin/php-fpm
sudo systemctl enable php-fpm # 需创建systemd服务文件(略)
若使用Apache作为Web服务器,需配置其支持PHP解析。
编辑Apache主配置文件(/etc/httpd/conf/httpd.conf),添加以下内容:
# 加载PHP模块(模块路径可能因安装方式不同而变化)
LoadModule php7_module modules/libphp7.so # YUM安装路径
# LoadModule php7_module /usr/local/php/libphp7.so # 源码编译路径
# 添加PHP文件类型处理
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# 设置默认DocumentRoot(确保目录存在且有权限)
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All # 允许.htaccess文件覆盖配置
Require all granted
</Directory>
重启Apache:
sudo systemctl restart httpd
根据实际需求,可进行以下定制:
若需要托管多个网站,可创建虚拟主机配置文件:
# 创建网站目录
sudo mkdir -p /var/www/{site1,site2}
sudo chown -R apache:apache /var/www/ # 设置目录所有者(Apache用户)
# 新建虚拟主机配置文件(/etc/httpd/conf.d/site1.conf)
sudo vi /etc/httpd/conf.d/site1.conf
添加以下内容(以site1.example.com为例):
<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot "/var/www/site1"
ErrorLog "/var/log/httpd/site1_error.log"
CustomLog "/var/log/httpd/site1_access.log" combined
<Directory "/var/www/site1">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
重启Apache:
sudo systemctl restart httpd
验证:在浏览器访问http://site1.example.com,若显示对应站点内容,则说明成功。
编辑PHP配置文件(/etc/php.ini或/usr/local/php/etc/php.ini),调整以下参数:
; 设置时区(如Asia/Shanghai)
date.timezone = Asia/Shanghai
; 调整上传文件大小限制(默认2M,可根据需求改为100M)
upload_max_filesize = 100M
post_max_size = 100M
; 开启错误报告(开发环境使用,生产环境建议关闭)
display_errors = On
error_reporting = E_ALL
重启PHP-FPM与Apache:
sudo systemctl restart php-fpm
sudo systemctl restart httpd
LAMP环境部署后,需进行基本安全设置,防止未授权访问:
若SELinux处于Enforcing模式,需调整策略允许Apache访问网站目录:
# 临时设置为Permissive模式(测试用)
sudo setenforce 0
# 永久修改SELinux模式(需编辑/etc/selinux/config文件)
sudo vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=permissive,然后重启系统。
确保防火墙仅允许必要流量(HTTP、HTTPS):
# 允许HTTP(80端口)和HTTPS(443端口)
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
创建info.php文件验证环境是否正常:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
在浏览器访问http://<服务器IP>/info.php,若看到包含PHP版本、模块信息的页面,则说明LAMP环境定制成功。
通过以上步骤,你可在CentOS系统上定制符合需求的LAMP环境。根据实际项目需求,可进一步调整Apache虚拟主机、PHP扩展或MySQL配置,优化环境性能与安全性。