Ubuntu 装好桌面版后想当 Web 服务器用,这事儿其实挺常见的。很多开发者或者小团队为了省事,直接在本地 Ubuntu 桌面环境上部署服务,方便调试和开发。但要注意,桌面版和服务器版在默认配置、安全策略和资源调度上是有区别的。如果你只是个人学习、内部测试或者小型项目,完全可行;如果是生产环境,建议还是上 Server 版或云主机。
下面我按实际运维逻辑,给你一套“从裸机到可用”的配置流程,尽量避开那些虚头巴脑的理论,直接上干货。
第一步:基础系统优化(别忽略这一步)
桌面版 Ubuntu 默认开了不少图形界面相关的服务,吃内存还拖慢网络响应。既然当服务器用,先把这些“累赘”处理一下。
-
更新源并安装必要工具
sudo apt update && sudo apt upgrade -y sudo apt install curl wget git ufw fail2ban net-tools -yufw是防火墙,fail2ban防暴力破解,这两个在生产环境里是保命用的。 -
关闭不必要的图形服务(可选但推荐)
如果你不需要同时用 GUI,可以切换运行级别到多用户模式(相当于 Linux 的纯命令行模式),能省不少资源:sudo systemctl set-default multi-user.target sudo reboot重启后登录就是黑屏命令行。如果还想偶尔用图形界面,可以用
sudo systemctl start graphical.target临时开启。 -
设置静态 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 足够,无需额外安装。
第四步:安全加固(关键!)
桌面版默认防火墙是关着的,直接暴露在网络非常危险。
-
配置 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 -
配置 Fail2Ban 防暴力破解
sudo systemctl enable fail2ban --now它会自动监控日志,发现多次失败登录就封 IP。
-
禁用 Root 远程登录
编辑/etc/ssh/sshd_config:PermitRootLogin no PasswordAuthentication yes # 或者改为 no,强制用密钥登录重启 SSH:
sudo systemctl restart sshd -
创建普通用户并授权
永远不要用 root 操作 Web 服务。sudo adduser webadmin sudo usermod -aG sudo webadmin
第五步:部署网站代码
假设你用 Nginx + PHP-FPM:
-
设置站点目录权限
sudo mkdir -p /var/www/html sudo chown -R $USER:$USER /var/www/html # 当前用户拥有所有权 sudo chmod -R 755 /var/www/html -
配置 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 版本调整 } } -
启用站点并测试配置
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置是否正确 sudo systemctl reload nginx -
上传代码
用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。
常见问题与避坑指南
-
PHP 执行不了?
- 检查
php-fpm服务是否在运行:systemctl status php8.1-fpm - 检查 Nginx 配置中的
fastcgi_pass路径是否匹配。 - 检查文件权限,Nginx 用户(www-data)必须有读取和执行权限。
- 检查
-
数据库连不上?
- MySQL 默认只监听 localhost。如果需要远程连接,需修改
/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address为0.0.0.0,并创建允许远程访问的用户。 - 注意:生产环境不建议开放 MySQL 网络访问,最好通过内网或跳板机。
- MySQL 默认只监听 localhost。如果需要远程连接,需修改
-
性能瓶颈?
- 桌面版内核参数不是最优的。可以调整
/etc/sysctl.conf增加文件描述符限制、TCP 连接队列等。 - 使用
htop监控 CPU 和内存,Nginx 是多进程模型,合理配置 worker_processes 和 worker_connections。
- 桌面版内核参数不是最优的。可以调整
-
备份!
- 定期备份数据库和网站文件。可以用
crontab写个定时任务,把/var/www/html和数据库 dump 到另一个磁盘或对象存储(如阿里云 OSS、腾讯云 COS)。
- 定期备份数据库和网站文件。可以用
总结
Ubuntu 桌面版做 Web 服务器,核心思路就是:去图形化 → 固定 IP → 装 Nginx/Apache + PHP + DB → 开防火墙 → 配 HTTPS。整个过程大概 30 分钟就能搞定一个可用的 LAMP/LNMP 环境。
但请记住,这只是“能用”,离“高可用”、“高性能”还有距离。如果是正式业务,建议迁移到云服务器(如阿里云 ECS、腾讯云 CVM),利用其弹性伸缩、负载均衡和安全组功能,会更省心也更稳定。
云技术博客