部署Django项目的全过程可以分为以下几个步骤:
1. 安装Python和pip
在CentOS系统下,可以使用yum包管理器进行安装。首先更新yum:
sudo yum update
然后安装Python和pip:
sudo yum -y install python36
sudo yum -y install python36-pip
2. 安装Virtualenv
为了隔离不同的Python项目,我们需要使用一个虚拟环境。这里介绍使用Virtualenv。
安装Virtualenv:
sudo pip3 install virtualenv
创建虚拟环境:
virtualenv name_of_environment
激活虚拟环境:
source name_of_environment/bin/activate
3. 安装Django和其他依赖
在虚拟环境中,使用pip安装Django和其他需要的依赖:
pip install django
pip install psycopg2-binary (如果需要连接PostgreSQL数据库)
pip install django-cors-headers (如果需要解决跨域问题)
4. 创建Django项目
使用Django的命令行工具创建项目:
django-admin startproject project_name
创建完毕后,可以使用以下命令启动Django应用:
python manage.py runserver
5. 配置数据库
在Django项目中,可以使用多种数据库。这里以PostgreSQL为例。
首先需要安装PostgreSQL,使用yum安装:
sudo yum -y install postgresql
安装完成后,创建数据库和用户:
sudo su - postgres
createdb database_name
createuser -P
Enter password for new user:
Enter it again:
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
编辑Django项目中的settings.py文件,将DATABASES中的信息修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'database_name',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
6. 配置静态文件
如果需要使用静态文件,需要在settings.py中添加以下内容:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
同时,在项目的根目录下创建一个名为static的文件夹,并将静态文件放在其中。
7. 部署项目
使用uwsgi和nginx进行项目的部署。首先安装uwsgi:
sudo pip3 install uwsgi
创建一个名为uwsgi.ini的文件,内容如下:
[uwsgi]
chdir = /path/to/project
module = project_name.wsgi:application
master = true
process = 4
socket = /path/to/project/project_name.sock
chmod-socket = 666
vacuum = true
其中,chdir是项目的绝对路径,module是wsgi的路径(注意后面有个冒号),socket是uwsgi的socket文件路径。
安装nginx:
sudo yum -y install nginx
配置nginx,在/etc/nginx/conf.d目录下创建一个名为project_name.conf的文件,内容如下:
server {
listen 80;
server_name your_domain_name;
location / {
uwsgi_pass unix:///path/to/project/project_name.sock;
include /etc/nginx/uwsgi_params;
}
location /static/ {
autoindex on;
alias /path/to/project/static/;
}
}
其中,server_name是你的域名,location /static/是静态文件的路径。
启动nginx和uwsgi:
sudo systemctl start nginx
uwsgi --ini uwsgi.ini
至此,Django项目的部署就完成了。