中文

在 Ubuntu 24.04 Linux VPS 上安装 LAMP 环境

1 min
VPS/VDS 主机

LAMP(Linux、Apache、MariaDB、PHP)是 WordPress、Laravel 以及大多数 PHP 应用的经典运行环境。本指南将在一台全新的 Ubuntu 24.04 VPS Linux Infrawire 上一步步完成部署,包括独立的虚拟主机,以及只开放必要端口的防火墙。

📋 前提条件

  • 一台运行 Ubuntu 24.04 的 KVM VPS(IP 和 root 密码可在客户区查看)
  • 以 root 或具有 sudo 权限的用户通过 SSH 登录
  • 一个域名 example.com,其 A(及 AAAA)记录指向 VPS_IP

以下命令默认你是 root 用户,否则请在命令前加 sudo。

1. 更新系统

Bash
apt update && apt upgrade -y

2. 安装 Apache

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

服务会立即启动,并设为开机自启。

3. 安装 MariaDB

MariaDB 位于 Ubuntu 官方仓库中,可无缝替代 MySQL。如果你更想用 Oracle MySQL,请改装 mysql-server,但不要在同一台机器上同时安装两者。

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

在向导中,保留 root 的 unix_socket 认证;如被询问请设置强密码,删除匿名用户,禁止 root 远程登录,并删除测试数据库。然后为你的应用创建专用的数据库和用户:

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. 安装 PHP 8.3

Ubuntu 24.04 的默认仓库已包含 PHP 8.3,无需额外添加 PPA。

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

libapache2-mod-php 软件包会自动把 Apache 切换到 prefork MPM 并加载 PHP 模块。

5. 创建虚拟主机并启用 mod_rewrite

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

AllowOverride All 会启用 .htaccess 文件,WordPress 或 Laravel 的伪静态链接依赖它。现在启用模块和站点,并停用默认页面:

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

重新加载之前,configtest 必须返回 Syntax OK。

6. 配置防火墙

请先放行 SSH,否则启用防火墙后你会把自己锁在服务器之外。

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

Apache Full 配置会开放 80 和 443 端口。不要开放 3306 端口:MariaDB 只需监听本机。

7. 测试 PHP 并删除测试文件

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

应返回 HTTP/1.1 200 OK。在浏览器中打开 http://example.com/info.php 即可看到 PHP 配置页面。phpinfo() 页面会暴露版本、路径和模块信息,请立即删除:

Bash
rm /var/www/example.com/public_html/info.php

再检查其他组件:

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ 故障排查

仍然显示 Apache 默认页面。 默认站点仍处于启用状态,或 DNS 尚未生效。执行 a2dissite 000-default.conf,重新加载 Apache,并用 curl -I -H 'Host: example.com' http://VPS_IP/ 测试。

403 Forbidden。 检查目录配置中是否有 Require all granted,www-data 能否读取文件(ls -ld /var/www/example.com/public_html),并查看日志 /var/log/apache2/example.com-error.log。

浏览器下载 PHP 文件而不是执行它。 PHP 模块没有加载。运行 apache2ctl -M | grep php,然后 systemctl restart apache2。若无输出,请重新安装 libapache2-mod-php。

重写规则被忽略(伪静态链接 404)。 确认已执行 a2enmod rewrite,并且 <Directory> 块中包含 AllowOverride All。


🎉 LAMP 环境已就绪:Apache、MariaDB 和 PHP 8.3 可以托管你的第一个网站了。

及时了解最新的优惠、折扣和特别促销活动。

查看促销

我们使用Cookie

我们使用分析性Cookie来改善您在我们网站上的体验。数据不会出售给第三方。了解更多请查看我们的 隐私政策.