凌峰创科服务平台

Ubuntu如何配置Web服务器?

  1. 基础系统准备:更新系统、创建用户、配置防火墙。
  2. 安装 Web 服务器:选择并安装 Nginx 或 Apache。
  3. 安装数据库:安装 MySQL/MariaDB。
  4. 安装编程语言环境:安装 PHP (用于 LAMP 或 LNMP)。
  5. 部署测试网站:创建一个虚拟主机/服务器块并测试。
  6. 可选高级配置:安装 Let's Encrypt SSL 证书、配置文件管理等。

第 0 步:准备工作

在开始之前,你需要:

Ubuntu如何配置Web服务器?-图1
(图片来源网络,侵删)
  • 一台已经安装好 Ubuntu 22.04 的服务器(可以是云服务器如 AWS, Google Cloud, Vultr,或本地虚拟机)。
  • 服务器的公网 IP 地址。
  • 能够通过 SSH 登录到服务器的 root 用户或一个具有 sudo 权限的用户。
# 以 root 用户登录,或者切换到 root
sudo -i
# 或者,如果你有一个普通用户,直接登录并使用 sudo
# ssh your_user@your_server_ip

第 1 步:基础系统配置

这是所有服务器配置的第一步,确保系统安全且是最新的。

1 更新系统包列表

apt update

2 升级已安装的软件包

apt upgrade -y

-y 参数表示对所有提示回答 "是"。

3 设置服务器主机名

一个好的主机名有助于服务器管理。

hostnamectl set-hostname your-server-hostname

hostnamectl set-hostname web-server-01

Ubuntu如何配置Web服务器?-图2
(图片来源网络,侵删)

4 创建一个新的管理用户(推荐)

直接使用 root 用户操作有风险,建议创建一个具有 sudo 权限的普通用户。

# 创建一个新用户,'admin'
adduser admin
# 将新用户添加到 'sudo' 组,使其拥有管理员权限
usermod -aG sudo admin

现在你可以退出 SSH,然后用 ssh admin@your_server_ip 重新登录,后续操作都使用这个 admin 用户。

5 配置 UFW 防火墙

UFW (Uncomplicated Firewall) 是一个简单易用的防火墙工具。

# 允许 SSH 连接(非常重要!)
sudo ufw allow OpenSSH
# 如果你计划使用 Web 服务器,请开放相应的端口
# 对于 Nginx
sudo ufw allow 'Nginx Full'  # 同时允许 HTTP (80) 和 HTTPS (443)
# 或者对于 Apache
sudo ufw allow 'Apache Full'
# 启用防火墙
sudo ufw enable

系统会提示你确认,输入 y 并回车,防火墙现在已启动,并会阻止所有未经授权的入站连接。

Ubuntu如何配置Web服务器?-图3
(图片来源网络,侵删)

第 2 步:选择并安装 Web 服务器

你有两个主流选择:ApacheNginx

  • Apache: 历史悠久,功能强大,配置灵活,兼容性好,通过 .htaccess 文件可以在不修改主配置文件的情况下控制目录。
  • Nginx: 高性能,资源占用少,擅长处理高并发静态文件请求和反向代理,配置通常更简洁,但初学者可能觉得不那么直观。

建议:

  • 如果你的网站主要包含 PHP 动态页面,并且需要大量 .htaccess 规则,Apache 是一个稳妥的选择。
  • 如果你需要处理大量静态文件、API 请求,或者未来可能配置负载均衡,Nginx 是更好的选择。

这里我们分别介绍如何安装两者。

选项 A: 安装 Nginx (推荐)

sudo apt install nginx -y

安装后,Nginx 会自动启动,你可以检查其状态:

sudo systemctl status nginx

选项 B: 安装 Apache

sudo apt install apache2 -y

同样,检查其状态:

sudo systemctl status apache2

第 3 步:安装数据库 (MySQL/MariaDB)

大多数现代 Web 应用(如 WordPress, Drupal)都需要数据库来存储数据,Ubuntu 默认使用 MariaDB,它是 MySQL 的一个流行的分支。

sudo apt install mariadb-server mariadb-client -y

安装完成后,安全地配置数据库:

sudo mysql_secure_installation

这个交互式脚本会引导你完成以下步骤:

  1. Set root password? (设置 root 密码) -> 输入 Y 并设置一个强密码。
  2. Remove anonymous users? (移除匿名用户) -> Y (安全)。
  3. Disallow root login remotely? (禁止 root 远程登录) -> Y (安全)。
  4. Remove test database and access to it? (移除测试数据库) -> Y (安全)。
  5. Reload privilege tables now? (现在重新加载权限表) -> Y

第 4 步:安装 PHP (LAMP/LNMP 的 "P")

PHP 是一种服务器端脚本语言,用于创建动态网页。

