下面按最常见场景给你一个完整、实用的 Ubuntu + Apache2 部署项目教程。
我会从 环境准备 → 部署静态 / 动态项目 → 常见坑 一步步讲。
sudo apt update
sudo apt upgrade -y
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2
浏览器访问:
http://服务器IP
看到 Apache2 Ubuntu Default Page 即成功 ✅
sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload
查看状态:
sudo ufw status
Apache 默认站点目录:
/var/www/html
cd /var/www/html
sudo rm index.html
sudo git clone 你的项目.git
# 或
sudo scp 本地文件 root@ip:/var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
✅ 静态项目到这里就完成了
sudo apt install php libapache2-mod-php php-mysql php-xml php-mbstring php-curl -y
sudo nano /etc/apache2/sites-available/000-default.conf
示例:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo a2enmod rewrite
sudo systemctl restart apache2
✅ PHP 项目完成
sudo apt install python3 python3-pip apache2-dev -y
sudo pip3 install mod_wsgi
sudo nano /etc/apache2/sites-available/flask.conf
示例(Flask):
<VirtualHost *:80>
ServerName example.com
WSGIDaemonProcess flaskapp python-home=/var/www/flask/venv python-path=/var/www/flask
WSGIScriptAlias / /var/www/flask/app.wsgi
<Directory /var/www/flask>
Require all granted
</Directory>
</VirtualHost>
sudo a2ensite flask.conf
sudo systemctl restart apache2
Apache 通常 反向代理 到 Spring Boot
java -jar app.jar --server.port=8080
sudo a2enmod proxy proxy_http
配置:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
域名 A 记录指向服务器 IP
ServerName www.example.com
ServerAlias example.com
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache
自动续签:
sudo certbot renew --dry-run
sudo chown -R www-data:www-data 项目目录
sudo tail -n 50 /var/log/apache2/error.log
sudo systemctl restart apache2
Ubuntu + Apache2 部署项目 = 安装 Apache → 放代码 → 配置站点 → 权限 + 防火墙
如果你愿意,可以告诉我:
我可以直接给你 一份完全可用的配置文件 ✅