香港VPS服务器如何在服务器上部署Python应用?

香港 VPS 服务器上部署 Python Django 应用是一项常见的任务,它涉及环境配置、代码部署、数据库设置以及应用的启动与管理。


1. 环境准备

1.1 更新服务器系统

在部署之前,确保服务器操作系统是最新的。

bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS
sudo yum update -y

1.2 安装必要工具

安装 Python、pip 和其他开发工具。

bash
# Ubuntu/Debian
sudo apt install python3 python3-pip python3-venv build-essential libpq-dev -y

# CentOS
sudo yum install python3 python3-pip python3-virtualenv gcc gcc-c++ make libpq-devel -y

1.3 安装 Web 服务器

通常选择 NginxApache 作为反向代理服务器。

bash
# Ubuntu/Debian
sudo apt install nginx -y

# CentOS
sudo yum install nginx -y

2. 配置 Django 应用

2.1 上传项目文件

通过 SFTP、scp 或 Git 将 Django 项目代码上传到服务器。例如:

bash
scp -r /path/to/your/django/project user@your_server_ip:/var/www/

假设项目路径为 /var/www/myproject/


2.2 创建 Python 虚拟环境

在项目目录中创建虚拟环境并激活它:

bash
cd /var/www/myproject/
python3 -m venv venv
source venv/bin/activate

2.3 安装依赖

使用 pip 安装项目所需的依赖(通常在 requirements.txt 文件中)。

bash
pip install -r requirements.txt

2.4 配置 Django 设置

  1. 更新 settings.py 文件

    • 调试模式
      python
      DEBUG = False
      
    • 允许的主机
      python
      ALLOWED_HOSTS = ['your_server_ip', 'your_domain']
      
  2. 静态文件目录
    如果项目使用静态文件,确保配置正确的路径:

    python
    STATIC_ROOT = '/var/www/myproject/static/'
    
  3. 生成静态文件

    bash
    python manage.py collectstatic
    

2.5 数据库配置

安装数据库

如果使用 PostgreSQL:

bash
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib -y

# CentOS
sudo yum install postgresql-server postgresql-contrib -y

创建数据库和用户

  1. 切换到 PostgreSQL 用户:

    bash
    sudo -u postgres psql
    
  2. 创建数据库和用户:

    sql
    CREATE DATABASE myproject;
    CREATE USER myprojectuser WITH PASSWORD 'your_password';
    ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
    ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
    ALTER ROLE myprojectuser SET timezone TO 'UTC';
    GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
    \q
    
  3. 更新 settings.py 配置:

    python
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'myproject',
            'USER': 'myprojectuser',
            'PASSWORD': 'your_password',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }
    
  4. 运行迁移:

    bash
    python manage.py migrate
    

3. 配置 Gunicorn

Gunicorn 是一个常用的 WSGI 服务器,用于运行 Django 应用。

3.1 安装 Gunicorn

在虚拟环境中安装 Gunicorn:

bash
pip install gunicorn

3.2 测试 Gunicorn

运行以下命令以测试 Gunicorn 是否能正常启动应用:

bash
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

如果显示应用启动信息且可以通过浏览器访问,则说明 Gunicorn 配置正常。


4. 配置 Nginx

Nginx 通常用作反向代理,将客户端请求转发给 Gunicorn。

4.1 配置 Nginx 文件

创建 Nginx 配置文件,例如 /etc/nginx/sites-available/myproject

nginx
server {
    listen 80;
    server_name your_domain_or_ip;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/myproject;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4.2 启用配置

  1. 创建软链接:

    bash
    sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
    
  2. 测试 Nginx 配置:

    bash
    sudo nginx -t
    
  3. 重启 Nginx:

    bash
    sudo systemctl restart nginx
    

5. 配置 Supervisor(可选)

Supervisor 用于管理 Gunicorn 进程,确保其在服务器重启后自动启动。

5.1 安装 Supervisor

bash
# Ubuntu/Debian
sudo apt install supervisor -y

# CentOS
sudo yum install supervisor -y

5.2 配置 Gunicorn 服务

创建 Supervisor 配置文件,例如 /etc/supervisor/conf.d/myproject.conf

plaintext
[program:myproject]
command=/var/www/myproject/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application
directory=/var/www/myproject
user=www-data
autostart=true
autorestart=true
stderr_logfile=/var/log/myproject.err.log
stdout_logfile=/var/log/myproject.out.log

5.3 启用 Supervisor

  1. 更新 Supervisor 配置:

    bash
    sudo supervisorctl reread
    sudo supervisorctl update
    
  2. 启动 Gunicorn:

    bash
    sudo supervisorctl start myproject
    

6. HTTPS 配置(可选但推荐)

为安全起见,建议为应用配置 HTTPS。可以使用免费工具 Certbot 配置 SSL。

6.1 安装 Certbot

bash
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx -y

# CentOS
sudo yum install certbot python3-certbot-nginx -y

6.2 获取 SSL 证书

bash
sudo certbot --nginx -d your_domain

6.3 自动续期

Certbot 会自动续期证书,但可以通过以下命令测试:

bash
sudo certbot renew --dry-run

7. 测试与优化

7.1 测试应用

  • 通过域名或 IP 访问应用,确认其能正常运行。
  • 检查静态文件是否加载正常。

7.2 性能优化

  1. 启用 Gzip 压缩(在 Nginx 中配置):

    nginx
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
  2. 调整 Gunicorn 工作进程
    根据香港VPS服务器的 CPU 核心数设置 Gunicorn 的工作进程数量:

    bash
    gunicorn --workers 4 --bind 0.0.0.0:8000 myproject.wsgi:application
    

8. 总结

步骤 操作
环境准备 安装 Python、pip、Nginx、数据库等依赖。
配置 Django 上传项目、创建虚拟环境、安装依赖、配置数据库、收集静态文件。
运行 Gunicorn 测试运行 Django 应用。
配置 Nginx 设置反向代理,处理静态文件和客户端请求转发。
自动化管理 使用 Supervisor 管理 Gunicorn。
启用 HTTPS 使用 Certbot 配置 SSL 证书,提升安全性。

 

通过以上步骤,您可以在香港VPS服务器上成功部署 Django 应用,确保其高效、安全地运行。

超过 50,000 人的信任 网硕互联期待你加入我们的会员。