阿里云使用nginx+gunicorn+postgresql部署django项目

  新接手公司微信公众号项目,项目后端使用django框架开发,postgresql数据库,由于公众号转发URL需要外网IP,个人买了一年阿里云服务器,新人优惠力度非常大,选个低配用于学习非常划算,回到刚买的服务器,开始安装环境,限于本人能力及精力有限,写博客仅做个人编写的技术文档,能够给大家提供一点点帮助的话就更有价值了,其中个别错误请见谅。

  1.安装postgresql数据库,参考我的另一篇博客:https://www.cnblogs.com/lis-arc/p/11497388.html

  2.安装nginx

    (1)在线安装(我用的这个方法):

      yum install nginx

      systemctl start nginx

    (2)离线安装

      首先检测nginx的安装环境

        yum -y install gcc gcc-c++

        yum -y install pcre pcre-devel

        yum -y install zlib zlib-devel

        yum -y install openssl openssl-devel

      下载nginx包:

        wget http://nginx.org/download/nginx-1.9.9.tar.gz    #  这个包比较老了,第一次安装的时候用的版本配置有点问题,后来安了这个版本的,也可以去官网看看

        解压缩  tar -xzvf nginx-1.9.9.tar.gz

        到解压缩后的目录中  cd  nginx-1.9.9

        执行一下命令:

          运行文件  ./configure

          make

          make  install

    安装完成后生成目录/usr/local/nginx/,其中conf目录为配置文件,sbin为启动文件,logs为日志文件,其他可以自己研究研究

    /usr/local/nginx/sbin/nginx  启动服务,指定参数-s  reload可重新加载服务,-s  stop停服务。

    完成后在本地浏览器输入服务器外网IP可以看到nginx的欢迎页面,说明nginx已经安装成功并启动

2.安装gunicorn

  我使用的python3创建的django项目,gunicorn是python的模块,直接使用命令pip3 install gunicorn 即可

  其他依赖根据自己的环境安装,使用django框架访问postgresql数据库需要安装psycopg2模块

3.上传django项目,使用gunicorn启动项目

  在postgtresql数据库中新建数据库实例

  CREATE DATABASE DATABASE_01 ;

  创建用户

  CREATE USER USER_01 WITH PASSWORD $PASSWORD;

  配置django项目settings.py文件

  DATABASES = {
  'default': {
  'ENGINE': 'django.db.backends.postgresql_psycopg2',
  'NAME': 'DATABASE_01',
  'USER': 'USER_01',
  'PASSWORD': '$PASSWORD',
  'HOST': 'localhost',
  'PORT': '5432',
  }
  }

  比如我的项目是/home/abc/Abc项目,到Abc下,执行命令gunicorn Abc.wsgi:application --bind 127.0.0.1:8080启动服务并监听8080端口,如果数据库连接失败去检查一下pg_hba.conf和postgresql.conf文件

4.修改nginx的配置文件,nginx.conf

  server { listen 80;

    server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {

      proxy_pass http://127.0.0.1:7000;

     }

     location /static/ {

      root /home/abc/Abc;

    }

  nginx -s reload重新加载nginx

  好了,迫不及待的在本地浏览器访问阿里云服务,发现服务起来了,但是没有加载样式,gunicorn并不能托管样式,所以还需要指定nginx来托管样式

5.nginx托管django样式  

  nginx.conf配置文件中  location /static/ {}  中已经指定了静态文件的加载目录,但是django的后台管理需要收集静态文件

    $ python manage.py collectstatic

  如果没有在配置文件中指定STATIC_ROOT需添加静态文件目录

    STATIC_ROOT = 'static'

  重启服务,登陆后台发现样式已经加载出来了

  如果没有加载查看一下/var/log/nginx/error.log日志文件,如果提示Permission denied说明nginx没有对静态文件的访问权限,在配置文件里找到user配置项,修改nginx用户为web服务用户,重启nginx。

  

猜你喜欢

转载自www.cnblogs.com/lis-arc/p/12493207.html
今日推荐