liunx 项目发布(django + uwsgi + nginx+supervisor发布web服务器)

创建一个新的虚拟环境

  mkvirtualenv my_django002

  which 查看自己是否在虚拟环境

  

  pip3下载django1.11.14

  在自己的Envs文件下创建一个django项目

  (my_django002) [root@VM_0_12_centos my_django002]# django-admin startproject mysite15

  启动测试一下 

  准备完成

不使用Python3 启动项目

使用uwsgi启动

1.先下载 uwsgi

  pip3 install uwsgi

  下载完成后可以使用uwsgi测试下

  先创建一个 text.py文件 写入一下内容:

    def application(env, start_response):
      start_response('200 OK', [('Content-Type','text/html')])
      return [b"Hello World,im uwsgi....."] # python3

  用uwsgi启动一下   uwsgi --http  :8000  --wsgi-file text.py   返回结果字符串

2.编写一个hello测试视图
  from django.shortcuts import HttpResponse
    def hello(request):
      return HttpResponse('hello , im uwsgi.....')
  加上url视图
   urlpatterns = [
      url(r'^admin/', admin.site.urls),
      url(r'^hello/',hello),
   ]

3.通过uwsgi启动你的django项目

  1.进入你的django项目,这是第一层
  cd /root/Envs/django15/mysite15
  2.通过命令启动
  uwsgi --http :9000 --module mysite15.wsgi
  3.测试访问你的django应用 9000端口
4.注意,此时你的项目丢失静态文件,因为uwsgi不解析静态文件配置  使用nginx

uwsgi热加载django程序           

自动重启    --py-autoreload=1

1.启动命令添加一条参数
uwsgi --http :8088 --module mysite.wsgi --py-autoreload=1

配置静态资源

1. 修改nginx  配置文件  之后一定要重启!!!!!!!!

  

2. 启动项目

    uwsgi --http :9000  --module mysite.wsgi --py-autoreload=1  

   

  有坑出错 --

  在这里使用  一定要在这个文件目录下启动!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

       uwsgi --socket :9000 --module mysite15.wsgi --py-autoreload=1

  当然执行后 还是么有 静态文件

   继续配置 nginx的配置:

  写入静态文件存放的位子

     #nginx处理静态页面资源

  location /static{
    alias /opt/nginx1-12/static/django;   
}

   OK  创建这个文件夹

  在django的配置文件中写入

  

  这个路径一定要和 alias 路径一至

      回到manage.py 目录   执行python3 manage.py collectstatic   他会把所有静态文件放在我 配置的目录下

  此时 django 目录下就会多出 admin的静态文件

   

  启动你的项目 此时admin的静态文件已经出现啦

  之前一定要记得修改nginx目录完成后重启 nginx  

uwsgi配置文件

[uwsgi]
#使用nginx连接时使用
socket=0.0.0.0:9000
#不用nginx直接当做web服务器使用
#http=0.0.0.0:9000
#项目目录绝对路径
chdir=/root/Envs/my_django002/mysite15
#wsgi文件路径,在项目底下
wsgi-file=mysite15/wsgi.py

#指定解释器目录
home=/root/Envs/my_django002
processes=4
threads=2
master=True
pidfile=uwsgi.pid

这时你的项目目录

 怎样启动 ~~~

  uwsgi --ini /etc/uwsgi.ini    启动配置文件

supervisor

  控制管理你的项目启动或重启的  

    supervisor 是基于 python 的任务管理工具,用来自动运行各种后台任务,当然你也能直接利用 nohup 命令使任务自动后台运行,但如果要重启任务, 每次都自己手动 kill 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。

1.先退出你的虚拟环境 ~       deactivate

2.执行下载

  easy_install supervisor

3.通过命令生成supervisor的配支文件    echo_supervisord_conf    这时他给你生产的命令   

    echo_supervisord_conf > /etc/supervisord.conf

4. 进入到 /etc/supervisord.conf文件下 写入

[program:mydjango]
command=/root/Envs/my_django002/bin/uwsgi --ini /etc/uwsgi.ini      

# /root/Envs/my_django002/bin/uwsgi这个是你的虚拟环境的uwsgi

#  /etc/uwsgi.ini 这个是你配置文件的uwsgi

5.最后启动supervisor,完成uWSGI启动django

[root@VM_0_12_centos mysite15]#   supervisord -c /etc/supervisord.conf

操作方法

  supervisorctl        查看自己管理的项目 并 进入到你的supervisor 命令环境

  stop  mydjango     是你在/etc/supervisord.conf文件[program:mydjango]  这个名字 停止你的项目

       start   mydjango    开启你的项目

负载均衡

原文地址:https://www.cnblogs.com/luchenhui/p/9960525.html