准备东西:自己买的服务器,自己的代码
-
检验是否自带python,有些带了有些没带,如果没自带的话:
# 下载python wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz # 解压 tar xvf Python-3.6.0a1.tar.xz # 配置安装地址(Linux中与windows中不一样) # 进入Python-3.6.0a1 cd Python-3.6.0a1 # 添加配置 ./configure --prefix=/user/loacl/python3.6 # 编辑安装(切换成root用户执行: sudo +命令) make make install # 测试 输入python3 会出现交互模式 ok, 如果有问题那我就。。。不知道了。具体你再百度。
-
如果不是3.6的,系统默认制定链接是在/usr/bin/python, 需要将原有的制定链接文件删除后重新制定: cd /usr/bin , rm -rf python 重新指定:ln -s /usr/local/bin/python3.6 /usr/bin/python
-
查看pip3 是否制定到python3.6中, pip -V 若不是,则 cd /usr/bin rm -rf pip3 重新指定:ln -s /usr/local/bin/python3.6/bin /usr/bin/pip3 搞定!
uwsgi安装:
别看到uwsgi就晕,心想:我们不是用nginx吗?怎么会有这个东西? 上面的图告诉你真相。nginx是用来处理和前端相关的,uwsgi是处理和框架相关的。
-
安装: pip install uwsgi
-
测试: 编写一个:
创建test.pydef application(env, start-response):
start_response(“200 OK”, [(“Content-Type”, “text/html”)])
return [b"hello world"]
然后执行shell命令 uwsgi -http:5000 -wsgi-file test.py
访问网址:http:// 你的网址:5000
看看页面是否有结果。
Django安装
-
这个不会你就告辞吧。
-
此时可以创建django项目先试试,起名:mysite
-
绑定django和uwsgi
进入django项目。
创建django_wsgi.py
写内容:
import os
import sys
# 将系统编码设置为utf-8
reload(sys)
sys.setdefaultencoding(“utf-8”)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “mysite.settings”)from django.core.handlers.wsgi import WSGIHandler application = WSGIHandler() os.environ.setdefault("DJANGO_SETTINS_MODULE", "mysite.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
连接django和uwsgi, 实现简单的web服务器
我们假设你的django项目的地址是/home/ubuntu/mysite
然后,进入项目目录,cd /home/ubuntu/mysite 执行命令
uwsgi -http:8000 -chdir /home/ubuntu/mysite-module django_wsgi
这样,你就可以在浏览器中访问自己的项目了
Nginx
- 安装 sudo apt-get install nginx
- 查看nginx的版本: nginx -v
- 测试是否已经安装好
启动: /etc/init.d/nginx start
关闭: /etc/init.d/nginx stop
重启: /etc/init.d/nginx restart
启动后,在浏览器中访问自己的主机ip,可看到相应界面。
实现nginx和uwsgi的连接
假设项目目录为: /home/ubuntu/mysite
我们让nginx采用8077端口与uWSGI进行通讯。
确保之前的django_wsgi.py文件已经存在。
在项目目录下新建djangochina_socket.xml
写入:
<!-- 若以socket方式访问 -->
<uwsgi>
<socket>:8077 </socket>
<chdir>/home/ubuntu/mysite</chdir>
<module>django_wsgi</module>
<process>4</process>
<daemonize>uwsgi.log</daemonize>
</uwsgi>
<!-- 若以http方式访问 -->
<uwsgi>
<http>:8077</http>
<chdir>/home/ubuntu/mysite</chdir>
<module>django_wsgi</module>
<process>4</process>
<daemonize>uwsgi.log</daemonize>
</uwsgi>
在上面的配置中,我们使用uwsgi.log来记录日志,开启四个进程来处理请求。
配置nginx
我们假设你将会把nginx程序日志放到你的目录/var/log/nginx下,请确保该目录存在。
我们假设你的django的static目录是 /home/ubuntu/mysite/static
我们假设你的media 目录是 /home/ubuntu/mysite/media
请确保以上目录的存在
我们假设你的域名是:www.you.com 讲道理。我们自己练手可以不用搞这些花里胡哨的,直接写ip就开始整。端口也是设置为80 (在调试时,你可以设置一些特殊端口。)
我们在/etc/nginx/nginx.conf添加如下配置
server {
listen 80;
server_name 你的ip;
access_log /var/log/nginx/access.log;
err_log /var/log/nginx/error.log;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
location /media/ {
alias /home/ubuntu/mysite/media/;
}
location /templates/ {
alias /home/ubuntu/mysite/templates/;
}
}
在上面的设置后,可以让Nginx来处理静态文件,(/static/和/media/),非静态文件请求Nginx会发送给socket+端口,可以让uWSGI来进行处理。
Nginx+uWSGI+Django
在完成上面的配置后,需要按以下步骤来做。
-
重启Nginx服务器,使得配置生效。
nginx -s reload(root 权限执行)
重启后检查Nginx日志是否有异常
vim /var/log/nginx/error.log
查看error.log文件内容是否有异常信息 -
启动uWSGI服务器
cd /home/ubuntu/mysite
uwsgi -x djangochina_socket.xml
检查日志uwsgi.log是否有异常发生
uwsgi.log日志生成在项目目录下,所以进入项目目录执行 vim uwsgi.log 查看 -
访问服务
可以自己访问了 -
关闭
将uWSGI进程杀死即可
sudo killall -9 uwsgi
注意
html文件中静态文件的路径设置,应设置为能够通过nginx访问的地址。不然一直加载不了css和js.