在不同的机器上使用nginx提供静态文件,在另一台机器上使用gunicorn进行django生产

时间:2013-09-02 11:11:38

标签: django postgresql nginx gunicorn

我目前在同一台服务器上安装了nginx和gunicorn,但是想把它们安装在不同的服务器上我尝试了如下设置.Postgres在另一台机器上(server1)然后连接到server2.Server2上的gunicorn有一个外部硬盘哪个gunicon保存和uplouds文件到.Gunicon是在本地网络,无法从外部访问。我有一个从我的应用程序到外部硬盘驱动器的符号链接.on server3我有nginx可以从外面访问,这是服务器2上的nginx的代理。我不希望gunicon服务器静态文件,所以我做了一个sshfs链接到服务器上的挂载点,然后直接ngix服务器静态内容。这一切都运行良好,但后来我不时注意到sshfs连接总是削减,这在生产中并不好。请允许任何人在生产环境中以正确的方式告诉我。这是我配置的一部分。

服务器2

# mount /dev/sde1 /home/me/HD
$ mkdir -p /home/me/HD/currentapp/static && mkdir -p /home/me/HD/currentapp/media
$ ln -s /home/me/HD/currentapp/media  /allmyapps/currentapp/currentapp/media
$ ln -s /home/me/HDcurrentapp/static  /allmyapps/currentapp/currentapp/static

Server3

$ mkdir -p /home/me/HD/currentapp/
# sshfs -p(port number here) me@Server2:/home/me/HD /home/me/HD -o uid=1000 -o gid=33 -o allow_other

server3 nginx

upstream my_server {
server server2:port fail_timeout=0;
}

location /static/ {
alias /home/me/HD/currentapp/static/;
}
location /media/ {
alias /home/me/HD/currentapp/media/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://my_server;
break;
}

由于

1 个答案:

答案 0 :(得分:0)

  

任何人都可以在生产中告诉我正确的方法   环境。

使用安装在两台计算机上的网络附加存储(NAS)设备。这就是你在生产中以正确方式的方式。

你可以做各种其他的解决方法 - 比如rsync,nfs等,但最可靠的方式让这个工作正常的NAS。