凌峰创科服务平台

Ubuntu如何快速搭建http服务器?

下面我将为你详细介绍如何使用这两种工具搭建 HTTP 服务器,并提供一个简单的测试方法。

Ubuntu如何快速搭建http服务器?-图1
(图片来源网络,侵删)

使用 Apache (最经典、最通用)

Apache 是最古老的 Web 服务器之一,至今仍然拥有最高的市场份额,它模块化、功能强大,兼容性极好,非常适合新手和需要复杂配置的场景。

安装 Apache

打开终端,更新软件包列表,然后安装 apache2

# 更新软件包列表
sudo apt update
# 安装 Apache2
sudo apt install apache2

安装过程中,系统会自动启动 Apache 服务。

检查服务状态和防火墙

确保 Apache 服务正在运行。

Ubuntu如何快速搭建http服务器?-图2
(图片来源网络,侵删)
# 检查 Apache 服务状态
sudo systemctl status apache2

如果看到绿色的 active (running) 字样,说明服务已成功启动。

如果你启用了 UFW (Uncomplicated Firewall) 防火墙,需要允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量通过。

# 允许 Apache 流量
sudo ufw allow 'Apache Full'
# 或者分别允许 HTTP 和 HTTPS
# sudo ufw allow 80/tcp
# sudo ufw allow 443/tcp
# 检查防火墙状态
sudo ufw status

测试 Apache

你可以通过浏览器访问你的服务器 IP 地址或域名来测试。

获取你服务器的公网 IP 地址:

Ubuntu如何快速搭建http服务器?-图3
(图片来源网络,侵删)
curl http://icanhazip.com

然后在浏览器中访问 http://<你的服务器IP地址>http://203.0.113.10

如果一切正常,你将看到 Apache 的默认欢迎页面,上面写着 "It works!"。

部署你的网站文件

Apache 的默认网站根目录是 /var/www/html,你可以将你的网站文件(如 index.html, images 文件夹等)放置到这个目录下。

注意: 直接替换 /var/www/html 下的文件可能会导致权限问题,一个更好的做法是创建一个子目录。

示例:

