2013-02-11 27 views
8

Tôi đang chạy bình trên mod_wsgi. ứng dụng bình của tôi, nằm trên /var/www/app nhận một số tệp từ người dùng và lưu nó vào thư mục /var/www/app/tmp. Tuy nhiên, ngay cả sau khi tất cả chmod và chown (nghĩ rằng đó là một vấn đề cho phép), tôi đã không thể đạt được thư mục tmp đó.thư mục làm việc mod_wsgi và người dùng

Sau khi gỡ lỗi, tôi phát hiện ra rằng thư mục làm việc hiện tại của ứng dụng bình là /. Tôi có thể thay đổi thư mục làm việc theo số os.chdir('/var/www/'), nhưng tôi muốn tránh điều đó vì những lo ngại về bảo mật.

đây là cấu hình apache của tôi:

<VirtualHost *:80> 
    ServerName mysite.com 
    ServerAlias site.com 
    ServerAdmin [email protected] 

    WSGIDaemonProcess app user=www-data group=www-data processes=1 
    WSGIScriptAlias//var/www/app.wsgi 

    Alias /static /var/www/app/static 

    <Directory /var/www/app> 
     WSGIProcessGroup app 
     WSGIApplicationGroup %{GLOBAL} 
     WSGIScriptReloading On 
     Order deny,allow 
     Allow from all 
    </Directory> 

    <Location "/static"> 
     SetHandler None 
    </Location> 

</VirtualHost> 

thư mục Làm thế nào tôi có thể thay đổi hoạt động của ứng dụng của tôi từ / để /var/www?

Trả lời

12

Các documentation cho WSGIDaemonProcess nói rằng bạn có thể sử dụng home=... đoạn thơ:

nhà = thư mục

Định nghĩa một đường dẫn tuyệt đối của thư mục đó nên được sử dụng như là thư mục làm việc hiện hành ban đầu của daemon xử lý trong nhóm quá trình . Nếu tùy chọn này không được xác định, trong mod_wsgi 1.X, thư mục làm việc hiện tại của tiến trình cha mẹ Apache sẽ là được thừa kế bởi các quy trình daemon trong nhóm tiến trình. Thông thường, thư mục làm việc hiện tại của tiến trình cha mẹ Apache sẽ là thư mục gốc. Trong mod_wsgi 2.0+ thư mục đang hoạt động ban đầu sẽ được đặt làm thư mục chính của người dùng mà quá trình daemon chạy như.

Tôi rất tò mò, tuy nhiên - tại sao bạn nên sử dụng os.chdir hơn bất kỳ rủi ro bảo mật nào theo ý kiến ​​của mình?

+1

tính năng này không hoạt động - Tôi vẫn nhận được '/' từ 'os.getcwd()' trong ứng dụng wsgi. – thkang

+0

bị cùng một vấn đề, có may mắn không? –

Các vấn đề liên quan