努力
加油

Ubuntu桌面版能否安装Nginx、MySQL和Apache作为开发测试服务器?

直接给结论:完全可以,而且这是 Linux 环境下最经典、最主流的开发测试环境搭建方式之一。

但在实际动手之前,有几个非常关键的技术细节和“坑”,你需要提前知道,否则很容易把自己绕进去。

1. 核心冲突:Nginx 和 Apache 能共存吗?

这是新手最容易犯的错误。默认情况下,Nginx 和 Apache 不能同时监听 80 端口(HTTP)或 443 端口(HTTPS)。因为操作系统不允许两个进程绑定同一个 IP+Port 组合。

所以,你有三种常见的玩法:

玩法 A:二选一(推荐)

  • 只用 Nginx:适合高并发、静态资源服务、反向XX场景。Ubuntu 上安装 nginx 包即可。
  • 只用 Apache:适合需要 .htaccess 动态配置、PHP 模块集成度要求高的传统场景。Ubuntu 上安装 apache2 包即可。

大多数现代 Web 开发(尤其是前后端分离、Node.js、Python Django/Flask + Nginx 反向XX)都倾向于 Nginx。

玩法 B:Nginx 做前端,Apache 做后端(反向XX)

这是一种高级用法。Nginx 监听 80 端口,负责处理静态文件、SSL 终止、负载均衡;然后将动态请求(如 PHP、Java、Go)通过 proxy_pass 转发到本地另一个端口(比如 8080 或 9000),由 Apache 或其他应用服务器处理。

  • 注意:这种情况下,Apache 必须修改配置文件,将 Listen 端口从 80 改为其他端口(如 8080),否则启动时会报错。

玩法 C:不同域名/路径区分

理论上可以通过虚拟主机(Virtual Host)配置让两者监听不同接口,但这在单机开发环境中意义不大,反而增加复杂度,不推荐。


2. MySQL 的安装与选择

Ubuntu 桌面版默认软件源里提供的 MySQL 版本可能不是最新的,或者你更倾向于使用 MariaDB(MySQL 的一个分支,兼容性极好,且在 Ubuntu 中常作为默认替代)。

  • 如果你坚持用 MySQL:

    sudo apt update
    sudo apt install mysql-server

    安装完成后,建议运行安全脚本:

    sudo mysql_secure_installation

    设置 root 密码,移除匿名用户等。

  • 关于认证插件:
    新版 MySQL (5.7+) 和 MariaDB (10.4+) 默认使用 caching_sha2_password 认证插件。有些老旧的 IDE 或数据库客户端(如旧版 Navicat、DBeaver)连接时会报错。如果遇到这个问题,可以修改用户认证方式为 mysql_native_password,或者升级你的客户端工具。


3. 一键式方案 vs 手动安装

虽然你可以分别安装 Nginx/Apache + MySQL + PHP/Python/Node.js,但对于开发测试来说,效率更重要。

方案一:LAMP / LEMP 栈(手动但灵活)

  • LEMP: Linux + EnginX (Nginx) + MySQL + PHP
  • LAMP: Linux + Apache + MySQL + PHP

优点:组件独立,便于调试每个服务的日志,配置自由度高。
缺点:需要分别配置,环境变量管理稍麻烦。

方案二:Docker(强烈推荐用于开发测试)

既然你是做开发测试,强烈建议使用 Docker。它解决了环境一致性、端口冲突、依赖污染等问题。

# docker-compose.yml 示例
version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

这样即使你装了 Apache,也可以再跑一个 Nginx 容器,完全隔离,互不干扰。


4. 权限与安全提醒

  • 不要用 root 运行 Web 服务:Nginx/Apache 主进程可能是 root 启动的,但工作进程会以 www-data 用户身份运行。确保你的项目目录权限正确:
    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html
  • 防火墙:Ubuntu 默认启用 ufw。安装好服务后,记得放行端口:
    sudo ufw allow 80/tcp   # HTTP
    sudo ufw allow 443/tcp  # HTTPS
    sudo ufw allow 3306/tcp # MySQL(仅当需要从外部访问时才开,本地开发通常不需要)

总结建议

  1. 如果只是快速搭建测试环境:装 Nginx + MySQL + PHP/Node.js,用 apt 直接装,简单粗暴。
  2. 如果需要多项目并行、避免端口冲突:用 Docker Compose,这是目前业界标准做法。
  3. 不要同时让 Nginx 和 Apache 监听 80 端口,除非你明确知道自己在做反向XX架构。

Ubuntu 桌面版作为开发机是非常合适的,GUI 方便操作,终端又强大,比 Windows 上的 WSL 在某些底层调试场景下更直观,也比纯服务器版少了很多折腾 GUI 的麻烦。放心装吧。