前后端分离项目的部署主要使用Nginx和uwsgi来实现,把Nginx换成Apache也是可以的,看个人喜好。Nginx主要处理静态文件,uwsgi用来部署Django项目,处理其他请求
安装uwsgi:
pip3 install uwsgi
测试uwsgi:
首先创建一个test.py文件
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
在文件目录下使用命令:
uwsgi --http :80 --wsgi-file test.py
访问我们的网站,能够得到Hello World,则uwsgi安装成功
部署django项目:
为了以后使用方便,可先创建一个目录存放uwsgi配置文件
mkdir website_uwsgi
cd website_uwsgi
vim uwsgi.ini
配置文件内容如下
[uwsgi]
chdir = /home/iot/IOTPlatform #项目根目录
module = IOTPlatform.wsgi:application # wsgi
http = :8000
master = True
Processes = 4 #最大进程数
harakiri = 60 #
max-requests = 5000
# socket = 127.0.0.1:8000
uid = 1000
gid = 2000
pidfile = /home/iot/website_uwsgi/master.pid
daemonize = /home/iot/website_uwsgi/mysite.log
vacuum = True
部分选项的含义:
chdir : 项目根目录路径
module: 入口文件
http:监听的IP和端口,socket也是,如果使用Nginx做反向代理就应该选择socket方式,因为nginx反向代理使用的是socket方式,在这个项目中没有使用方向代理所以选用了http的方式
master:是否启动主进程
processes: 设置进程数目
harakiri: 请求超时时间
max-requests:每个工作进程设置请求数的上限
pidfile:指定pid文件
daemonize: 日志文件
uwsgi配置文件写好了,使用命令启动:
uwsgi --ini uwsgi.ini
启动完成之后,使用ps -aux | grep uwsgi 查看是否有4个进程来判断uwsgi是否启动成功,另外可以使用接口工具访问接口看是否有正常的数据
其他的一些命令:
uwsgi --reload master.pid 重启服务
uwsgi --stop master.pid 停止服务
部署静态文件:
静态文件有两种方式
1:通过django路由访问
2:通过nginx直接访问
方式1:
需要在根目录的URL文件中增加 url(r'^$', TemplateView.as_view(template_name="index.html")),作为入口,在setting中更改静态资源位置
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "dist/static"), # 静态文件目录位置
)
方式2:
安装nginx: apt-get install nginx
配置nginx: cd /etc/nginx
首先在 nginx的可用配置目录下新建我们的配置文件
cd sites-available/
vim mysite.conf
server {
listen 80;
server_name iotplatform;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/iot/IOTPlatform/dist/static;
}
location /media {
alias /home/iot/media;
}
location / {
root /home/iot/IOTPlatform/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
再使用命令测试我们的配置文件是否有问题
ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
nginx -t
没有问题使用 service nginx restart重启nginx服务,这样就能访问到静态文件了
关于反向代理的问题
反向代理的配置文件:
server {
listen 80;
server_name iotplatform;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/iot/IOTPlatform/dist/static
}
location /media {
alias /home/iot/media
}
location / {
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
}
}
使用nginx -t测试的时候出现
nginx: [emerg] open() "/etc/nginx/conf/uwsgi_params" failed (2: No such file or directory) in /etc/nginx/nginx.conf:81
nginx: configuration file /etc/nginx/nginx.conf test failed
提示说没有找到uwsgi_params文件我的解决方法是:手动新建一个conf目录并将uwsgi_params文件复制过去