温馨提示×

如何在Debian Stream 8上部署Web应用

小樊
33
2025-12-11 08:24:17
栏目: 智能运维

在 Debian 12(常被误写为 Debian Stream 8)上部署 Web 应用的实操指南

一 准备与环境校验

  • 更新系统并安装常用工具:sudo apt update && sudo apt install -y curl wget vim htop ufw
  • 启动并自启防火墙:sudo ufw enable;按需放行端口(例如:sudo ufw allow 80,443,22/tcp)
  • 若使用云服务器,还需在云平台安全组放行对应端口(如 80/443
  • 建议创建非 root 应用用户:sudo adduser --disabled-password --gecos “” appuser && sudo usermod -aG sudo appuser
  • 目录规范:静态站点推荐 /var/www/your-app;Java 应用推荐 /opt/your-app

二 静态站点 Nginx 部署

  • 安装 Nginx:sudo apt install -y nginx && sudo systemctl start nginx && sudo systemctl enable nginx
  • 部署文件:将本地打包产物(Vue/React 的 dist/build 目录内容)上传至 /var/www/your-app
    • 示例:scp -r dist/* appuser@your_ip:/var/www/your-app
  • 配置站点(/etc/nginx/sites-available/your-app):
    • 示例:
      • server { listen 80; server_name your_domain_or_ip; root /var/www/your-app; index index.html; location / { try_files $uri $uri/ =404; } }
  • 启用站点并重载:sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx
  • 访问验证:浏览器打开 http://your_domain_or_ip

三 Java JSP 或 WAR 应用 Tomcat 部署

  • 安装 Java:sudo apt install -y openjdk-11-jdk && java -version
  • 安装 Tomcat 9:sudo apt install -y tomcat9 && sudo systemctl start tomcat9 && sudo systemctl enable tomcat9
  • 部署 WAR:将应用打包为 your-app.war,复制到 /var/lib/tomcat9/webapps/(Tomcat 会自动解压部署)
  • 访问验证:http://your_ip:8080/your-app(上下文路径通常与 WAR 文件名一致)
  • 日志排查:tail -f /var/log/tomcat9/catalina.out
  • 可选 HTTPS:在 /etc/tomcat9/server.xml 配置 8443 端口与证书,或前置 Nginx 终止 TLS

四 Python WSGI 应用 Apache Gunicorn 部署

  • 安装依赖:sudo apt install -y apache2 python3-pip python3-venv
  • 准备应用与虚拟环境:
    • mkdir -p /opt/yourapp && cd /opt/yourapp
    • python3 -m venv venv && source venv/bin/activate
    • pip install -r requirements.txt gunicorn flask # 以 Flask 为例
  • 测试 Gunicorn:gunicorn -b 127.0.0.1:8000 app:app
  • 配置 Apache(启用 mod_wsgi):sudo a2enmod wsgi
  • 虚拟主机(/etc/apache2/sites-available/yourapp.conf):
    • 示例:
      • <VirtualHost *:80>
        • ServerName your_domain_or_ip
        • WSGIDaemonProcess yourapp python-home=/opt/yourapp/venv python-path=/opt/yourapp
        • WSGIProcessGroup yourapp
        • WSGIScriptAlias / /opt/yourapp/wsgi.py
        • <Directory /opt/yourapp>
          • Require all granted
        • ErrorLog ${APACHE_LOG_DIR}/error.log
        • CustomLog ${APACHE_LOG_DIR}/access.log combined
  • 启用站点并重启:sudo a2ensite yourapp.conf && sudo systemctl reload apache2
  • 访问验证:http://your_domain_or_ip

五 Docker 容器化 Nginx 反向代理部署

  • 安装 Docker:
    • sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
    • curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    • echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | tee /etc/apt/sources.list.d/docker.list > /dev/null
    • sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  • 构建镜像(示例静态站点):
    • Dockerfile:FROM nginx:latest COPY . /usr/share/nginx/html
    • 构建运行:docker build -t mywebapp . && docker run -d -p 8080:80 mywebapp
  • Nginx 反向代理(/etc/nginx/sites-available/yourapp):
    • 示例:
      • server { listen 80; server_name your_domain; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
  • 重载 Nginx:sudo nginx -t && sudo systemctl reload nginx
  • 访问验证:http://your_domain

0