CentOS中怎么部署Django项目

发布时间:2021-07-12 14:25:25 作者:Leah
来源:亿速云 阅读:177
# CentOS中怎么部署Django项目

本文将详细介绍在CentOS系统上部署Django项目的完整流程,涵盖环境准备、项目配置、数据库设置以及Nginx+Gunicorn的生产环境部署方案。

---

## 一、环境准备

### 1. 更新系统
```bash
sudo yum update -y
sudo yum install -y epel-release  # 安装EPEL仓库

2. 安装Python3

sudo yum install -y python3 python3-devel
python3 --version  # 确认版本(建议Python 3.6+)

3. 安装必要工具

sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel

二、创建虚拟环境

1. 安装virtualenv

pip3 install virtualenv

2. 创建并激活环境

mkdir ~/myproject && cd ~/myproject
virtualenv venv
source venv/bin/activate  # 激活环境

三、安装Django及相关依赖

1. 安装Django

pip install django

2. 安装其他依赖

pip install gunicorn psycopg2-binary  # 以PostgreSQL为例

3. 导出依赖清单

pip freeze > requirements.txt

四、配置Django项目

1. 修改settings.py

DEBUG = False
ALLOWED_HOSTS = ['your_server_ip', 'domain.com']

# 数据库配置(以PostgreSQL为例)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

# 静态文件设置
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

2. 收集静态文件

python manage.py collectstatic

五、数据库安装与配置

1. 安装PostgreSQL

sudo yum install -y postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql

2. 创建数据库用户

sudo -u postgres psql
CREATE DATABASE mydb;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
\q

六、部署到生产环境

1. 安装并配置Gunicorn

pip install gunicorn
gunicorn --bind 0.0.0.0:8000 myproject.wsgi  # 测试运行

2. 创建Systemd服务

创建/etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=username
Group=nginx
WorkingDirectory=/home/username/myproject
ExecStart=/home/username/myproject/venv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/home/username/myproject/myproject.sock \
          myproject.wsgi:application

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

3. 安装配置Nginx

sudo yum install -y nginx

编辑/etc/nginx/conf.d/django.conf

server {
    listen 80;
    server_name your_domain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    
    location /static/ {
        root /home/username/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/username/myproject/myproject.sock;
    }
}

启动Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

七、防火墙配置

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

八、验证部署

访问服务器IP或域名,确认Django项目正常运行:

curl http://localhost

常见问题解决

  1. 502 Bad Gateway错误

    • 检查Gunicorn服务状态:sudo systemctl status gunicorn
    • 确认socket文件权限:chmod 755 /home/username/myproject
  2. 静态文件404错误

    • 确认STATIC_ROOT设置正确
    • 检查Nginx配置中的静态文件路径
  3. 数据库连接问题

    • 验证PostgreSQL的pg_hba.conf配置
    • 检查Django的数据库配置参数

通过以上步骤,您的Django项目已成功部署到CentOS生产环境。建议定期更新系统和软件包以确保安全性。 “`

(全文约900字)

推荐阅读:
  1. centos8如何使用Docker部署Django项目
  2. Centos8下django项目怎么部署nginx+uwsgi

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django centos

上一篇:UITableView中Cell重用机制导致内容重复怎么办

下一篇:css 中多种边框的实现方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》