一份完整的分步指南,教你在 Ubuntu 24.04 LTS 上安装并加固 LAMP 环境(Linux、Apache、MySQL、PHP)——涵盖防火墙、加固后的 MySQL 配置、PHP,以及一个可在几分钟内测试通过的 Apache 虚拟主机。
什么是 LAMP 环境?
LAMP 环境是用于托管动态网站和 Web 应用的经典开源平台。这个缩写代表四个协同工作的层次:
- Linux —— 操作系统(本指南中为 Ubuntu)
- Apache —— 负责处理 HTTP 请求的 Web 服务器
- MySQL —— 用于存储数据的关系型数据库
- PHP —— 用于生成动态页面的编程语言
本教程将带你在 Ubuntu 24.04 LTS 上完成一次完整且加固的安装(这些步骤同样可以顺畅地应用于 22.04 LTS 和更新的 26.04 LTS)。完成之后,你将拥有一台可正常运行的 Web 服务器,包括一个已测试通过的虚拟主机、一个已加固的数据库,以及一个可处理页面的 PHP。
如果你是在沙特境内的 VPS 或云服务器上进行操作,将数据保留在境内有助于满足 PDPL 的数据驻留要求,同时为利雅得、吉达和达曼的用户提供低延迟访问。
前置条件
- 一台 Ubuntu 24.04 服务器(Skyline Cloud VPS 就很合适)。
- 一个拥有
sudo权限的非 root 用户。 - 服务器的 SSH 访问权限。
首先刷新软件包索引:
sudo apt update
sudo apt upgrade -y
第 1 步 —— 安装 Apache 并配置防火墙
安装 Apache Web 服务器:
sudo apt install apache2 -y
Ubuntu 自带 UFW 防火墙,而 Apache 在安装时会向其注册应用配置文件。列出它们:
sudo ufw app list
你会看到 Apache、Apache Full 和 Apache Secure。允许 Apache Full 以同时开放 HTTP(80)和 HTTPS(443)。如果 UFW 尚未启用,请先允许 SSH,以免把自己锁在外面:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
确认 Apache 正在运行:
sudo systemctl status apache2
现在在浏览器中访问 http://your_server_ip。你应该会看到默认的 Apache 欢迎页面。
第 2 步 —— 安装 MySQL 并对其加固
安装 MySQL 数据库服务器:
sudo apt install mysql-server -y
服务会自动启动。接下来运行内置的加固脚本,它会移除不安全的默认设置:
sudo mysql_secure_installation
该脚本会提示你:
- (可选)启用 VALIDATE PASSWORD 组件(如果你想强制实施密码复杂度要求,可选择一个策略级别)。
- 移除匿名用户 —— 回答 Y。
- 禁止远程 root 登录 —— 回答 Y。
- 移除测试数据库 —— 回答 Y。
- 重新加载权限表 —— 回答 Y。
在全新安装时,root 账户使用 auth_socket 认证,因此你可以无需密码直接从 shell 登录:
sudo mysql
对于应用程序,切勿使用 root。应改为创建一个专用的用户和数据库:
CREATE DATABASE app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'a_strong_password';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
第 3 步 —— 安装 PHP
安装 PHP、Apache 的 PHP 模块以及 MySQL 连接器:
sudo apt install php libapache2-mod-php php-mysql -y
大多数应用程序还需要几个常用的扩展:
sudo apt install php-cli php-curl php-gd php-mbstring php-xml php-zip -y
检查已安装的版本:
php -v
第 4 步 —— 让 Apache 优先使用 PHP 文件
默认情况下,Apache 会优先于 index.php 提供 index.html。为了让 PHP 应用按预期工作,需要提高 index.php 的优先级。打开目录索引配置文件:
sudo nano /etc/apache2/mods-enabled/dir.conf
将 index.php 移到列表的最前面:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
保存,然后重新加载 Apache:
sudo systemctl reload apache2
第 5 步 —— 创建虚拟主机
虚拟主机让一台服务器可以托管多个站点。为你的域名创建一个文档根目录和一个配置文件(请替换 example.com):
sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
sudo nano /etc/apache2/sites-available/example.com.conf
添加以下内容:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
启用你的站点,禁用默认站点,然后重新加载:
sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
如果你打算使用简洁 URL(在 WordPress 和 Laravel 中很常见),请启用 rewrite 模块:
sudo a2enmod rewrite
sudo systemctl restart apache2
第 6 步 —— 测试 PHP 处理
在你的文档根目录中创建一个测试文件:
nano /var/www/example.com/info.php
添加:
<?php
phpinfo();
访问 http://example.com/info.php(或你的服务器 IP)。你应该会看到 PHP 信息页面,这表明 Apache 已将 .php 文件交给 PHP 处理。测试完毕后请立即删除此文件 —— 它会暴露服务器的详细信息:
rm /var/www/example.com/info.php
快速命令参考
| 任务 | 命令 |
|---|---|
| 重启 Apache | sudo systemctl restart apache2 |
| 重新加载 Apache 配置 | sudo systemctl reload apache2 |
| 测试 Apache 配置语法 | sudo apache2ctl configtest |
| 重启 MySQL | sudo systemctl restart mysql |
| 登录 MySQL | sudo mysql |
| 查看 Apache 错误日志 | sudo tail -f /var/log/apache2/error.log |
后续步骤
你的 LAMP 服务器已就绪。推荐的后续操作:
- 添加 HTTPS。 使用 Certbot 签发免费的 Let's Encrypt 证书,或采用托管式 SSL 方案,以加密流量。
- 指向一个域名。 通过托管 DNS 接入一个
.sa或其他域名,让用户可以通过名称访问你的站点。 - 设置企业邮箱。 为你的站点搭配使用基于自有域名的可靠企业邮箱托管服务。
- 安排备份。 自动对
/var/www进行云备份,并定期对数据库执行mysqldump导出。
想要一台预装好该环境、具备境内数据驻留、并提供本地阿拉伯语支持的服务器吗?注册 Skyline Cloud,几分钟即可启用你的 VPS。
Comments
0 total · 0 threads