zoukankan      html  css  js  c++  java
  • Django+uwsgi+nginx+mysql的linux生产环境配置

    本文采用linux的ubuntu,由于linux基本上自带python环境,因此进入terminal,分别输入python,python3从而测试基本环境

    由于ubuntu默认采用国外的安装源,所有我们为了下载速度,优先切换国内的。

    1.备份已有的$ cp /etc/apt/sources.list /etc/apt/sources.list.bak

    2. 编辑并替换,最好采用阿里,中科大等科技教育机构的(具体的自己网上搜)   vim /etc/apt/sources.list

    安装mysql

    分别在终端下输入以下命令

    1. sudo apt-get install mysql-server
    2. apt-get isntall mysql-client
    3.  sudo apt-get install libmysqlclient-dev
    等到安装完成之后输入:service mysql start启动mysql服务端,然后输入mysql -u root -p,回车输入刚才安装时输入的密码从而进入客户端。显示mysql>字样则代表安装完成。
    测试可在mysql>下输入如:"show databases;"从而显示已有的数据库,"create database database_name;"创建一个名为database_name的数据库,"use database_name;"从而使用已有的数据库,"show tables;" 从而显示已有的表名。由于我们会使用Django的models.py去通过面向对象的方式去创建表名,因此这里暂时不使用令人不爽的create table table_name()方式。最后使用'exit'命令退出。再使用service mysql stop推出服务端。
     

    安装virtualenv

    首先为什么要安装virtualenv???

    在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.6.3。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要python 2.7,而应用B需要python 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

    怎样安装呢?

    可以使用"pip3 install virtualenv"当然也可以使用"sudo apt-get install virtualenv"的方式,安装结束之后再次输入该命令,代表安装完成

    如果提示没有pip3,那么使用sudo apt-get install python3-pip和sudo apt-get install python-pip分别安装python2.7和python3.6下的pip,然后可以使用"pip -V"和"pip3 -V"测试是否正常。 

    基本使用规则

    uwsgi的官方文档给出了如下的代码:

    1.virtualenv uwsgi-tutorial(比如我的python3版本是3.6.3,我可以使用‘virtualenv env36’)
    2.cd uwsgi-tutorial
    3.source bin/activate

     

    可以看到在相应的env36/bin下有一个activate,使用"source env36/bin/activate"激活这个环境

    测试python.python3基本上正常。

     安装Django

    依然官方文档:

    1.pip install Django

    2.django-admin.py startproject mysite

    3.cd mysite

    安装uwsgi

    pip3 install uwsgi

    等待安装完成

    注册一个叫app01的应用

    并使用vim miniweibo/settings.py修改以下部分如下:

    再使用touch test.py或者vim test.py建立一个内容如下的内容

    1 # test.py
    2 def application(env, start_response):
    3     start_response('200 OK', [('Content-Type','text/html')])
    4     return [b"Hello World"] # python3
    5     #return ["Hello World"] # python2
    使用并运行:uwsgi --http :8000 --wsgi-file test.py

    
    
    
    
    得到以上内容,基本上宣布uwsgi成功
    然后测试Django project
    #python manage.py runserver 127.0.0.1:8000
    如果成功则执行下面的,事实上两个都会得到同样的页面
    #uwsgi --http :8000 --module miniweibo.wsgi

    安装nginx

    安装并使用

    sudo apt-get install nginx
    sudo /etc/init.d/nginx start    # start nginx

    得到上面的页面则宣告正确;

    接下来配置nginx

    需要三个文件,文件的格式基本固定,需要修改的部分不多,分别为uwsgi_params,uwsgi.ini,nginx.conf

    下载:点击此处

    可以将其移动到该目录/var/pythonfile下,如下

    使用sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/链接,比如我的就是:
    sudo ln -s /var/pythonfile/nginx.conf /etc/nginx/sites-enabled

    再次编辑miniweibo/settings.py

    在最后加上    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    然后使用  python manage.py collectstatic,得到类似于如下的东西。

    重启nginx:  sudo /etc/init.d/nginx restart

    cd miniweibo
    uwsgi --socket :8001 --wsgi-file test.py

    再次访问127.0.0.1:8000得到hello,world!

    修改nginx.conf如下

    server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    使用uwsgi --socket mysite.sock --wsgi-file test.py运行,发现127.0.0.1:8000无法访问
    访问错误日志,发现是不被许可

    则使用
    uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 # (more sensible)
    重新访问127.0.0.1:8000得到

    再次使用

    uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666
    这代表django被uwsgi和nginx同时支持

     配置uwsgi.ini

    运行 uwsgi --ini uwsgi.ini

    即可进行访问。

    如果出现encoding模块错误,则安装 pip install pypl进行解决。

    最后

    deactivate退出虚拟环境
    sudo pip install uwsgi再次安装
    uwsgi --ini mysite_uwsgi.ini再次尝试启动
     
     



    
    
    



  • 相关阅读:
    TCP通信 小例子
    Socket的简单使用
    Redis练习
    资料
    Redis封装帮助类
    使用Redis的基本操作
    Redis配置主从
    Redis基本设置
    clientHeight ,offsetHeight,style.height,scrollHeight的区别与联系
    服务器操作之如何绑定网站
  • 原文地址:https://www.cnblogs.com/suxiaoman/p/8401435.html
Copyright © 2011-2022 走看看