1 安装 PHP 和常用扩展

# 安装 PHP 和一些最常用的扩展
sudo apt install php php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
  • php-fpm (FastCGI Process Manager) 是 Nginx 和 Apache 运行 PHP 的推荐方式。
  • php-mysql 让 PHP 能够与 MySQL/MariaDB 数据库通信。
  • 其他扩展是许多流行 CMS (如 WordPress) 所需的。

2 根据你的 Web 服务器进行配置

  • 如果你使用的是 Nginx: PHP-FPM 通常已经配置好并作为服务运行,你只需要在后续的 Nginx 配置文件中指向它即可。

  • 如果你使用的是 Apache: 你需要启用 php 模块来让 Apache 能够处理 PHP 文件。

    sudo a2enmod php8.1  # 请根据你安装的 PHP 版本调整,php8.0
    sudo systemctl restart apache2

第 5 步:部署你的第一个网站

现在我们创建一个虚拟主机(Nginx 中称为 "服务器块")来托管你的网站。

1 创建网站目录

假设我们要部署一个名为 example.com 的网站。

# 创建网站根目录
sudo mkdir -p /var/www/example.com/html
# 设置目录所有者为当前用户,这样你就不需要用 sudo 来编辑文件
sudo chown -R $USER:$USER /var/www/example.com/html
# 设置适当的权限
sudo chmod -R 755 /var/www/example.com

2 创建测试页面

创建一个简单的 index.php 文件来测试 PHP 是否正常工作。

nano /var/www/example.com/html/index.php

在打开的编辑器中,输入以下内容:

<?php
phpinfo();
?>

保存并退出 (Ctrl+X, 然后按 Y, 最后按 Enter)。

3 创建 Nginx 服务器块配置

sudo nano /etc/nginx/sites-available/example.com

粘贴以下配置,并根据你的实际情况修改 server_nameroot 路径。

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 确保这里的版本号和你的匹配
    }
    location ~ /\.ht {
        deny all;
    }
}

注意: fastcgi_pass 行中的 php8.1-fpm.sock 可能需要根据你安装的 PHP 版本进行修改,你可以用 ls /var/run/php/ 来查看确切的文件名。

4 启用新的配置

创建一个符号链接来激活这个配置文件。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

5 测试并重新加载 Nginx

# 测试配置文件语法是否正确
sudo nginx -t
# 如果测试通过,重新加载 Nginx 以应用更改
sudo systemctl reload nginx

6 Apache 配置 (如果你使用 Apache)

如果你使用的是 Apache,配置过程类似。

  1. 创建配置文件:

    sudo nano /etc/apache2/sites-available/example.com.conf
    <VirtualHost *:80>
        ServerAdmin webmaster@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
  2. 启用站点:

    sudo a2ensite example.com.conf
  3. 禁用默认站点 (可选):

    sudo a2dissite 000-default.conf
  4. 重启 Apache:

    sudo systemctl restart apache2

第 6 步:访问你的网站

你需要将你的域名 example.com 的 DNS A 记录指向你的服务器 IP 地址。

等待 DNS 传播完成(可能需要几分钟到几小时),然后用浏览器访问 http://example.com

  • 如果你看到一个包含 "It works!" 的页面(Apache)或一个显示 PHP 信息的页面(Nginx),恭喜你!你的 Web 服务器已经成功运行。
  • 如果你看到 PHP 信息页面,说明 PHP 也配置成功了。

第 7 步:可选但重要的后续配置

1 安装 Let's Encrypt SSL 证书 (HTTPS)

为你的网站启用 HTTPS 是至关重要的,使用 Certbot 可以轻松获取和自动续签免费的 Let's Encrypt 证书。

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取并安装证书
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动检测你的 Nginx 配置,并询问你将 HTTP 流量重定向到 HTTPS,选择 2 (Redirect) 是最佳实践。

证书到期后,Certbot 的定时任务会自动为你续签。

2 配置文件管理

随着网站增多,手动管理配置文件会很麻烦,你可以考虑使用 Ansible 这样的配置管理工具来自动化部署。


至此,你已经成功完成了一个功能齐全的 Ubuntu Web 服务器的初始配置:

  • 系统安全: 更新、防火墙已配置。
  • Web 服务: Nginx 或 Apache 已安装并运行。
  • 数据库: MariaDB 已安装并安全配置。
  • 后端语言: PHP 及其扩展已安装,并能与 Web 服务器和数据库协同工作。
  • 网站部署: 创建了第一个虚拟主机,并部署了一个测试页面。
  • 安全通信: (可选) 配置了 Let's Encrypt SSL 证书。

你可以基于这个坚实的基础,继续部署你的 WordPress、Next.js、Django 或任何其他 Web 应用程序了。

分享:
扫描分享到社交APP
上一篇
下一篇