努力
加油

Ubuntu桌面版安装后如何配置为Web服务器?

Ubuntu 装好桌面版后想当 Web 服务器用,这事儿其实挺常见的。很多开发者或者小团队为了省事,直接在本地 Ubuntu 桌面环境上部署服务,方便调试和开发。但要注意,桌面版和服务器版在默认配置、安全策略和资源调度上是有区别的。如果你只是个人学习、内部测试或者小型项目,完全可行;如果是生产环境,建议还是上 Server 版或云主机。

下面我按实际运维逻辑,给你一套“从裸机到可用”的配置流程,尽量避开那些虚头巴脑的理论,直接上干货。


第一步:基础系统优化(别忽略这一步)

桌面版 Ubuntu 默认开了不少图形界面相关的服务,吃内存还拖慢网络响应。既然当服务器用,先把这些“累赘”处理一下。

  1. 更新源并安装必要工具

    sudo apt update && sudo apt upgrade -y
    sudo apt install curl wget git ufw fail2ban net-tools -y

    ufw 是防火墙,fail2ban 防暴力破解,这两个在生产环境里是保命用的。

  2. 关闭不必要的图形服务(可选但推荐)
    如果你不需要同时用 GUI,可以切换运行级别到多用户模式(相当于 Linux 的纯命令行模式),能省不少资源:

    sudo systemctl set-default multi-user.target
    sudo reboot

    重启后登录就是黑屏命令行。如果还想偶尔用图形界面,可以用 sudo systemctl start graphical.target 临时开启。

  3. 设置静态 IP
    桌面版默认是 DHCP 动态获取 IP,作为服务器必须固定 IP,否则重启后地址变了,域名解析就挂了。

    • 编辑 /etc/netplan/00-installer-config.yaml(文件名可能不同,用 ls /etc/netplan/ 查看)。
    • 修改配置为静态 IP,例如:
      network:
        ethernets:
          ens33:  # 你的网卡名
            dhcp4: no
            addresses: [192.168.1.100/24]
            gateway4: 192.168.1.1
            nameservers:
              addresses: [8.8.8.8, 114.114.114.114]
        version: 2
    • 应用配置:sudo netplan apply

第二步:选择 Web 服务器软件

根据你的技术栈选一个即可,别贪多。

方案 A:Nginx + PHP(最通用,适合 WordPress、Laravel 等)

sudo apt install nginx php-fpm php-mysql php-curl php-gd php-mbstring -y

启动 Nginx 并设为开机自启:

sudo systemctl enable nginx --now

方案 B:Apache(传统型,模块丰富,适合老项目)

sudo apt install apache2 libapache2-mod-php php-mysql -y
sudo systemctl enable apache2 --now

方案 C:Node.js / Python / Go 等后端语言

直接用包管理器装对应运行时,然后用 PM2(Node)、Supervisor(Python)或 systemd 管理进程即可。这里不展开,重点说前两种。


第三步:数据库部署

大多数 Web 项目需要数据库。

  • MySQL/MariaDB(主流):

    sudo apt install mysql-server -y
    sudo mysql_secure_installation  # 强烈建议运行这个脚本,设置 root 密码、移除匿名用户等
  • PostgreSQL(适合复杂查询):

    sudo apt install postgresql postgresql-contrib -y
  • 轻量级需求:如果只是存点配置或小数据,SQLite 足够,无需额外安装。


第四步:安全加固(关键!)

桌面版默认防火墙是关着的,直接暴露在网络非常危险。

  1. 配置 UFW 防火墙

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow ssh  # 允许 SSH 连接,记得改端口更好
    sudo ufw allow http  # 允许 80 端口
    sudo ufw allow https # 允许 443 端口
    sudo ufw enable

    检查状态:sudo ufw status

  2. 配置 Fail2Ban 防暴力破解

    sudo systemctl enable fail2ban --now

    它会自动监控日志,发现多次失败登录就封 IP。

  3. 禁用 Root 远程登录
    编辑 /etc/ssh/sshd_config:

    PermitRootLogin no
    PasswordAuthentication yes  # 或者改为 no,强制用密钥登录

    重启 SSH:sudo systemctl restart sshd

  4. 创建普通用户并授权
    永远不要用 root 操作 Web 服务。

    sudo adduser webadmin
    sudo usermod -aG sudo webadmin

第五步:部署网站代码

假设你用 Nginx + PHP-FPM:

  1. 设置站点目录权限

    sudo mkdir -p /var/www/html
    sudo chown -R $USER:$USER /var/www/html  # 当前用户拥有所有权
    sudo chmod -R 755 /var/www/html
  2. 配置 Nginx 虚拟主机
    复制默认配置:

    sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mywebsite
    sudo nano /etc/nginx/sites-available/mywebsite

    修改内容示例:

    server {
        listen 80;
        server_name your_domain.com;  # 替换为你的域名或 IP
        root /var/www/html;
        index index.php index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location ~ .php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # 根据你安装的 PHP 版本调整
        }
    }
  3. 启用站点并测试配置

    sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
    sudo nginx -t  # 测试配置是否正确
    sudo systemctl reload nginx
  4. 上传代码
    用 scp 或 git clone 把代码放到 /var/www/html 目录下。确保文件权限正确,通常目录 755,文件 644,所有者 www-data(Nginx 运行用户)或你的普通用户。


第六步:HTTPS 加密(Let’s Encrypt)

现在 HTTP 明文传输已经不安全了,浏览器也会标红。用 Certbot 一键申请免费 SSL 证书:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com

按照提示输入邮箱、同意条款,Certbot 会自动修改 Nginx 配置并重定向 HTTPS。


常见问题与避坑指南

  1. PHP 执行不了?

    • 检查 php-fpm 服务是否在运行:systemctl status php8.1-fpm
    • 检查 Nginx 配置中的 fastcgi_pass 路径是否匹配。
    • 检查文件权限,Nginx 用户(www-data)必须有读取和执行权限。
  2. 数据库连不上?

    • MySQL 默认只监听 localhost。如果需要远程连接,需修改 /etc/mysql/mysql.conf.d/mysqld.cnf 中的 bind-address 为 0.0.0.0,并创建允许远程访问的用户。
    • 注意:生产环境不建议开放 MySQL 网络访问,最好通过内网或跳板机。
  3. 性能瓶颈?

    • 桌面版内核参数不是最优的。可以调整 /etc/sysctl.conf 增加文件描述符限制、TCP 连接队列等。
    • 使用 htop 监控 CPU 和内存,Nginx 是多进程模型,合理配置 worker_processes 和 worker_connections。
  4. 备份!

    • 定期备份数据库和网站文件。可以用 crontab 写个定时任务,把 /var/www/html 和数据库 dump 到另一个磁盘或对象存储(如阿里云 OSS、腾讯云 COS)。

总结

Ubuntu 桌面版做 Web 服务器,核心思路就是:去图形化 → 固定 IP → 装 Nginx/Apache + PHP + DB → 开防火墙 → 配 HTTPS。整个过程大概 30 分钟就能搞定一个可用的 LAMP/LNMP 环境。

但请记住,这只是“能用”,离“高可用”、“高性能”还有距离。如果是正式业务,建议迁移到云服务器(如阿里云 ECS、腾讯云 CVM),利用其弹性伸缩、负载均衡和安全组功能,会更省心也更稳定。