Django部署
1. 租云服务器
2. 买服务器
租:公网IP,111.13.101.208,ping baidu.com得到的公网ip 租域名:www.pythonav.com <-> 111.13.101.208,域名和公网ip建立关系。
3. 编写代码
4. 拷贝代码到服务器[Python,Django,pymysql,sqllite],拷贝到虚拟机
settings.py ALLOWED_HOSTS = ['服务器IP',] # 例ALLOWED_HOSTS =['192.168.11.62',] python manage.py runserver 0.0.0.0:8001 # 运行在服务器上,本机的话是127.0.0.1:8001 使用:SOCKET DJANGO内部写的,性能比较低,所以有了uwsgi操作。 遵循wsgi协议: wsgiref
以上已经完成了最简单的django部署
5. uwsgi
pip3 intall uwsgi
利用uwsgi对一个.py文件进行简单部署:
app.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
uwsgi --http :9001 --wsgi-file app.py
uwsgi --http :9002 --wsgi-file foobar.py --master --processes 4 --threads 2 # 开四个进程,2个线程
对Django文件部署:
# 不处理静态文件
uwsgi --http :9002 --chdir /data/s1/deploy --wsgi-file deploy/wsgi.py --master --processes 4 --threads 2
#uswgi首先声明监听9002端口,到Django程序目录/data/s1/deploy ,启动Django目录中deploy/wsgi.py文件
# 处理静态文件
settings.py:
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR,'uuuuuu') # uuuuuu是所有的静态文件收集到的目录,uuuuuu目录会被自动创建
python manage.py collectstatic # 收集所有的静态目录到STATIC_ROOT配置的uuuuuu目录中
运行完collectstatic命令后,将STATICFILES_DIRS和STATIC_ROOT都注释掉。
uwsgi --http :9003 --chdir /data/s1/deploy --wsgi-file deploy/wsgi.py --static-map /static=/data/s1/deploy/uuuuuu # /data/s1/deploy/uuuuuu 是收集到的所有静态文件的目录。
#上面的uwsgi命令太长,所以写一个配置文件,写在Django project目录下,vim wsgi_http.ini
wsgi_http.ini
[uwsgi]
http = 0.0.0.0:9004
chdir = /data/s1/deploy
wsgi-file = deploy/wsgi.py
# processes = 4
# threads = 2
static-map = /static=/data/s4/deploy/uuuuuu
uwsgi wsgi_http.ini # 以后就不用输入那么长的命令了,直接运行该条命令就行。
以上因为uwsgi静态文件处理不如Nginx,所以使用Nginx来处理。 动态的请求url经过uwsgi再到Django程序。 用户发请求,最外层先经过nginx,nginx里面进行判断,判断如果是静态文件就去uuuuu目录取,取到后再交给nginx。 如果是动态请求,则转交给uwsgi,再由uwsgi调用Django代码,Django代码处理完成后再交给uwsgi,再交给Nginx。 然后把动态请求和静态文件处理结果经由nginx返回给用户。 nginx做的是反向代理。
6. Nginx
yum install nginx
可执行目录/etc/init.d/nginx,命令 start/stop/restart
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
配置文件
/etc/nginx/nginx.conf
将静态文件配置到nginx.conf中
server{
...
location /static {
alias /data/s1/deploy/uuuuuu;
}
...
}
nginx与uwsgi的连接是基于socket连接,nginx 80端口 --> uwsgi 8001端口
Django project目录下,vim wsgi_sock.ini
wsgi_sock.ini
[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/s1/deploy
wsgi-file = deploy/wsgi.py
# processes = 4
# threads = 2
static-map = /static=/data/s1/deploy/uuuuuu
配置完成后,运行:
uwsgi wsgi_sock.ini
/etc/init.d/nginx start
访问url 192.168.11.62/index.html,Django部署成功。
注意:需要修改/etc/selinux/config
vim /etc/selinux/config SELINUX = disabled


浙公网安备 33010602011771号