Django是一个基于Python的免费开源Web框架。 它是一个具有MVT(模型 - 视图 - 模板)架构模式的高级python Web框架。 Django由Django Software Foundation(DSF)维护。 Django Web框架很快,它可以帮助开发人员快速构建应用程序(RAD)。
在本教程中,我将向您展示如何安装Django Web框架并将其配置为使用PostgreSQL数据库进行开发。 为了速度和安全的原因,我们将运行Nginx作为Django Web框架的反向代理。 Django将在python WSGI HTTP服务器“Gunicorn”下运行,我们将以“Supervisor”作为过程控制系统来管理和控制“Gunicorn”。
前提条件
- Ubuntu 16.04
- 根特权
第1步 - 安装Django,Virtualenv和Gunicorn
我将使用python3作为系统的默认Python版本。 我们将在Ubuntu 16.04上安装python3和pip3。 Pip3是一个用于安装和管理用python编写的软件包的软件包管理系统。
以root用户身份连接到您的服务器,或通过SSH(如我在这里),并更新Ubuntu存储库:
ssh root@192.168.1.115
sudo apt-get update
使用此apt命令安装python3和pip3:
sudo apt-get install python3-pip python3-dev
为pip3命令创建一个新的符号链接,以便将其用作“pip”而不是“pip3”,并将其升级:
ln -s /usr/bin/pip3 /usr/bin/pip
pip install --upgrade pip
接下来,使用pip命令安装所需的python包。 我将在这里安装Django,Virtualenv和Gunicorn:
pip install django virtualenv gunicorn
第2步 - 安装和配置PostgreSQL
我们将使用PostgreSQL作为Django项目的数据库。 使用此apt命令安装PostgreSQL。
sudo apt-get install postgresql postgresql-contrib libpq-dev
安装完成后,使用pip安装名为'psycopg2'的新python包。 这是python-postgreSQL数据库适配器。
pip install psycopg2
现在访问postgres用户并使用psql命令打开PostgreSQL shell:
su - postgres
psql
使用以下命令为postgres用户设置新密码:
\password postgres
Enter new password:
接下来,为PostgreSQL中的django项目创建一个新的数据库和一个新的用户/角色。 我将使用用户/角色'python_dev'创建名为'django_db'的新数据库。 在PostgreSQL shell上键入命令。
CREATE USER python_dev WITH PASSWORD 'aqwe123';
CREATE DATABASE django_db OWNER python_dev;
查看数据库列表和角色:
\list
第3步 - 启动新的Django项目
启动名为'hello_django'的第一个Django项目。 我们不会对项目使用root权限,我将使用普通的Linux用户'natsume'作为项目。 随意使用描述您的项目的其他用户名。
创建新用户
使用以下命令创建新的Linux用户:
useradd -m -s /bin/bash natsume
passwd natsume
-m =自动创建主目录。
-s =定义用户的默认shell。
创建新的Virtualenv并安装Django
登录夏新用户:
su - natsume
使用python3作为默认的python版本,在Django项目的目录'myproject'中创建一个新的虚拟环境。
mkdir myproject
virtualenv --python=python3 myproject/
转到'myproject'目录并激活virtualenv。
cd myproject/
source bin/activate
接下来,在该环境中使用pip命令安装Django,gunicorn和psycopg2。
pip install django gunicorn psycopg2
用PostgreSQL启动新项目
使用django-admin命令启动Django项目“hello_django”:
django-admin startproject hello_django
它将创建一个新的目录'hello_django',转到该目录并使用vim编辑配置文件'setting.py'。
cd hello_django/
vim hello_django/settings.py
通过以下配置更改第76行的数据库设置:
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'django_db',
'USER': 'python_dev',
'PASSWORD': 'aqwe123',
'HOST': 'localhost',
'PORT': '',
在文件末尾,通过添加STATIC_ROOT配置行来配置静态网址:
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
保存并退出。
接下来,将数据库迁移到我们的postgreSQL数据库,并创建一个新的管理员用户。 然后将静态文件收集到执行命令时自动创建的静态目录。
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic
确保没有错误,并使用runserver命令进行django项目服务器的测试运行。
python manage.py runserver 0.0.0.0:8080
打开您的网络浏览器,并访问端口8080上的服务器IP地址,我的情况http://192.168.1.115:8080。 您将看到Django默认页面。
按Ctrl + c退出。
第4步 - 使用Gunicorn配置Django项目
Gunicorn或Green Unicorn是从RubyUnicorn项目分叉的一个python WSGI HTTP服务器。 它支持各种Web框架,易于配置。
转到'myproject'目录并激活natsume用户主目录的虚拟环境。
cd ~/myproject/
source bin/activate
使用vim在bin目录下创建一个新文件'gunicorn_start':
vim bin/gunicorn_start
粘贴配置如下:
#!/bin/bash
# Project Name
NAME="hello_django"
# Django Project Directory
DJANGODIR=/home/natsume/myproject/hello_django
# Run gunicorn on the socket file
SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock
# Gunicorn running as user and group
USER=natsume
GROUP=natsume
# Workers
NUM_WORKERS=3
#Module Setting
#replace hello_django with your project name
DJANGO_SETTINGS_MODULE=hello_django.settings
DJANGO_WSGI_MODULE=hello_django.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
保存并退出。
使用chmod命令使文件可执行。
chmod u+x bin/gunicorn_start
第5步 - 安装和配置主管
主管是Linux操作系统的过程控制系统。 它允许您在Linux上配置,监视和控制多个进程。 主管基于python,我们可以使用pip命令从python存储库pypi安装它,或者通过apt从ubuntu存储库安装它。
我将使用此apt命令安装主管:
sudo apt-get install supervisor
Supervisor在'/ ect / supervisor /'目录中有一个默认配置文件。 转到该目录并为我们的Django项目创建一个新配置,以便我们可以用主管来控制它。
cd /etc/supervisor/conf.d/
vim hello-django.conf
粘贴Supervisor配置如下:
[program:hello_django]
command = sh /home/natsume/myproject/bin/gunicorn_start
user = natsume
stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
保存并退出。
接下来,登录natsume用户并创建一些目录,这些目录是gunicorn套接字文件和主管日志文件所必需的。
su - natsume
# Directory for gunicorn sock file
mkdir -p myproject/hello_django/run/
# Directory and file for supervisor log files
mkdir -p myproject/logs/
touch myproject/logs/gunicorn_supervisor.log
使用“退出”返回root用户并启动主管:
exit
systemctl start supervisor
检查过程的状态和日志:
supervisorctl
tail -f hello_django
第6步 - 为Django项目安装和配置Nginx
在这一步中,我们将安装Nginx并将其配置为Django项目的反向代理。
从Ubuntu版本库安装Nginx:
sudo apt-get install nginx
转到Nginx虚拟主机配置目录并创建一个hello_django虚拟主机文件:
cd /etc/nginx/sites-available/
vim hello_django
粘贴配置如下:
# Django running with Gunicorn Sock file
upstream hello_django_project {
server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name www.django-nginx.com;
client_max_body_size 4G;
access_log /home/natsume/myproject/logs/nginx-access.log;
error_log /home/natsume/myproject/logs/nginx-error.log;
location /static/ {
alias /home/natsume/myproject/hello_django/static/;
}
location /media/ {
alias /home/natsume/myproject/hello_django/media/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
# Try to serve static files from nginx, no point in making an
# *application* server like Unicorn/Rainbows! serve static files.
if (!-f $request_filename) {
proxy_pass http://hello_django_project;
break;
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/natsume/myproject/hello_django/static/;
}
}
}
保存并退出。
激活虚拟主机并测试Nginx配置。
ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
nginx -t
确保没有错误,然后重新启动Nginx:
systemctl restart nginx
第7步 - 测试Django
在第5步中,我们为Django项目创建了一个名为“www.django-nginx.com”的虚拟主机。 打开浏览器并访问您为项目选择的域名。
www.django-nginx.com/admin/
而您将被重定向到Django管理员信息板。
检查我们设置的所有服务是否正在运行,命令如下:
netstat -pl
您将看到所有服务使用的pid,port和sock文件。
Ubuntu 16.04上的PostgreSQL和Nginx的Django安装和配置已经成功。