众所周知,前年半年的时间写了django的博客
用的是django restframework的插件
将数据全都渲返回成了json的格式
然后前端vue渲染数据,axios发起请求
大概整体是这么个架构
开发流程还算顺利,但是最后难的是啥呢
因为需要部署到服务器上
服务器一般都是linux系统
所以,前年一半的时间在开发
rest of the time
则是在干着DevOps的工作
研究如何部署,最疯狂的时候一天可以收到六条阿里云发来的验证码
因为每次失败我都暴力的选择重装系统
每次重装系统都需要验证码
-=-
确实无语
但是好在研究了很长时间的服务器端的技术和知识
最后finally部署成功
但是 其实也是一头雾水
当时的组合拳是uwsgi nginx django
今天说来也巧
又接触到了这三个大哥
择日不如撞日
所以今天再来打一套nginx uwsgi django的组合拳
代码语言:javascript复制服务器系统:centos7.7
服务器安装软件:nginx1.20.2
django3.2
uwsgi通过pip安装的最新版本
First of all
先理清nginx的配置文件位置
代码语言:javascript复制nginx的默认安装路径为:
/etc/nginx
下图所示:
然后可以看到有一个conf.d的文件夹
没错你猜对了
这里保存的就是nginx的配置文件
哦对了
还能看到一个nginx.conf的文件
可以理解成这是主配置文件
like the function that mian in the c
当然我们可以看一下这个文件(nginx.conf)
代码语言:javascript复制user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$http_user_agent' '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
我觉得最重要的就是最后一行的include
如果你认识这个单词
那你应该能理解我刚才说的那句英语
这个nginx.conf的文件作用就像是c 里的main函数
它是一切配置的入口
它包含了这个文件夹里所有.conf结尾的文件
所以如果你要单独写一个server的配置文件
那么你可以写成tom.conf
这样就会被识别成nginx的配置文件
那么我们再看看
那个conf.d里有什么
没错有一个default.conf的文件
看一下都有啥
代码语言:javascript复制server {
listen 8080;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
random_index on;
root /opt;
sub_filter 'page' '**';
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
其实这个default.conf已经被我之前改过了
但是还能看出来
这就是自定义了一个server和自定义了几个错误页面和首页
但是接下来要说的就是重头戏了
对,就是uwsgi_test.conf
这是打好今天这套组合拳的重要文件
那我们来看看这里面都有啥
代码语言:javascript复制server{
listen 80;
server_name 我绑定的域名;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9999;
# uwsgi文件中django启动的端口9999
uwsgi_param UWSGI_SCRIPT demo.wsgi;
uwsgi_param UWSGI_CHDIR /root/djangoTest/demo;
index index.html index.htm;
client_max_body_size 35m;
}
}
其实就是一个简单的server配置
但是这里监听的是80端口还绑定了域名
所以就可以实现域名访问了
这是很重要的奥
然后就是一个uwsgi的配置文件
其实也很简单
随便找个目录新建一个名为uwsgi.ini的文件
内容如下:
代码语言:javascript复制[uwsgi]
socket=127.0.0.1:9999
# chdir=/opt/
worker=2
max-requests=1000
buffer-size=30000
pidfile=/var/run/uwsgi/uwsgi.ini
daemonize=/var/log/uwsgi.log
第一是socket地址和端口
注意这个端口要和刚才那里的端口对应
然后其他都是一些常规配置
如果你去百度的话
会发现一堆常规配置
这里奉劝一句
我们不是企业级开发
更别忘了:less is more
第一步是看这些配置文件
其实在这些配置文件之前
我们应该通过django的命令
代码语言:javascript复制django-admin startproject demo
#linux系统可能会有所不同,需要找到对应的django-admin.py路径即可
创建一个demo的django项目
然后cd 到demo目录下
输入:
代码语言:javascript复制python manage.py runserver 0.0.0.0:80
然后打开浏览器
如果是本机的话输入localhost地址
如果是服务器的话就直接在你的本地浏览器输入浏览器地址
如果可以看到django的默认首页
那代表一切顺利
那么我们就到了最后一步了
也就是从first of all直接跳到了end
在服务器终端输入:
代码语言:javascript复制/usr/local/python3/bin/uwsgi --ini uwsgi.ini
然后打开浏览器
输入我们刚才在nginx的配置文件中所绑定的域名
就可以访问了
ok
这套组合拳
到此结束
django演示部署成功
oh yeah,再说一句
永远的24
Kobe forever