CentOS 7 LAMP/LNMP 环境搭建:新手也能快速建站
对于希望搭建自己网站的开发者和技术爱好者来说,拥有一个稳定、高效的 Web 服务器环境是第一步。LAMP 和 LNMP 是两种最流行、最经典的技术栈,它们为全球数百万个网站提供了强大的动力。本文将作为一份详细的新手指南,一步步教你如何在 CentOS 7 系统上从零开始搭建 LAMP 或 LNMP 环境,并完成基础配置,让你也能快速拥有属于自己的网站。
什么是 LAMP 和 LNMP?
在开始之前,让我们先简单了解一下这两个术语:
- LAMP 代表 Linux / Apache / MariaDB (或 MySQL) / PHP。这是 Web 开发的“黄金组合”,Apache 作为老牌的 Web 服务器,以其稳定和强大的模块化功能而著-名。
- LNMP 代表 Linux / Nginx / MariaDB (或 MySQL) / PHP。Nginx 是一个后起之秀,以其轻量级、高并发处理能力和低资源消耗而闻名,特别适合处理大量静态内容和高流量网站。
总的来说,两者都能出色地完成任务。Apache 更像一个功能齐全的瑞士军刀,而 Nginx 则更像一把锋利的手术刀,专注于性能和效率。
准备工作
在开始安装之前,请确保你已经准备好以下条件:
- 一台安装了 CentOS 7 的服务器:可以是物理机,也可以是任何云服务商提供的 VPS。
- 拥有 root 或 sudo 权限:本教程中的所有命令都需要管理员权限来执行。
- 一个 SSH 客户端:如 PuTTY, Xshell 或 macOS/Linux 自带的终端,用于连接你的服务器。
让我们开始吧!首先,用你的 SSH 客户端登录到服务器。
Part 1: 搭建 LAMP 环境
第 1 步:更新系统
在安装任何新软件之前,保持系统更新是一个好习惯。这可以确保你获得最新的安全补丁和软件包。
bash
sudo yum update -y
第 2 步:安装并配置 Apache
Apache 在 CentOS 7 上的软件包名为 httpd。
-
安装 Apache:
bash
sudo yum install httpd -y -
启动并设置开机自启:
bash
sudo systemctl start httpd
sudo systemctl enable httpd -
配置防火墙:
CentOS 7 默认使用firewalld防火墙。我们需要允许 HTTP (80) 和 HTTPS (443) 的网络流量。bash
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload -
验证 Apache:
现在,在你的浏览器中输入服务器的 IP 地址 (http://你的服务器IP)。如果看到 Apache 的默认欢迎页面,恭喜你,Apache 已经成功运行了!
第 3 步:安装并保护 MariaDB
MariaDB 是 MySQL 的一个流行分支,并且在 CentOS 7 中是默认的数据库。
-
安装 MariaDB:
bash
sudo yum install mariadb-server -y -
启动并设置开机自启:
bash
sudo systemctl start mariadb
sudo systemctl enable mariadb -
安全加固:
新安装的 MariaDB 需要进行安全配置。运行下面的脚本,它会引导你完成设置 root 密码、删除匿名用户、禁止 root 远程登录等重要步骤。bash
sudo mysql_secure_installation根据提示操作即可,对于所有安全建议,输入
Y并回车通常是最佳选择。
第 4 步:安装 PHP
CentOS 7 的默认源提供的 PHP 版本(5.4)已经非常陈旧。我们强烈建议使用 Remi 仓库来安装较新的 PHP 版本(如 PHP 7.4)。
-
安装 EPEL 和 Remi 仓库:
bash
sudo yum install epel-release -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y -
启用 PHP 7.4:
bash
sudo yum-config-manager --enable remi-php74 -
安装 PHP 及常用模块:
php-mysqlnd是让 PHP 连接 MariaDB 的驱动,其他是一些常用扩展。bash
sudo yum install php php-mysqlnd php-cli php-fpm php-gd php-mbstring php-xml -y -
重启 Apache:
为了让 Apache 能够识别并处理 PHP 文件,需要重启 Apache 服务。bash
sudo systemctl restart httpd
第 5 步:测试 LAMP 环境
所有组件都已安装完毕,让我们来验证一下它们是否协同工作。
-
创建测试文件:
在 Apache 的网站根目录/var/www/html下创建一个info.php文件。bash
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php -
在浏览器中访问:
现在,访问http://你的服务器IP/info.php。如果你看到了一个详细展示 PHP 配置信息的页面,那么你的 LAMP 环境已经搭建成功!
安全提示:
phpinfo()页面会暴露服务器的敏感信息。确认环境正常后,请务必删除此文件:sudo rm /var/www/html/info.php。
Part 2: 搭建 LNMP 环境
如果你更青睐 Nginx 的高性能,可以按照以下步骤搭建 LNMP 环境。
第 1 步:安装并配置 Nginx
-
安装 Nginx:
Nginx 位于 EPEL 仓库中,确保你已经完成了 Part 1 中安装 EPEL 的步骤。bash
sudo yum install nginx -y -
启动并设置开机自启:
bash
sudo systemctl start nginx
sudo systemctl enable nginx -
配置防火墙:
和 Apache 一样,也需要为 Nginx 打开防火墙端口。bash
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload -
验证 Nginx:
在浏览器中访问你的服务器 IP。如果看到 Nginx 的欢迎页面,说明 Nginx 已成功安装。
第 2 步:安装并保护 MariaDB
这一步与 LAMP 环境完全相同。如果你已经完成了 LAMP 的 MariaDB 安装,可以跳过此步。如果尚未安装,请参照 Part 1, 第 3 步。
第 3 步:安装并配置 PHP-FPM
Nginx 不像 Apache 那样内置 PHP 解释器,而是通过 PHP-FPM (FastCGI Process Manager) 来处理 PHP 请求。
-
安装 PHP 和 PHP-FPM:
同样,我们使用 Remi 仓库来安装 PHP 7.4 和相关组件。“`bash
如果尚未安装 Remi 仓库,请先执行
sudo yum install epel-release -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum-config-manager –enable remi-php74安装 PHP-FPM 及常用模块
sudo yum install php php-fpm php-mysqlnd php-cli php-gd php-mbstring php-xml -y
“` -
配置 PHP-FPM:
默认情况下,PHP-FPM 的运行用户是apache。我们需要将其改为nginx。编辑配置文件:
bash
sudo vi /etc/php-fpm.d/www.conf
找到user和group这两行,将apache修改为nginx:
ini
; ...
user = nginx
; ...
group = nginx
; ...
保存并退出 (在vi中按Esc,输入:wq并回车)。 -
启动 PHP-FPM:
bash
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
第 4 步:配置 Nginx 与 PHP-FPM 协同工作
现在,我们需要告诉 Nginx 如何将 PHP 请求发送给 PHP-FPM。
-
编辑 Nginx 配置文件:
bash
sudo vi /etc/nginx/nginx.conf -
修改
server块:
找到默认的server配置部分。- 首先,在
index指令中添加index.php。 - 然后,取消
location ~ \.php$块的注释,并进行修改,确保root指向正确的网站根目录,fastcgi_param的SCRIPT_FILENAME设置正确。
修改后的
server块应该类似这样:
“`nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;# Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; index index.html index.htm index.php; # 添加 index.php location / { } # ... # 将 PHP 脚本传递给 FastCGI 服务器 location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # ...}
“` - 首先,在
-
测试配置并重启 Nginx:
bash
sudo nginx -t # 测试配置文件语法是否正确
sudo systemctl restart nginx # 重启 Nginx 使配置生效
第 5 步:测试 LNMP 环境
与 LAMP 测试类似,我们在 Nginx 的根目录 /usr/share/nginx/html 创建一个测试文件。
bash
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
访问 http://你的服务器IP/info.php,如果看到 PHP 信息页面,你的 LNMP 环境就大功告成了!同样,记得事后删除这个文件。
额外步骤:配置虚拟主机
如果你想在一个服务器上托管多个网站(例如 site1.com 和 site2.com),你需要配置虚拟主机。
Apache 虚拟主机
- 创建网站目录:
sudo mkdir -p /var/www/site1.com/html - 创建配置文件:
sudo vi /etc/httpd/conf.d/site1.com.conf - 添加以下内容:
apache
<VirtualHost *:80>
ServerName www.site1.com
ServerAlias site1.com
DocumentRoot /var/www/site1.com/html
ErrorLog /var/log/httpd/site1.com_error.log
CustomLog /var/log/httpd/site1.com_requests.log combined
</VirtualHost> - 重启 Apache:
sudo systemctl restart httpd
Nginx 虚拟主机 (Server Blocks)
- 创建网站目录:
sudo mkdir -p /usr/share/nginx/site1.com - 创建配置文件:
sudo vi /etc/nginx/conf.d/site1.com.conf - 添加以下内容:
“`nginx
server {
listen 80;
server_name site1.com www.site1.com;
root /usr/share/nginx/site1.com;
index index.html index.php;location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
``sudo systemctl restart nginx`
4. 重启 Nginx:
总结
无论是选择稳定可靠的 LAMP,还是追求极致性能的 LNMP,按照本指南的步骤,你都可以轻松地在 CentOS 7 上完成基础环境的搭建。这为你后续安装 WordPress、Laravel、Typecho 等应用程序,或者开发自己的项目奠定了坚实的基础。
接下来,你可以开始学习如何为你的网站配置 HTTPS(使用 Let’s Encrypt 是一个免费且不错的选择),以及如何优化数据库和 Web 服务器的性能。祝你的建站之旅一切顺利!