如何在FreeBSD 10.2上使用Gunicorn和Nginx安装Django
Django是基于python的Web框架,由Django Software Foundation维护。
它是一个免费的开源python框架,用于构建宏Web应用程序。
Django功能强大,使开发过程如此之快,使应用程序简单实用。
使开发人员易于维护和部署项目。
Django是具有MVC(模型-视图-控制器)概念的高级python框架,被mozilla,pinterest,disquss,instagram,bitbucket等大使用。
在本教程中,我们将指导有关django的安装。
我们将安装带有gunicorn,supervisor和nginx的django 1.9作为Web服务器。
Nginx在端口80上运行,而django框架在带有gunicorn sock文件的gunicorn下运行。
第1步-更新FreeBSD存储库
登录到freebsd服务器并使用'freebsd-update'命令更新存储库:
freebsd-update fetch freebsd-update install
第2步-安装Python,SQLite3和Pip
在这一步中,我们将使用pip安装python 2.7.
如果要使用python3,请使用MySQL或者PostgreSQL作为django数据库。
我们将使用以下命令从freebsd存储库安装python和pip:
pkg install python pkg install py27-pip
并使用以下命令将pip更新到最新版本:
pip install --upgrade pip
接下来,使用pkg命令安装sqlite3 databse和python模块py27-sqlite3:
pkg install sqlite3 pkg install py27-sqlite3
在freebsd服务器上安装了Python,pip和SQLite3.
第3步-在虚拟环境中安装Django
我们将使用名为“ vagrant”的普通用户(而不是root用户)安装和部署django。
我们将在virtualenv下安装django,它是虚拟python环境构建器,用于创建隔离的python环境的工具。
Virtualenv在PyPI存储库上可用,我们可以使用pip命令安装它:
pip install virtualenv
接下来切换到用户“ vagrant”:
su - vagrant
使用python2.7作为版本创建名为“ myenv”的新虚拟环境。
我们可以使用virtualenv命令创建它:
mkvirtualenv --python=python2.7 myenv
它将创建一个名为“ myenv”的新目录,进入该目录并激活之前创建的虚拟环境:
cd myenv source bin/activate
这是我们安装django 1.9和gunicorn的时候,在virtualenv下使用pip命令安装所有工具:
pip install django==1.9 pip install gunicorn
Django和Gunicorn已安装,我们可以使用pip命令进行检查:
pip list Django (1.9) gunicorn (19.4.1)
接下来,使用django创建新的示例项目。
我们将使用django-admin命令创建名为“ myproject”的新项目:
django-admin startproject myproject
该命令将创建新目录“ myproject”,转到该目录并通过运行manage.py文件测试django的安装:
cd myproject/ python manage.py runserver
runserver =使用端口8000启动django项目。
如果没有错误,请编辑django项目目录中的setting.py文件,继续进行下一步:
nano -c myproject/settings.py
在该行的末尾添加以下配置:
STATIC_ROOT = '/home/vagrant/myenv/myproject/static/' STATIC_URL = '/static/' MEDIA_ROOT = '/home/vagrant/myenv/myproject/media/' MEDIA_URL = '/media/'
保存并退出。
并通过运行以下命令生成静态文件:
python manage.py collectstatic
collectstatic用于管理静态文件,它将django静态文件复制到myproject目录上的目录“ static”。
Django已配置,最后我们需要配置gunicorn。
转到“ myenv”目录并激活环境,然后在bin目录中创建新文件:
cd /home/vagrant/myenv/ source bin/activate nano -c bin/gunicorn_start
粘贴配置如下:
#!/bin/bash NAME="myproject" # Django Project Name DJANGODIR=/home/vagrant/myenv/myproject # Django Project Directory SOCKFILE=/home/vagrant/myenv/myproject/run/gunicorn.sock # Gunicorn Sock File USER=vagrant # Django Project Running under user vagrant GROUP=vagrant # Django Project Running under group vagrant NUM_WORKERS=3 DJANGO_SETTINGS_MODULE=myproject.settings # change 'myproject' with your project name DJANGO_WSGI_MODULE=myproject.wsgi # change 'myproject' with your project name 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 u+x bin/gunicorn_start
Django配置了gunicorn,django将在gunicorn sock文件下运行。
注意:如果要退出virtualenv,可以使用命令“ deactivate”。
步骤4-安装Supervisord
Supervisor是Linux和Unix操作系统上的进程控件,允许用户监视和控制进程数。
在本教程中,我们需要一个py-supervisor来控制与django项目一起运行的gunicorn。
使用pkg命令从freebsd存储库安装py-supervisor:
pkg install py-supervisor
如果完成,请使用sysrc命令将超级用户添加到启动时间,然后启动它:
sysrc supervisord_enable=yes service supervisord start
Supervisor已启动,但是我们需要向其中添加应用程序。
我们可以通过编辑超级用户配置文件,转到目录并使用nano编辑文件'supervisord.conf'来实现:
cd /usr/local/etc/ nano -c supervisord.conf
在该行的末尾,在下面添加我们的应用程序配置:
[program:myproject] command = sh /home/vagrant/myenv/bin/gunicorn_start user = vagrant stdout_logfile = /home/vagrant/myenv/logs/gunicorn_supervisor.log redirect_stderr = true environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
保存并退出。
现在,我们必须使用用户vagrant为gunicorn日志文件创建新目录:
mkdir -p /home/vagrant/myenv/logs/ touch /home/vagrant/myenv/logs/gunicorn_supervisor.log
重新启动主管并检查我们的应用程序正在运行:
service supervisord restart supervisorctl status
第5步-安装Nginx
我们将使用nginx作为服务器的前端,并在端口80上运行。
如果有人从浏览器进行访问,则该连接将传递到与sock文件一起运行的gunicorn。
使用pkg命令从freebsd存储库中安装nginx:
pkg install nginx
接下来,为我们的django项目配置virtualhost。
转到nginx配置目录并其中创建名为vhost的新目录:
cd /usr/local/etc/nginx/ mkdir -p vhost/
转到vhost目录并创建新的文件配置“ mydjango.conf”:
cd vhost/ nano -c mydjango.conf
在下面粘贴virtualhost配置:
upstream myproject_server { server unix:/home/vagrant/myenv/myproject/run/gunicorn.sock fail_timeout=0; } server { listen 80; server_name www.djangofreebsd.com; client_max_body_size 4G; access_log /home/vagrant/myenv/logs/nginx-access.log; error_log /home/vagrant/myenv/logs/nginx-error.log; location /static/{ alias /home/vagrant/myenv/myproject/static/; } location /media/{ alias /home/vagrant/myenv/myproject/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://myproject_server; break; } } # Error pages error_page 500 502 503 504 /500.html; location = /500.html { root /home/vagrant/myenv/myproject/static/; } }
保存并退出。
现在,我们必须将virtualhost配置添加到nginx.conf中。
返回nginx目录,使用nano编辑文件nginx.conf:
cd /usr/local/etc/nginx/ nano -c nginx.conf
在行末之前,在下面添加行:
include vhost/*.conf;
保存并退出。
测试nginx配置,如果没有错误,则将nginx添加到启动时间:
nginx -t sysrc nginx_enable=yes
最后,重新启动超级用户并启动nginx:
service supervisord restart service nginx start
现在,我们可以使用浏览器访问django应用程序,在本教程中,我们使用域www.mydjango.co。