Ubuntu 14.04使用Nginx uWSGI部署Django应用

Django是一个高级的Python Web框架,Django的主要目的是简便、快速的开发数据库驱动的网站。本文介绍了在Ubuntu 14.04上使用uWSGI和nginx部署Django应用程序。

安装nginx, Python工具和uWSGI



1.安装nginx,SQLite Python bindings和管理Python工具所需的系统包:

  1. sudo apt-get install build-essential nginx python-dev python-pip python-sqlite sqlite

2.安装virtualenv和virtualenvwrapper:

  1. sudo pip install virtualenv virtualenvwrapper

virtualenv和virtualenvwrapper是创建隔离的Python环境的工具。 它们有助于更好地管理应用程序依赖性,版本和权限。 要使virtualenvwrapper正常工作,请运行以下命令:

  1. echo "export WORKON_HOME=~/Env" >> ~/.bashrc
  2. echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

3.在当前会话中激活virtualenvwrapper:

  1. source ~/.bashrc

4.使用pip安装uWSGI:

  1. sudo pip install uwsgi

配置Django应用程序示例



1.确保您在django用户的主目录中并为应用程序创建虚拟环境:

  1. cd /home/django && mkvirtualenv sample

执行此命令后,您的提示将更改为(sample)django@example.com:~$表示您正在使用sample虚拟环境。 要退出虚拟环境,请输入deactivate。
2.安装Django framework

  1. pip install Django

3.创建新的Django应用程序示例,位于/home/django/sample:

  1. django-admin.py startproject sample

4.切换到Django应用程序的目录并初始化SQLite数据库:

  1. cd ~/sample && ./manage.py migrate

5.当使用nginx运行Django时,需要配置Django将所有静态资源放在应用程序的静态文件夹中。 在settings.py中指定其位置:

  1. echo 'STATIC_ROOT = os.path.join(BASE_DIR, "static/")' >> sample/settings.py

6.运行以下命令将所有静态资源移动到上述目录中:

  1. ./manage.py collectstatic

7.启动开发服务器以测试示例应用程序:

  1. ./manage.py runserver 0.0.0.0:8080

请在您的浏览器中访问http://example.com:8080,以确认示例应用程序已正确设置并正常工作。 您应该会看到Django测试页。

配置uWSGI



1.创建目录以存放uWSGI配置

  1. sudo mkdir -p /etc/uwsgi/sites

2.创建配置文件sample.ini:
/etc/uwsgi/sites/sample.ini:

  1. [uwsgi]
  2. project = sample
  3. base = /home/django
  4.  
  5. chdir = %(base)/%(project)
  6. home = %(base)/Env/%(project)
  7. module = %(project).wsgi:application
  8.  
  9. master = true
  10. processes = 2
  11.  
  12. socket = %(base)/%(project)/%(project).sock
  13. chmod-socket = 664
  14. vacuum = true

3.为uWSGI创建Upstart job:
/etc/init/uwsgi.conf:

  1. description "uWSGI"
  2. start on runlevel [2345]
  3. stop on runlevel [06]
  4. respawn
  5.  
  6. env UWSGI=/usr/local/bin/uwsgi
  7. env LOGTO=/var/log/uwsgi.log
  8.  
  9. exec $UWSGI --master --emperor /etc/uwsgi/sites --die-on-term --uid django --gid www-data --logto $LOGTO

4.启动uwsgi服务

  1. sudo service uwsgi start

配置Nginx



1.删除默认的nginx站点配置:

  1. sudo rm /etc/nginx/sites-enabled/default

2.为您的Django应用程序创建一个nginx站点配置文件:
/etc/nginx/sites-available/sample:

  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.  
  5.     location = /favicon.ico { access_log off; log_not_found off; }
  6.     location /static/ {
  7.         root /home/django/sample;
  8.     }
  9.  
  10.     location / {
  11.         include         uwsgi_params;
  12.         uwsgi_pass      unix:/home/django/sample/sample.sock;
  13.     }
  14. }

3.创建指向nginx sites-enabled目录的符号链接以启用站点配置文件:

  1. sudo ln -s /etc/nginx/sites-available/sample /etc/nginx/sites-enabled

4.检查nginx配置并重新启动它:

  1. sudo service nginx configtest && sudo service nginx restart

5.现在,您应该可以通过浏览器输入你的域名或IP地址来访问您的Django应用程序。

标签:部署UbuntuNginx 发布于:2019-11-21 12:52:52