全球服务器测评

CentOS 8.1下搭建LAMP环境(Linux + Apache + MySQL + PHP)

CentOS 8.1下搭建LAMP环境(Linux + Apache + MySQL + PHP)这件事,说简单也简单,说麻烦也确实能折腾一整天。尤其是对刚接触服务器部署的人来说,从系统依赖、软件源、版本兼容到服务启动顺序,每一步都可能卡住,但如果把逻辑理顺,其实整套环境的搭建是非常固定的流程。本篇内容尽量按照真实服务器操作的节奏来写,不刻意拆得很碎,也不会把每一个命令单独拎成一小节,而是更贴近实际部署时的连续操作过程。

一、系统初始化与基础环境准备

在正式安装LAMP之前,第一步永远不是直接安装软件,而是把系统基础环境整理干净。CentOS 8.1虽然已经属于比较成熟的发行版本,但默认的软件源结构和模块机制(AppStream)与传统CentOS 7有明显差异,如果不提前处理,很容易在安装Apache或PHP时出现依赖冲突。

通常第一件事是更新系统包:

dnf update -y

在CentOS 8里,dnf已经完全替代了yum,虽然yum还能用,但本质上只是软链接。更新系统的意义不仅仅是拿到最新补丁,更重要的是避免后续安装MySQL或PHP时因为旧库冲突导致编译失败。

更新完成之后,一般会关闭或调整一些不必要的服务,比如防火墙策略或者SELinux。在生产环境中不建议直接关闭SELinux,但在测试环境或者快速部署场景中,可以先设为宽松模式:

setenforce 0

如果想永久修改,需要编辑:

/etc/selinux/config

SELINUX=enforcing 改为 permissivedisabled

防火墙方面,如果你是做Web服务,一般至少要放行80和443端口:

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

这些基础配置看似简单,但很多人后面访问网页失败,其实问题就出在这里。

二、安装Apache(httpd)并完成基础验证

LAMP中的“A”指的就是Apache HTTP Server,在CentOS 8.1中,它的包名是httpd,直接通过dnf安装即可:

dnf install httpd -y

安装完成之后,先不要急着改配置,第一步是直接启动服务并设置开机自启:

systemctl start httpd
systemctl enable httpd

启动之后可以用状态命令确认是否正常运行:

systemctl status httpd

如果看到active (running),说明服务已经正常拉起。

这个时候可以直接在浏览器访问服务器IP,如果能看到Apache默认页面,说明Web层已经打通。很多人卡在这里,其实问题往往不是Apache本身,而是防火墙或者云服务器安全组没有放行80端口。

Apache的主配置文件在:

/etc/httpd/conf/httpd.conf

不过在实际生产环境中,很少直接大改这个文件,通常会在:

/etc/httpd/conf.d/

目录下新增站点配置文件,这样更清晰,也方便后期维护。

比如创建一个简单站点:

vim /etc/httpd/conf.d/test.conf

写入:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName your-domain.com

    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

然后重启Apache:

systemctl restart httpd

到这里,Web服务器这一层已经基本完成。

三、安装MySQL(MariaDB或官方MySQL)

CentOS 8默认提供的是MariaDB,但很多生产环境还是更倾向使用Oracle MySQL。这里以官方MySQL 8.0为例说明,因为兼容性和生态更标准。

首先需要添加MySQL官方YUM源:

dnf install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y

然后安装MySQL:

dnf install mysql-community-server -y

安装完成后启动服务:

systemctl start mysqld
systemctl enable mysqld

MySQL首次启动时会生成一个临时密码,可以通过日志查看:

grep 'temporary password' /var/log/mysqld.log

拿到密码之后,进入安全配置流程:

mysql_secure_installation

这个步骤非常关键,它会依次让你修改root密码、删除匿名用户、禁止远程root登录、删除测试数据库等。很多服务器被入侵,其实就是这个步骤没有认真执行。

登录MySQL:

mysql -u root -p

验证是否正常:

show databases;

如果能看到系统数据库,说明MySQL层已经正常运行。

四、安装PHP及扩展模块

LAMP的核心在于PHP,因为它负责连接Web层和数据库层。

CentOS 8默认PHP版本较旧或者模块不全,因此建议使用Remi源来获取较新版本PHP。

先安装EPEL和Remi源:

dnf install epel-release -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

重置PHP模块并启用指定版本(例如PHP 8.1):

dnf module reset php -y
dnf module enable php:remi-8.1 -y

安装PHP及常用扩展:

dnf install php php-cli php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y

安装完成后检查版本:

php -v

如果输出版本信息,说明PHP已经安装成功。

接下来需要让Apache支持PHP解析,通常通过mod_php或者php-fpm方式,这里推荐php-fpm方式,更稳定。

启动php-fpm:

systemctl start php-fpm
systemctl enable php-fpm

然后编辑Apache配置,让它识别PHP:

vim /etc/httpd/conf.d/php.conf

一般默认会自动生成,如果没有,可以添加:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

重启服务:

systemctl restart httpd
systemctl restart php-fpm

五、LAMP联调测试与排错思路

到了这一步,其实系统已经是一个完整的LAMP环境,但真正关键的是“能不能跑通”。

通常会创建一个测试文件:

echo "<?php phpinfo(); ?>" > /var/www/html/info.php

然后访问:

http://服务器IP/info.php

如果页面正常显示PHP信息,说明Apache + PHP已经打通。

如果打不开,一般排查顺序是:

先看Apache是否运行:

systemctl status httpd

再看端口:

ss -tlnp | grep 80

再检查防火墙:

firewall-cmd --list-all

如果PHP页面直接下载而不是解析,说明PHP模块没有正确绑定Apache。

如果数据库连接失败,一般是PHP扩展缺失,比如php-mysqlnd没装。

六、生产环境优化与常见结构调整

一个真正上线的LAMP环境,不只是“能跑”,而是要稳定、可扩展。

Apache方面通常会调整KeepAlive参数,提高并发性能:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

PHP方面会调整php.ini

memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 30

MySQL方面则需要根据内存调整innodb_buffer_pool_size,一般占总内存的50%到70%更合理。

同时建议把日志单独分离出来,避免/var分区被日志打满。

LAMP环境的本质其实不是“安装四个软件”,而是把三个层打通:Apache负责入口请求,PHP负责逻辑处理,MySQL负责数据存储,中间通过FastCGI或模块方式连接。很多初学者容易陷入“命令复制”的误区,但真正的问题往往出现在系统细节,比如SELinux、端口、模块依赖、PHP版本兼容这些看似不起眼的地方。

在CentOS 8.1上搭建LAMP的过程,其实也是一次对Linux服务管理能力的完整训练,从dnf包管理到systemd服务控制,再到网络端口和权限体系,每一步都是服务器运维的基本功。如果把这一套真正跑通,再去部署WordPress、Laravel或者其他PHP系统,就会轻松很多,因为底层已经稳定了。

未经允许不得转载:全球服务器测评 » CentOS 8.1下搭建LAMP环境(Linux + Apache + MySQL + PHP)