凌峰创科服务平台

Linux系统如何快速搭建Web服务器?

如果你使用的是 CentOS/RHEL/Fedora 系统,命令会有所不同(主要是包管理器 apt 换成 yumdnf),但核心逻辑和步骤是相通的。

Linux系统如何快速搭建Web服务器?-图1
(图片来源网络,侵删)

第一步:准备工作

在开始之前,请确保你有一台已经安装好的 Linux 服务器(推荐 Ubuntu 20.04/22.04 LTS 版本),并且你已经通过 SSH 登录到了服务器,拥有 sudo 权限是必须的。

  1. 更新系统软件包 首先确保你的系统软件包列表是最新的,并且已安装的安全补丁也是最新的。

    sudo apt update
    sudo apt upgrade -y
  2. 设置服务器主机名 为了方便管理,可以给服务器设置一个主机名。

    sudo hostnamectl set-hostname your-server-name
  3. 安装一些基础工具 安装一些常用的工具,如 wget, curl, vim, htop 等。

    Linux系统如何快速搭建Web服务器?-图2
    (图片来源网络,侵删)
    sudo apt install -y wget curl vim htop

第二步:安装和配置 Nginx Web 服务器

Nginx 是一个高性能的 HTTP 和反向代理服务器,我们将用它来提供网页服务并处理静态文件(如 HTML, CSS, 图片)。

  1. 安装 Nginx

    sudo apt install -y nginx
  2. 启动并设置开机自启

    sudo systemctl start nginx
    sudo systemctl enable nginx
  3. 检查 Nginx 状态

    Linux系统如何快速搭建Web服务器?-图3
    (图片来源网络,侵删)
    sudo systemctl status nginx

    如果看到 active (running),说明 Nginx 已经成功运行。

  4. 配置防火墙 为了能从外部访问你的网站,需要允许 HTTP (80) 和 HTTPS (443) 端口的流量。

    # 如果使用 UFW (Uncomplicated Firewall)
    sudo ufw allow 'Nginx Full'
    sudo ufw reload
    # 如果使用 firewalld
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  5. 测试 Nginx 在浏览器中输入你的服务器 IP 地址(http://your_server_ip),你应该能看到 Nginx 的默认欢迎页面,你可以通过以下命令获取服务器 IP:

    curl -4 icanhazip.com

第三步:安装和配置 MySQL 数据库

MySQL (现在是 MariaDB 的分支) 是一个流行的关系型数据库管理系统,用于存储网站数据。

  1. 安装 MySQL Server

    sudo apt install -y mysql-server
  2. 安全配置 MySQL 运行安全脚本,它会帮助你设置 root 密码、移除匿名用户、禁止远程 root 登录等。强烈建议执行此步骤!

    sudo mysql_secure_installation

    按照提示操作:

    • 输入当前 root 密码(如果刚安装,可能为空,直接回车)。
    • 设置 root 密码?输入 Y 并设置一个强密码。
    • 移除匿名用户?Y
    • 禁止 root 远程登录?Y (更安全)
    • 移除 test 数据库?Y
    • 重新加载权限表?Y
  3. 启动并设置开机自启

    sudo systemctl start mysql
    sudo systemctl enable mysql

第四步:安装和配置 PHP (PHP-FPM)**

PHP 是一种服务器端脚本语言,用于创建动态网页,我们将安装 PHP-FPM (FastCGI Process Manager),它能让 Nginx 将 PHP 请求转发给 PHP 进程处理。

  1. 安装 PHP 和必要的扩展 Nginx 需要 PHP-FPM 来处理 PHP 文件,安装一些常用的 PHP 扩展。

    # 安装 PHP-FPM 和常用扩展
    sudo apt install -y php-fpm php-mysql php-mbstring php-xmlrpc php-gd php-xml php-curl php-zip php-tokenizer php-imagick

    注意: 你可以根据你的项目需求安装更多扩展,php-intl, php-bcmath 等。

  2. 检查并配置 PHP-FPM 安装完成后,PHP-FPM 通常会自动启动,我们需要修改其配置文件,让它能被 Nginx 用户(通常是 www-data)访问。

    • 查看当前 PHP 版本,找到对应的配置文件名(php8.1-fpm.conf)。
      php -v
    • 打开主配置文件:
      sudo vim /etc/php/8.1/fpm/pool.d/www.conf

      注意: 将 1 替换为你安装的 PHP 版本号。

    • 找到并修改以下两行,确保 listen.ownerlisten.group 都是 www-data
      listen = /run/php/php8.1-fpm.sock
      listen.owner = www-data
      listen.group = www-data
      listen.mode = 0660
    • 保存并退出文件。
  3. 重启 PHP-FPM 服务

    sudo systemctl restart php8.1-fpm

    注意: 同样,将 1 替换为你的 PHP 版本号。


第五步:配置 Nginx 以支持 PHP

现在我们需要创建一个新的 Nginx 配置文件,来处理一个具体的网站(虚拟主机)。

  1. 创建网站根目录 我们将在 /var/www 目录下为我们的网站创建一个目录。

    sudo mkdir -p /var/www/your_domain.com

    your_domain.com 替换成你的域名,如果你没有域名,也可以用 IP 地址代替。

  2. 设置目录权限 将网站目录的所有权赋予 www-data 用户和组,这是 Nginx 运行时所用的用户。

    sudo chown -R www-data:www-data /var/www/your_domain.com
  3. 创建一个测试的 PHP 文件 在网站根目录下创建一个 info.php 文件,用于测试 PHP 是否能正常工作。

    sudo vim /var/www/your_domain.com/info.php

    输入以下内容并保存:

    <?php
    phpinfo();
    ?>
  4. 创建 Nginx 虚拟主机配置文件/etc/nginx/sites-available/ 目录下创建一个新的配置文件。

    sudo vim /etc/nginx/sites-available/your_domain.com

    输入以下配置,并修改 server_nameroot 路径:

    server {
        listen 80;
        server_name your_domain.com www.your_domain.com;
        root /var/www/your_domain.com;
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        }
        location ~ /\.ht {
            deny all;
        }
    }

    注意:

    • your_domain.com 替换成你的域名。
    • /run/php/php8.1-fpm.sock 替换成你 PHP-FPM 配置中的 listen 路径。
    • fastcgi_pass 指令告诉 Nginx 将 PHP 请求转发给 PHP-FPM。
  5. 启用新的网站配置 创建一个符号链接,将配置文件从 sites-available 链接到 sites-enabled 目录。

    sudo ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/
  6. 测试并重启 Nginx

    • 测试配置文件语法:非常重要的一步,可以避免语法错误导致服务无法启动。
      sudo nginx -t

      如果看到 syntax is oktest is successful,说明配置正确。

    • 重启 Nginx:应用新的配置。
      sudo systemctl restart nginx

