nginx+uwsgi+Django

nginx+uwsgi+Django

本环境在阿里云Centos7.2上发布

1. 首先参考上一篇文章

Centos7安装python3.X

2. 参考第二篇文章安装mysql

Centos7安装mysql5.6

3. 跟新系统环境

运用命令 yum install update

4. 在根目录下创建文件夹

  1. cd到根目录
  2. mkdir sities创建一个文件夹
  3. mkdir blog在创建一个文件夹来Django的项目
  4. mkdir script创建一个文件夹装uwsgi以及其他配置的文件
  5. 看见目录应该是 ~/sities/blog/script/
  6. 运行命令安装git yum install git安装过程中按Y就好

5.下载项目

首先我们要确保自己在blog的目录下,(就是跟script同级目录)

然后git我们的项目下来,git clone +自己的仓库地址

6.配置

  1. 先新建虚拟环境 运行mkvirtualenv env3

  2. 如过没下载virtualenvwrapper的话可以通过以下命令:pip install virtualenv然后virtualenv env3source env3/bin/activate

    1

  3. 我们进入到项目的主目录,就是有manage.py的文件下
    2
  4. 执行pip install -r requirements.txt安装所需要的文件,如果没有此文件,先在本地执行pip freeze > requirements.txt在上传到项目跟manage.py的同级下在执行

  5. 迁移数据库和生成数据库
    nginx+uwsgi+Django_第1张图片
    3
  6. python manage.py createsuperuser创建超级管理员

    4

  7. python manage.py runserver 0:8000启动项目,看看有没有报错

    nginx+uwsgi+Django_第2张图片
    5

  8. 访问ip+8000端口
    nginx+uwsgi+Django_第3张图片
    6

7.安装uwsgi和配置uwsgi

  1. 安装uwsgi pip install uwsgi

  2. uwsgi --http :8000 --module blogproject.wsgi --static-map=/static=stati就可以启动uwsgi的,不过uwsgi处理的大多数是动态请求,而nginx处理的是静态文件,所以大多数使用配置文件来启动,启动命令后通过ip+端口一样能访问到

    nginx+uwsgi+Django_第4张图片
    7

  3. 在script下创建一个新的uwsgi.ini 文件,可以用vi,vim编辑

    #如果你的工程名字跟我不一样,把下面的blogproject改为你自己的名字
    [uwsgi]
    #项目目录,可以用pwd查看,以自己的为准
    chdir=~/sities/blog/blogproject/
    #启动uwsgi的用户名和用户组
    uid=root
    gid=root
    #指定项目的application
    module=blogproject.wsgi:application
    #指定sock的文件路径
    socket=~/sities/blog/script/uwsgi.sock
    #启动主进程
    master=true
    #进程个数
    workers=5
    pidfile=~/sities/blog/script/uwsgi.pid
    #自动移除unix Socket和pid文件,当服务器停止时侯
    vacuum=true
    #序列化接受的内容,如果可能的话
    thunder-lock=true
    #启动线程
    enable-threads=true
    设置自动中断时间
    harakiri = 30
    #设置日志目录
    daemonize=~/sities/blog/script/uwsgi.log
    #结束
    
  4. uwsgi 命令

    uwsgi --ini uwsgi.ini 启动
    uwsgi --stop uwsgi.pid 停止
    ps -ef | grep -i uwsgi 检出uwgi有没有启动
    #操作这些需要在script中,有uwgi.ini和uwsgi.pid文件才可以执行
    
nginx+uwsgi+Django_第5张图片
8

8.安装配置nginx

  1. 安装nginx yum -y install nginx

  2. 进入nginx的配置目录cd /etc/nginx/conf.d/因为在nginx.conf下有一句话include /etc/nginx/conf.d/*.conf所以可以在这里编写配置文件

  3. 编写配置文件

    server {
    listen 80; # 监听哪个端口
    server_name 45.32.71.174 ;  # 你的ip地址 或者是域名,如果是域名需要解析dns,这个自行搞定
    access_log /var/log/nginx/access.log main;  # 日志记录
    error_log /var/log/nginx/error.log;   # nginx错误日志,可自行设置,但必须保证提前建立好该目录和文件
    charset utf-8;
    gzip on;
    gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-
    php application/json text/json image/jpeg image/gif image/png application/octet-stream;
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    # 指定项目路径uwsgi
    location / {
        include uwsgi_params;
        uwsgi_connect_timeout 30;
        uwsgi_pass unix:/opt/blog/script/uwsgi.sock; # 这里需要改为你的目录(如果你和我的目录一致不需要改动)
    }
    # 指定静态文件路径
    location /static/ {
        alias /opt/blog/blogproject/static/;   # 这里需要改为你的目录(如果你和我的目录一致不需要改动)
        index index.html index.htm;
    }
    }
    
nginx+uwsgi+Django_第6张图片
9
  1. 检查配置文件 nginx -t尾部出现了successful就表市成功,不成功看报错信息就好

9.nginx+uwsgi运行

service nginx stop  --停止nginx服务
uwsgi --stop uwsgi.pid --停止uwsgi服务
uwsgi --ini uwsgi.ini --开启uwsgi服务
service nginx start --开启nginx服务
现在就可以访问你的网站了

10.如果进去后台发现样式有问题可以在配置

  1. 删除项目中的satic文件

  2. 在项目的settings.py中加入以下的话

    STATIC_ROOT = os.path.join(BASE_DIR,'static')
    看下自己的settings里面有没有STATICFILES_DIRS,有需要先注释掉 
    
  3. 在项目下路径执行

    python manage.py collectstatic --noinput 
    
  4. 看到我们的项目多了static,然后重启nginx服务,就可以了,如果还有少的可以使用Filezilla这个软件把少了的静态拉过去,在重启

如有问题可以在下方留言,或者进入我的博客去评论,谢谢

我的博客

你可能感兴趣的:(nginx+uwsgi+Django)