在Debian 8上设置Django
杨和超
・7 分钟阅读
本教程介绍如何在Debian8 Jessie上设置Django,我会演示如何同时使用python 2和3以及nginx和PostgreSQL 。
本教程中完成的一切都以root完成。
安装软件包
首先,我们需要安装一些软件包。
对于python 2:
apt-get install python-pip python-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
对于python 3:
apt-get install python3-pip python3-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
安装数据库
首先,我们登录到用户postgres
。
sudo -u postgres -s
接下来,我们创建一个新数据库,数据库名称可以是你希望它成为(这里使用了dbname
)的任何内容,但是你必须与设置的其余部分一致。
createdb dbname
为新数据库创建用户,同样,这可以是你想要的,但是,我使用了dbuser
,这也将要求你设置密码。
createuser -P dbuser
用户现在必须被授予对数据库的访问权限,请确保使用正确的数据库名称和用户名。
psql
postgres=# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
postgres=# q
退出root 。
exit
启用并启动PostgreSQL :
systemctl enable postgresql
systemctl start postgresql
设置虚拟环境
我们不只是使用全局python文件,而是使用虚拟环境,我们首先创建一个目录来保存它。
mkdir -p /opt/project
我们现在创建环境。 这对于python 2和3用户是不同
对于python 2:
virtualenv . -p python
对于python 3:
virtualenv . -p python3
输入虚拟环境。
source bin/activate
安装Django Gunicorn和PSycopg2
pip install django
pip install gunicorn
pip install psycopg2
如果需要Django的特定版本,请更改安装命令以匹配下面的格式,本例子安装1.7.8.
pip install django==1.7.8
现在我们已经完成了这个任务,所以,我们可以停用虚拟环境。
deactivate
项目上载和配置
现在是我们将项目上传到服务器的时间,我们确保所有设置都正确。你可以使用任何方法来执行这个操作,FTP,SFTP,git等等都可以的,如果使用git跟踪项目代码,则可以将它克隆到服务器,这个git命令将项目克隆到服务器并将它放入/opt/project/project/
。
git clone http://example.com:project.git
在任何文本浏览器中打开settings.py
文件。
首先,调试模式需要关闭,查找DEBUG =True
行并将True
更改为False
,之后,确保你已经将ALLOWED_HOSTS
设置为某个值。
ALLOWED_HOSTS = ['*']
查找DATABASES
字典,它应该如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'password you set',
'HOST': 'localhost',
'PORT': ''
}
}
这里的最后一步是设置静态root ,将以下内容直接放在STATIC_URL
下面。
STATIC_ROOT = '/opt/project/static/'
退出文件并创建静态root目录。
mkdir -p /opt/project/static
现在迁移数据库,创建超级用户,并收集所有静态文件。
cd /opt/project/project
../bin/python manage.py makemigrations
../bin/python manage.py migrate
../bin/python manage.py createsuperuser
../bin/python manage.py collectstatic
配置Gunicorn
Gunicorn是我们将要使用的WSGI服务器,由于Debian 8带有systemd我们会利用systemd来启动和停止服务器。
创建文件/etc/systemd/system/django.service
,并且添加以下内容。
[Unit]
Description=Django with Gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/project
ExecStart=/opt/project/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 project.wsgi
[Install]
WantedBy=multi-user.target
启用并启动我们创建的服务。
systemctl enable django.service
systemctl start django.service
Nginx
你可能已经注意到我们将Gunicorn服务器绑定到127.0.0.1.
,现在我们需要一种从服务器外部访问它的方法,这就是Nginx进来的地方。
创建新文件/etc/nginx/sites-available/django
,并且添加以下内容,可以将domain.example.com
部件设置为你需要的任何内容。
server {
listen 80;
server_name domain.example.com;
access_log off;
location /static/ {
alias /opt/project/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
创建一个符号链接以启用此站点。
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
启用和启动Nginx 。
systemctl enable nginx
systemctl start nginx
结束语
恭喜,在你的Debian VPS上,现在有一个运行的Django站点。