第六步:测试和验证

  1. 测试 PHP 在浏览器中访问 http://your_domain.com/info.php (或 http://your_server_ip/info.php),你应该能看到一个详细的 PHP 信息页面。出于安全考虑,测试完毕后请务必删除此文件!

    sudo rm /var/www/your_domain.com/info.php
  2. 部署一个简单的网站 创建一个 index.php 文件来测试整个流程。

    sudo vim /var/www/your_domain.com/index.php
    <!DOCTYPE html>
    <html>
    <head>
        <title>Welcome to Nginx!</title>
    </head>
    <body>
        <h1>It works!</h1>
        <p>This is a page served by Nginx with PHP support.</p>
        <?php
            echo "<p>PHP is working! Current time: " . date('Y-m-d H:i:s') . "</p>";
        ?>
    </body>
    </html>

    保存后,在浏览器中访问你的域名,应该能看到这个页面。


恭喜!你已经成功在 Linux (Ubuntu) 系统上搭建了一个功能齐全的 LEMP Web 服务器。

  • Nginx: 处理 HTTP 请求,提供静态文件,并将 PHP 请求转发给 PHP-FPM。
  • MySQL: 存储和管理网站数据。
  • PHP-FPM: 执行 PHP 代码,生成动态内容。

后续步骤和建议:

  • 部署 WordPress 或其他 CMS: 现在你可以通过 FTP 或 Git 将你的项目代码(如 WordPress)上传到 /var/www/your_domain.com 目录,并配置数据库来完成安装。
  • 配置 SSL (HTTPS): 使用 Let's Encrypt 的 Certbot 工具可以免费为你的域名配置 SSL 证书,实现 HTTPS 访问。
    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d your_domain.com -d www.your_domain.com
  • 定期备份: 设置一个自动化脚本,定期备份你的网站文件和 MySQL 数据库。
  • 监控: 使用 htop, glances 等工具监控服务器资源使用情况。

这个指南涵盖了从零开始搭建 Web 服务器的所有核心步骤,希望对你有帮助!

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