凌峰创科服务平台

Linux配置www服务器,核心步骤有哪些?

核心概念

在开始之前,先了解几个关键术语:

Linux配置www服务器,核心步骤有哪些?-图1
(图片来源网络,侵删)
  • Web Server: 负责接收 HTTP/HTTPS 请求,并返回网页内容(如 HTML、图片、CSS、JS 文件)或 API 响应的服务程序,主流的有 Nginx 和 Apache。
  • 虚拟主机: 一台物理服务器上运行多个网站,每个网站有独立的域名和配置,这是通过 ServerNameserver_name 来区分的。
  • 根目录: 网站文件存放的顶级目录,/var/www/html/example.com
  • SSL/TLS: 用于加密浏览器和服务器之间的通信,实现 HTTPS,通常通过 Let's Encrypt 免费获取证书。
  • PHP-FPM: 一个 PHP 的 FastCGI 进程管理器,用于高效地处理 PHP 请求,Nginx 和 Apache 都可以与它配合。

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

你有两个主要选择:Nginx (推荐) 和 Apache

选择建议

  • Nginx: 性能极高,擅长处理高并发连接,配置相对简洁,资源占用低,非常适合现代 Web 应用、反向代理和静态文件服务,是目前的主流选择。
  • Apache: 历史悠久,功能非常全面,模块生态极其丰富(.htaccess 文件是其特色),配置灵活,对于需要复杂规则或从旧系统迁移的用户来说是个好选择。

对于新项目,强烈推荐 Nginx

安装 Nginx (以 Ubuntu/Debian 为例)

# 更新软件包列表
sudo apt update
# 安装 nginx
sudo apt install nginx
# 启动 nginx 服务并设置为开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查 nginx 状态
sudo systemctl status nginx

安装 Apache (以 Ubuntu/Debian 为例)

# 更新软件包列表
sudo apt update
# 安装 apache2
sudo apt install apache2
# 启动 apache2 服务并设置为开机自启
sudo systemctl start apache2
sudo systemctl enable apache2
# 检查 apache2 状态
sudo systemctl status apache2

第二步:配置第一个网站 (虚拟主机)

这里我们以 Nginx 为例进行详细讲解,Apache 的配置逻辑类似,只是指令和文件结构不同。

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

Linux配置www服务器,核心步骤有哪些?-图2
(图片来源网络,侵删)

创建网站根目录

# 创建主目录
sudo mkdir -p /var/www/example.com/html
# 创建一个简单的 index.html 文件
sudo nano /var/www/example.com/html/index.html

index.html 中输入以下内容:

<!DOCTYPE html>
<html>
<head>Welcome to example.com!</title>
</head>
<body>
    <h1>Success! Your Nginx server is working!</h1>
    <p>This is the root directory for the example.com website.</p>
</body>
</html>

设置正确的文件权限

Web 服务器(Nginx 运行在 www-data 用户下)需要能读取这些文件。

# 将目录所有权赋予 www-data 用户
sudo chown -R www-data:www-data /var/www/example.com/html
# 设置适当的目录权限
sudo chmod -R 755 /var/www/example.com

创建 Nginx 虚拟主机配置文件

Nginx 的站点配置文件通常存放在 /etc/nginx/sites-available/ 目录下。

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

输入以下配置:

Linux配置www服务器,核心步骤有哪些?-图3
(图片来源网络,侵删)
server {
    listen 80;
    listen [::]:80;
    # 你的域名
    server_name example.com www.example.com;
    # 网站根目录
    root /var/www/example.com/html;
    index index.html index.htm;
    # 访问日志和错误日志
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    location / {
        try_files $uri $uri/ =404;
    }
}

启用虚拟主机配置

上面的文件只是“可用”,我们需要创建一个符号链接到 sites-enabled 目录来“启用”它。

# 创建符号链接
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# (可选) 删除默认的欢迎页面配置
sudo rm /etc/nginx/sites-enabled/default
# 检查 Nginx 配置语法是否正确
sudo nginx -t
# 如果测试通过,重新加载 Nginx 配置
sudo systemctl reload nginx

配置本地 hosts 文件进行测试

在本地电脑上(不是服务器),编辑 hosts 文件,将 example.com 指向你的服务器 IP 地址。

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux: /etc/hosts

添加一行:

