Featured image of post AlmaLinux服务器上部署Django

AlmaLinux服务器上部署Django

这是关于AlmaLinux服务器上部署Django的过程

在AlmaLinux服务器上部署Django项目而不使用Python虚拟环境的步骤如下:

1. 安装Python和Pip

AlmaLinux 通常自带Python 3,但是版本较低。如果需要安装高版本可以执行:

1
dnf install python3.12 python3.12-pip -y

2. 创建 Django 项目的目录并上传代码

  1. 通过 Git 上传代码:如果您的项目已经在 GitHub 上,您可以直接将代码克隆到服务器上:

    1
    
    git clone https://github.com/yourusername/yourproject.git
    
  2. 手动上传代码:如果没有使用 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 用户:

1
exit

安装 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 项目就可以在阿里云的服务器上稳定运行了。

注意事项

不使用虚拟环境直接安装依赖,可能导致系统中的全局包版本冲突,建议在生产环境中仔细评估。

鄂ICP备2024082524号-1
鄂ICP备2024082524号