1 配置nginx转发
$ whereis nginx $ cd /usr/local/nginx/conf $ vi nginx.conf
注释掉原来的html请求,增加uwsgi请求。
location / { # 包含uwsgi的请求参数 include uwsgi_params; # 转交请求给uwsgi uwsgi_pass 172.17.0.11:8000; }
2 修改uwsgi.ini配置
打开Django工程目录下的Configurations目录中的uwsgi.ini
如果直接访问uwsgi服务,则在uwsgi.ini中禁用http协议,改为socket协议。
uwsgi.ini文件内容如下:
# 配置文件:这一行必须有,如果[uwsgi]直接顶行,ubuntu18.04找不到 [uwsgi] #端口 # 服务器地址,不是外网地址,是服务器的ip地址 socket = 172.17.0.11:8000 # http = 172.17.0.11:8000 # Django工程目录 chdir = /publish/TongHeng # wsgi的位置 module = TongHeng.wsgi # 设置一个主进程 master = true # 开放四个进程 processes = 4 # 每进程开放2个线程 threads = 2 vacuum = true # 保存uwsgi.pid pidfile = uwsgi.pid log-maxsize = 500000000 logto = /tmp/uwsgi.log buffer-size = 32768 enable-threads = true reload-mercy = 8 harakiri = 60
3 重启nginx
$ /usr/local/nginx/sbin/nginx -s reload $ ps -aux | grep nginx
4 启动uwsgi
$ cd /publish/TongHeng $ uwsgi --ini config/uwsgi.ini # 停止uwsgi服务 $ uwsgi --stop uwsgi.pid #重启uwsgi服务 $ uwsgi --reload uwsgi.pid
在浏览器中访问,此时,再访问8000端口已访问不到了,因为被nginx占用了。而nginx的端口号是80端口。是浏览器默认的端口。所以,直接访问IP+Url即可。
到此,把nginx和uwsgi的转交完成了,浏览器可以远程访问服务器,但还是不能搜集到静态文件。
5 静态文件配置
5.1 在ubuntu服务器上创建一个目录,用于存储静态文件
$ mkdir /publish/static/
5.2 修改工程配置文件settings.py,设置静态文件路径
STATIC_ROOT='/publish/static'
5.3 搜集静态文件
在服务器工程根目录下执行命令:
$ python manage.py collectstatic
5.4 修改nginx静态文件配置
$ cd /usr/local/nginx/conf $ vi nginx.conf
增加一个转发:
location /static { # 指定静态文件存放目录 alias /publish/static/; }
至此,nginx配置文件就全部配置结束了。
nignx.conf配置文件的全部内容(包括fastDFS配置,uwsgi配置)如下:
server { listen 80; server_name 49.235.75.157; location /group1/M00 { root /opt/fdfs/storage; ngx_fastdfs_module; } #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} location / { # 包含uwsgi的请求参数 include uwsgi_params; # 转交请求给uwsgi uwsgi_pass 172.17.0.11:8000; #uwsgi_param UWSGI_SCRIPT fastDFS.wsgi; } location /static { # 指定静态文件存放目录 alias /publish/static/; }
6 重启nginx和uwsgi.ini
$ /usr/local/nginx/sbin/nginx -s reload $ cd /publish/TongHeng $ uwsgi --ini config/uwsgi.ini
再从浏览器访问,可以接收到静态文件了。