在 Ubuntu 22 上部署 Django 项目到阿里云服务器,可以按照以下详细步骤操作。以下指南将涵盖从创建 ECS 实例到配置 Nginx 和 Gunicorn 来部署 Django 应用的全过程。
步骤一:准备工作
-
创建阿里云 ECS 实例:
- 登录到阿里云控制台,进入 ECS 服务。
- 点击“创建实例”,选择“按量付费”或“包年包月”模式。
- 选择“镜像市场”或“公共镜像”,选择 Ubuntu 22.04 操作系统。
- 配置实例的规格和网络,确保选择适合的 CPU 和内存配置。
- 设置实例的密码或 SSH 密钥(建议使用 SSH 密钥)。
-
获取 ECS 实例的公网 IP 地址。
步骤二:远程连接到 ECS 实例
- 使用 SSH 连接到实例: bash
复制代码
其中ssh root@<你的实例公网IP>
<你的实例公网IP>
是你在创建实例时获得的公网 IP 地址。
步骤三:安装和配置基础环境
-
更新软件包:
bash复制代码
sudo apt update sudo apt upgrade -y
-
安装 Python 和 pip:
bash复制代码
sudo apt install python3 python3-pip -y
-
安装和设置 Virtualenv(虚拟环境,用于隔离项目依赖):
bash复制代码
sudo pip3 install virtualenv mkdir ~/myproject cd ~/myproject virtualenv venv source venv/bin/activate
步骤四:配置数据库
根据你使用的数据库来安装和配置:
-
安装 MySQL:
bash复制代码
sudo apt install mysql-server -y sudo mysql_secure_installation
- 创建 MySQL 数据库和用户: sql
复制代码
CREATE DATABASE myproject; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON myproject.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
- 创建 MySQL 数据库和用户: sql
-
安装 PostgreSQL:
bash复制代码
sudo apt install postgresql postgresql-contrib -y
- 创建 PostgreSQL 数据库和用户: bash
复制代码
sudo -i -u postgres psql CREATE DATABASE myproject; CREATE USER myuser WITH PASSWORD 'mypassword'; ALTER ROLE myuser SET client_encoding TO 'utf8'; ALTER ROLE myuser SET default_transaction_isolation TO 'read committed'; ALTER ROLE myuser SET timezone TO 'UTC'; GRANT ALL PRIVILEGES ON DATABASE myproject TO myuser; \q exit
- 创建 PostgreSQL 数据库和用户: bash
步骤五:部署 Django 项目
-
上传 Django 项目到服务器:
- 可以使用 SCP、FTP 或 Git 来上传你的 Django 项目到服务器。
- 假设项目目录为
~/myproject/myapp
。
-
安装项目依赖:
bash复制代码
cd ~/myproject/myapp pip install -r requirements.txt
-
配置 Django 项目:
- 修改
settings.py
,设置数据库配置和其他相关设置。 - 设置
ALLOWED_HOSTS
包含你的服务器 IP 或域名。 - 运行数据库迁移: bash
复制代码
python manage.py migrate
- 修改
-
创建超级用户(可选,但推荐):
bash复制代码
python manage.py createsuperuser
步骤六:安装和配置 Gunicorn
-
安装 Gunicorn:
bash复制代码
pip install gunicorn
-
测试 Gunicorn 是否能启动项目:
bash复制代码
gunicorn --bind 0.0.0.0:8000 myapp.wsgi
- 这会在端口 8000 上启动你的 Django 项目,可以通过
http://<你的实例公网IP>:8000
访问。
- 这会在端口 8000 上启动你的 Django 项目,可以通过
步骤七:安装和配置 Nginx
-
安装 Nginx:
bash复制代码
sudo apt install nginx -y
-
配置 Nginx 以反向代理 Gunicorn:
- 创建一个新的 Nginx 配置文件,例如
myproject
: bash复制代码
sudo nano /etc/nginx/sites-available/myproject
- 添加以下内容: nginx
复制代码
server { listen 80; server_name <你的域名或公网IP>; 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; } location /static/ { alias /path/to/static/; } location /media/ { alias /path/to/media/; } }
- 创建符号链接以启用配置: bash
复制代码
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
- 创建一个新的 Nginx 配置文件,例如
-
测试 Nginx 配置:
bash复制代码
sudo nginx -t
-
重新加载 Nginx:
bash复制代码
sudo systemctl restart nginx
步骤八:配置 Gunicorn 的系统服务
-
创建 Gunicorn 的 systemd 服务文件:
bash复制代码
sudo nano /etc/systemd/system/gunicorn.service
-
添加以下内容:
ini复制代码
[Unit] Description=gunicorn daemon After=network.target [Service] User=<your-username> Group=www-data WorkingDirectory=/home/<your-username>/myproject/myapp ExecStart=/home/<your-username>/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/<your-username>/myproject/myapp.sock myapp.wsgi:application [Install] WantedBy=multi-user.target
- 替换
<your-username>
为你的实际用户名。
- 替换
-
启动和启用 Gunicorn 服务:
bash复制代码
sudo systemctl start gunicorn sudo systemctl enable gunicorn
步骤九:设置静态文件
-
收集静态文件:
bash复制代码
python manage.py collectstatic
-
配置静态文件目录:
- 在 Nginx 配置中,确保静态文件和媒体文件的路径正确。
步骤十:设置域名和 SSL(可选)
-
绑定域名到你的 ECS 实例:在阿里云域名管理中,将你的域名指向 ECS 实例的公网 IP。
-
配置 SSL 证书:使用 Let's Encrypt 进行免费的 SSL 证书配置(推荐使用 Certbot)。
bash复制代码
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d <your-domain>
- 按照提示完成 SSL 证书的配置。
完成
现在,你的 Django 项目应该已经成功部署并可以通过域名或 IP 地址访问。