假设你有一个名为 my-website 的网站文件夹。

  1. 创建网站目录

    sudo mkdir -p /var/www/my-website
  2. 将你的网站文件复制进去: 假设你的网站文件在当前目录的 my-website 文件夹里。

    # 使用 -r 选项递归复制目录
    sudo cp -r my-website/* /var/www/my-website/
  3. 设置正确的文件权限: 为了让 Web 服务器(用户 www-data)可以读取文件,需要修改所有者和权限。

    # 将 /var/www/my-website 目录的所有者设置为 www-data 用户和组
    sudo chown -R www-data:www-data /var/www/my-website
    # 设置目录和文件的权限,所有者有读写权限,其他用户有读和执行权限
    sudo chmod -R 755 /var/www/my-website
  4. 访问你的网站: 在浏览器中访问 http://<你的服务器IP地址>/my-website,你就能看到你的网站了。

配置虚拟主机 (推荐)

如果你想为不同的域名或项目配置不同的网站,就需要使用虚拟主机,这比在根目录下创建子目录更清晰。

示例:为 example.com 配置虚拟主机

  1. 创建虚拟主机配置文件: Apache 的站点配置文件存放在 /etc/apache2/sites-available/ 目录下,我们可以复制一个默认配置作为模板。

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
  2. 编辑配置文件: 使用 nanovim 编辑器打开新文件。

    sudo nano /etc/apache2/sites-available/example.com.conf

    修改文件内容如下:

    <VirtualHost *:80>
        # ServerAdmin 管理员邮箱
        ServerAdmin admin@example.com
        # ServerName 你的域名
        ServerName example.com
        # ServerAlias 域名的其他形式,www
        ServerAlias www.example.com
        # 网站根目录
        DocumentRoot /var/www/my-website
        # 错误日志文件
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # 访问日志文件
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

    保存并退出 (在 nano 中按 Ctrl+X,然后按 Y,再按 Enter)。

  3. 启用站点: 使用 a2ensite 命令来启用这个新的虚拟主机配置。

    sudo a2ensite example.com.conf
  4. 禁用默认站点 (可选): 如果你想让 example.com 成为默认首页,可以禁用默认的 000-default.conf

    sudo a2dissite 000-default.conf
  5. 重载 Apache 配置: 让所有更改生效。

    sudo systemctl reload apache2
  6. 配置 DNS: 在你的域名注册商处,将 example.comwww.example.com 的 A 记录指向你的服务器 IP 地址。

  7. 访问: 等待 DNS 生效后,通过浏览器访问 http://example.com 即可看到你的网站。


使用 Nginx (高性能、低资源)

Nginx (发音 "engine-x") 是一个较新的 Web 服务器,以其高性能、高并发和低内存消耗而闻名,它非常适合处理静态文件,也常作为反向代理。

安装 Nginx

同样,打开终端,更新列表并安装 nginx

# 更新软件包列表
sudo apt update
# 安装 Nginx
sudo apt install nginx

安装完成后,Nginx 会自动启动。

检查服务状态和防火墙

# 检查 Nginx 服务状态
sudo systemctl status nginx

确保看到 active (running)

如果使用 UFW 防火墙,需要允许 Nginx 流量,Nginx 的配置更细致,可以只允许 HTTP 或 HTTP+HTTPS。

# 允许 Nginx Full (HTTP + HTTPS)
sudo ufw allow 'Nginx Full'
# 或者只允许 HTTP (端口 80)
# sudo ufw allow 'Nginx HTTP'
# 检查防火墙状态
sudo ufw status

测试 Nginx

在浏览器中访问你的服务器 IP 地址。 http://<你的服务器IP地址>

你会看到 Nginx 的默认欢迎页面,上面写着 "Welcome to nginx!"。

部署你的网站文件

Nginx 的默认网站根目录是 /var/www/html,过程与 Apache 类似。

  1. 创建网站目录

    sudo mkdir -p /var/www/my-website
  2. 复制你的网站文件

    sudo cp -r my-website/* /var/www/my-website/
  3. 设置权限: Nginx 默认使用 www-data 用户。

    sudo chown -R www-data:www-data /var/www/my-website
    sudo chmod -R 755 /var/www/my-website
  4. 访问你的网站: 浏览器访问 http://<你的服务器IP地址>/my-website

配置服务器块 (Nginx 的虚拟主机)

Nginx 的虚拟主机称为 "Server Blocks"。

示例:为 example.com 配置服务器块

  1. 创建配置文件: Nginx 的站点配置在 /etc/nginx/sites-available/ 目录下,复制默认配置作为模板。

    sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
  2. 编辑配置文件

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

    修改 server 块内的内容:

    server {
        listen 80;
        listen [::]:80;
        server_name example.com www.example.com;
        root /var/www/my-website;
        index index.html index.htm;
        location / {
            try_files $uri $uri/ =404;
        }
    }
    • listen: 监听的端口。
    • server_name: 你的域名。
    • root: 网站根目录。
    • index: 默认首页文件名。
  3. 启用站点: 创建一个指向 sites-enabled 目录的符号链接。

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  4. 测试并重载配置: 在重载之前,先测试配置文件是否有语法错误。

    # 测试配置
    sudo nginx -t
    # 如果输出 "syntax is ok" 和 "test is successful",则重载
    sudo systemctl reload nginx
  5. 配置 DNS: 同样,在域名注册商处将域名指向你的服务器 IP。

  6. 访问: 通过浏览器访问 http://example.com


总结与对比

特性 Apache Nginx
工作模式 进程驱动,一个连接一个进程 事件驱动,异步、非阻塞
性能 资源消耗相对较高,并发能力一般 高性能,高并发,低内存消耗
配置 .htaccess 文件,配置分散 集中式配置文件,更清晰
功能 模块化,功能非常全面,尤其擅长动态内容 静态文件处理极快,常作为反向代理、负载均衡器
适用场景 传统网站、需要 .htaccess 的环境、复杂的 URL 重写规则 高流量网站、静态资源网站、API 服务、反向代理

如何选择?

  • 新手入门:两者都可以,Apache 的文档和社区支持更成熟,遇到问题更容易找到答案。
  • 追求性能:如果你的网站流量较大,主要提供静态文件(如图片、CSS、JS),或者需要处理大量并发连接,Nginx 是更好的选择。
  • 现代架构:很多现代应用会选择 Nginx + (uWSGI/Gunicorn + Python/Django)Nginx + (PHP-FPM + PHP) 的组合,让 Nginx 处理静态请求和反向代理,让应用服务器处理动态请求。

希望这份详细的指南能帮助你成功在 Ubuntu 上搭建 HTTP 服务器!

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