• 在云服务部署个人的Django项目


    一、Ubuntu系统切换默认python3.5

    ubuntu14.04系统会自带python2.7,请不要卸载它。不同版本的Python可以共存在一个系统上。

    卸载之后,桌面系统会被影响。

    (1)sudo add-apt-repository ppa:fkrull/deadsnakes

    (2)sudo apt-get update

    (3)sudo apt-get install python3.5

    (4)sudo cp /usr/bin/python /usr/bin/python_bak,先备份
    (5)sudo rm /usr/bin/python,删除
    (6)sudo ln -s /usr/bin/python3.5 /usr/bin/python,默认设置成python3.5,重建软链接这样在终端中输入python默认就是 3.5版本了

    二、部署Django

    (1)升级pip3,命令:apt install python3-pip

    (2)安装Django,命令:pip3 install django==1.10.3,然后继续安装django项目依赖相关的库

      把包传到云服务上,尝试启动Django,命令:python manage.py 0.0.0.0:80(运行之前需要把django配置文件ALLOW_HOST改成公网IP)

    (3)浏览器访问公网地址,如果有反应,则成功

    三、安装uWSGI

    (1)直接用pip安装,命令:pip3 install uwsgi,或者到这里下载,https://pypi.python.org/pypi/uWSGI

    (2)测试uwsgi,新建test.py文件,内容如下:

    def application(env, start_response):
    
      start_response('200 OK', [('Content-Type', 'text/html')])
    
      return [b"Hello World!"]
    test.py

    (3)通过uwsgi命令运行test.py文件,命令:uwsgi --http :8001 --wsgi-file test.py,然后访问http://localhost:8001可见Hello World!

    (4)uWSGI运行Django,命令:uwsgi --http :80 --chdir /home/ubuntu/buybooks/ --wsgi-file buybooks/wsgi.py --master --processes 4 --stats localhost:9191

    uWSGI成功部署完毕!

      ——提示:如果每次都要输入那么长的命令,会很麻烦,所以可以用配置文件的方式,uWSGI支持多种类型配置文件,如xml、ini等:

        1、在项目里的wsgi.py同级目录下,创建uwsgi.ini文件,配置uWSGI参数如下,

        2、在配置文件的目录下,通过“uwsgi”命令读取uwsgi.ini文件来启动WEB项目,命令:uwsgi --ini uwsgi.ini

     1 [uwsgi]
     2 
     3 # 请求方式与端口号,若配置与Nginx连接用soket,只用wsgi那就用http
     4 socket = :8000
     5 #http = :8000
     6 
     7 #Django项目路径
     8 chdir = /home/ubuntu/buybooks
     9 
    10 #wsgi文件
    11 module = buybooks.wsgi
    12 
    13 #允许主进程存在
    14 master = true
    15 
    16 #开启进程数
    17 processes = 3
    18 
    19 # 当服务器退出时自动清理环境
    20 vacuum = true
    21 
    22 # 运行时,讲日志输出道指定的日志文件
    23 daemonize = /home/ubuntu/buybook.log

    四、部署Nginx+uWSGI组合

    访问页面时,请求会先到Nginx,再由Nginx赚到uWSGI WEB容器来处理。uWSGI WEB容器比Django的WEB容器性能要稍好。

    (1)安装Nginx,命令:sudu apt-get install nginx

    (2)启动Nginx,命令:/etc/init.d/nginx start,默认80端口,浏览器访问localhost:80

      重新启动Nginx,命令:/etc/init.d/nginx restart

      停止Nginx,命令:/etc/init.d/nginx stop

    (3)配置Nginx,打开/etc/nginx/sites-available/default配置文件,可修改对外端口号listen,也就是指定的是Nginx代理uWSGI对外的端口号

     1 ......
     2 
     3 server {
     4         listen 8089;
     5       listen [::]:8089;
     6 server_name 127.0.0.1  192.168.127.134(局域网IP,方便局域网内访问);
     7 
     8 location/ {include /etc/nginx/uwsgi_params;
     9           uwsgi_pass 127.0.0.1:8000;
    10     
    11     }
    12 }
    13 .....

    Nginx+ uWSGI配置成功!

  • 相关阅读:
    C# Winform 国际化
    Could not find method google() for arguments [] on repository container,rn 集成react-native-camera 出现此错误的解决方法
    RN集成echarts4图表组件react-native-secharts(转载)
    DataGridView设置行高
    react native原生模块引用本地jar包
    react-native-printer
    phpstudy连接SQL Server 2008数据库 以及 php使用sql server出现乱码解决方式
    Apache崩掉:为进程配置合适的线程数
    引用静态资源时加上时间戳,处理浏览器缓存问题
    利用存储过程优化复杂的数据库操作
  • 原文地址:https://www.cnblogs.com/hlphlp/p/7025767.html
Copyright © 2020-2023  润新知