在AlmaLinux服务器上部署Django项目而不使用Python虚拟环境的步骤如下:
1. 安装Python和Pip
AlmaLinux 通常自带Python 3,但是版本较低。如果需要安装高版本可以执行:
1
|
dnf install python3.12 python3.12-pip -y
|
2. 创建 Django 项目的目录并上传代码
-
通过 Git 上传代码:如果您的项目已经在 GitHub 上,您可以直接将代码克隆到服务器上:
1
|
git clone https://github.com/yourusername/yourproject.git
|
-
手动上传代码:如果没有使用 Git,可以将代码压缩成 .zip
文件,使用 FTP 工具(如 FileZilla)或 SCP 上传到服务器上,然后解压:
1
|
unzip yourproject.zip -d /path/to/project/
|
3. 安装Django和其他依赖
使用 pip3
安装Django及项目所需的依赖:
1
2
3
|
pip3 install Django
# 如果有 requirements.txt 文件,可以使用:
# pip3 install -r /path/to/your/requirements.txt
|
注意:直接安装到系统环境中意味着所有用户都可以访问这些包。为避免冲突,推荐使用专门的环境管理工具,如虚拟环境。但如果项目较小且没有复杂依赖,这种方式也可以接受。
在项目目录中创建一个 Python 虚拟环境并安装依赖项:(可选)
1
2
3
4
|
cd /path/to/project/
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
|
4. 设置PostgreSQL数据库
配置数据库
切换到PostgreSQL用户并创建数据库和用户:
1
2
|
sudo -i -u postgres
psql
|
在 psql
提示符下运行以下命令:
1
2
3
4
5
6
7
|
CREATE DATABASE mydatabase;
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 mydatabase TO myuser;
\q
|
然后退出 postgres
用户:
安装 PostgreSQL 的 Python 驱动
1
|
pip3 install psycopg2-binary
|
5. 配置Django项目的数据库设置
在 settings.py
中,配置数据库:
1
2
3
4
5
6
7
8
9
10
|
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
|
6. 迁移数据库并创建超级用户
运行以下命令应用迁移和创建超级用户:
1
2
|
python3 manage.py migrate
python3 manage.py createsuperuser
|
7. 配置静态文件
在 settings.py
中配置静态文件路径:
1
2
|
STATIC_URL = '/static/'
STATIC_ROOT = '/path/to/your/static'
|
收集静态文件:
1
|
python3 manage.py collectstatic
|
8. 配置Gunicorn
为了更高效地运行Django项目,使用Gunicorn作为应用服务器:
1
2
|
pip3 install gunicorn
gunicorn --workers 3 myproject.wsgi:application
|
9. 配置Nginx作为反向代理
安装Nginx:
1
2
3
|
dnf install nginx -y
systemctl start nginx
systemctl enable nginx
|
在 /etc/nginx/conf.d/
中创建一个新配置文件,例如 myproject.conf
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
server {
listen 80;
server_name your_domain_or_ip;
location /static/ {
alias /path/to/your/static;
}
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;
}
}
|
测试Nginx配置并重启:
1
2
|
nginx -t
systemctl restart nginx
|
10. 设置系统服务以启动 Gunicorn(可选)
创建一个系统服务来管理Gunicorn,例如 /etc/systemd/system/gunicorn.service
:
1
2
3
4
5
6
7
8
9
10
11
12
|
[Unit]
Description=gunicorn daemon for Django project
After=network.target
[Service]
User=root
Group=nginx
WorkingDirectory=/path/to/your/project
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application
[Install]
WantedBy=multi-user.target
|
启动并启用Gunicorn服务:
1
2
|
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
|
11. 防火墙配置(可选)
确保阿里云控制台和服务器上打开 80 端口,以便外界可以访问 Nginx:
1
2
|
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
|
12. 访问项目
在浏览器中访问 http://your_server_ip
或您的域名以确认 Django 应用是否成功部署。
总结
- 配置 Django 项目、依赖、数据库、静态文件。
- 使用 Gunicorn 启动 Django 项目。
- 使用 Nginx 作为反向代理,并确保 Nginx 和 Gunicorn 随系统启动。
- 配置防火墙,确保服务器端口开放。
这样,您的 Django 项目就可以在阿里云的服务器上稳定运行了。
注意事项
不使用虚拟环境直接安装依赖,可能导致系统中的全局包版本冲突,建议在生产环境中仔细评估。