你的服务器IP地址   example.com www.example.com

在浏览器中访问 http://example.com,你应该能看到你创建的 "Success!" 页面。


第三步:配置 HTTPS (SSL/TLS)

让网站支持 HTTPS 是现代网站的标配。

安装 Certbot

Certbot 是一个由 Let's Encrypt 提供的自动化工具,可以免费获取和更新 SSL 证书。

# 安装 Certbot 和 Nginx 插件
sudo apt install certbot python3-certbot-nginx

获取并自动配置 SSL 证书

Certbot 可以自动检测你的 Nginx 配置,并获取证书、修改配置、重启服务。

# 运行 Certbot,它会提示你输入邮箱并同意条款
sudo certbot --nginx -d example.com -d www.example.com
  • -d: 指定要保护的域名。
  • --nginx: 使用 Nginx 插件。

如果成功,Certbot 会自动:

  1. 从 Let's Encrypt 获取证书。
  2. 修改你的 /etc/nginx/sites-available/example.com 配置文件,添加 443 端口的监听和 SSL 相关指令。
  3. 重启 Nginx 服务。

现在你的网站可以通过 https://example.com 安全访问了。

设置自动续订

Let's Encrypt 的证书有效期为 90 天,Certbot 会自动设置一个定时任务来续订。

你可以手动测试续订过程:

sudo certbot renew --dry-run

如果看到 renewal process was successful,说明自动续订工作正常。


第四步:部署 PHP 应用 (以 WordPress 为例)

大多数动态网站(如 WordPress, Drupal)都需要 PHP 支持。

安装 PHP 和 PHP-FPM

# 安装 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
# 检查 PHP-FPM 状态
sudo systemctl status php-fpm

修改 Nginx 配置以支持 PHP

编辑你的虚拟主机配置文件:

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

location / { ... } 块下方,添加一个新的 location 块来处理 PHP 文件:

# ... 其他配置保持不变 ...
# 处理 PHP 文件
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    # 与 php-fpm.sock 的路径保持一致
    fastcgi_pass unix:/run/php/php8.1-fpm.sock; 
}
# 处理 /wp-admin/ 目录下的重定向规则
location ~* ^/wp-admin/ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
# ... 其他配置保持不变 ...

注意: fastcgi_pass 中的路径 (/run/php/php8.1-fpm.sock) 可能会因为 PHP 版本不同而改变,你可以用 ls /run/php/ 命令查看实际的 socket 文件名。

重新加载 Nginx

sudo nginx -t
sudo systemctl reload nginx

你的 Nginx 服务器已经可以正确处理 PHP 文件了,你可以将 WordPress 等程序的文件上传到 /var/www/example.com/html 目录,然后通过浏览器进行安装。


Apache 快速配置对比

如果你选择 Apache,配置流程类似:

  1. 创建网站目录和文件:与 Nginx 相同。

  2. 设置权限:与 Nginx 相同。

  3. 创建虚拟主机配置文件:文件在 /etc/apache2/sites-available/

    <VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/html
        <Directory /var/www/example.com/html>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
        CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
    </VirtualHost>
  4. 启用站点

    sudo a2ensite example.com
    sudo a2dissite 000-default.conf # 禁用默认站点
    sudo apache2ctl configtest # 检查语法
    sudo systemctl reload apache2
  5. 启用 SSL

    # 安装 certbot for apache
    sudo apt install certbot python3-certbot-apache
    # 获取证书
    sudo certbot --apache -d example.com -d www.example.com

    Certbot 会自动处理 Apache 的 SSL 配置。


总结与后续

恭喜!你已经成功在 Linux 上配置了一个功能齐全的 Web 服务器。

后续可以探索的方向:

  • 性能优化:配置 Gzip 压缩、缓存(Nginx 的 proxy_cache 或 Apache 的 mod_cache)、连接数限制等。
  • 安全加固:配置防火墙(如 ufw)、禁用不必要的 HTTP 方法、使用 fail2ban 防止暴力破解。
  • 反向代理:使用 Nginx 作为反向代理,将请求转发到后端的 Node.js, Python (Gunicorn) 或 Java (Tomcat) 应用。
  • 日志分析:使用 goaccess 等工具实时分析访问日志,了解网站流量情况。

希望这份详细的指南对你有帮助!

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