在云服务部署个人的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!"]
(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配置成功!