मैंने लिखा है कि कैसे और Django के लिए कॉन्फ़िगर Apache, mod_python और कैसे करने के लिए रखा Apache पीछे lighttpd .

हाल ही में मैं एक अलग VPS प्रदाता पर मेरी सबसे का दौरा किया वेबसाइट मेजबान का फैसला किया [1], और Django के लिए तैनाती के बारे में अपने ज्ञान को अद्यतन तलाश शुरू कर दिया. मैं समय यह किया है चीज़ें अलग तरीके से, mod_wsgi उपयोग ( Django और अपाचे की तैनाती की सिफारिश की तरह के ), Apache विन्यास और lighttpd सामग्री गतिशील है पीछे (अन्य शब्दों में, मीडिया स्थैतिक सेवा lighttpd जाएगा).

मैं सब कुछ नीचे पिछले कुछ दिनों में किया था, और लिखा था, न बातें मैं यह कर रहा था क्योंकि यह प्रयोग का एक बहुत (परीक्षण और त्रुटि शामिल मेरे लिए). इस तरह, मैं लिख रहा हूँ इस स्मृति के आधार पर और मेरे लेख विन्यास फाइल की जाँच. अगर आप किसी भी समस्याओं का सामना, एक टिप्पणी छोड़ कृपया और मैं किसी भी स्पष्ट चूक जाएगा.

यहाँ कि यह कैसे करना है:

स्थापित हमेशा की तरह संदिग्ध

मैं अपने Ubuntu distro चयन लिनक्स, और कुछ भी इसे हवा की स्थापना पर एक है. sudo apt-get install package-name . इस भाग में अच्छी तरह से वेब के चारों ओर कवर किया जाता है, तो मैं विवरण कैसे यह किया है में टिप्पणी नहीं करेंगे. पर्याप्त, कहने के लिए स्थापित किया है कुछ की मैं संकुल थे apache2 , libapache2-mod-wsgi , और lighttpd .

कॉन्फ़िगर अपाचे और mod_wsgi अपनी परियोजना लोड करने के लिए

के बाद से कार्य करेगा अपने डोमेन के लिए प्राथमिक सर्वर lighttpd, मैं 81 बंदरगाह के लिए अपाचे कदम का निर्णय लिया:

vi sudo / etc/apache2/ports.conf

अधिलेखित मौजूदा आईपी: शोध प्रबंध के साथ पोर्ट लाइनों:

NameVirtualHost 127.0.0.1:81
81 सुनो

जहां आप अधिष्ठापन मॉड्यूल पर नए Ubuntu अजगर डाल अपने खुद के लिए बदल गया है /usr/local/lib/python2.6/dist-packages/ . इसलिए, मैं द्वारा स्थापित किया है अपलोड Django, मेरा परियोजना और अन्य आवश्यक मॉड्यूल (नहीं थे कौन सा apt-get निर्देशिका इस) करने के लिए, संरचना छोड़ने के साथ मेरा पीछा:

Usr/local/lib/python2.6/dist-packages/django / /
Usr/local/lib/python2.6/dist-packages/my_project_name / /

Mod_wsgi दस्तावेज में कोई Django एकीकरण पर एक उत्कृष्ट लेख है, लेकिन यह काफी है लंबाई. तुम्हें पढ़ना चाहिए यह वैसे भी, के बाद से वहाँ विकल्प है कि आप प्रयोग करना चाहते हो सकता है बहुत सारी हैं. यहाँ एक cheatsheet है:

अपने डोमेन नाम के लिए दस्तावेज़ रूट बनाएँ:

sudo mkdir var / www / example.com /

जो फ़ाइल बनाएँ हो अपनी परियोजना के विन्यास के साथ mod_wsgi द्वारा लोड विल:

sudo mkdir usr/local/lib/python2.6/dist-packages/project_name/apache / /
vi sudo / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi

इन सामग्री के साथ:

आयात sys
आयात ओएस

sys.path.append (/ usr/local/lib/python2.6/dist-packages ')
os.environ ['DJANGO_SETTINGS_MODULE] =' project_name.settings '

आयात django.core.handlers.wsgi

django.core.handlers.wsgi.WSGIHandler आवेदन = ()

Apache के लिए एक डोमेन विन्यास फाइल बनाएँ:

sudo vi etc/apache2/sites-available/example.com /

इन सामग्री के साथ:

<VirtualHost 127.0.0.1:81>
ServerName example.com
ServerAdmin username@example.com

DocumentRoot var / www / example.com /

उर्फ मीडिया / / usr/local/lib/python2.6/dist-packages/django/contrib/admin/media / /
<Directory /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media>
विकल्प-अनुक्रमित
आदेश इनकार करते हैं, की अनुमति
सब से अनुमति दें
</ निर्देशिका>

उर्फ / project_media_dir / usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir /
<Directory /usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir>
विकल्प-अनुक्रमित
आदेश इनकार करते हैं, की अनुमति
सब से अनुमति दें
</ निर्देशिका>

WSGIScriptAlias / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi
WSGIDaemonProcess example.com
WSGIProcessGroup example.com

<Directory /usr/local/lib/python2.6/dist-packages/project_name/apache>
आदेश इनकार करते हैं, की अनुमति
सब से अनुमति दें
</ निर्देशिका>
</ VirtualHost>

इसे सक्रिय:

सीडी / etc/apache2/sites-enabled /
sudo ln-s .. / साइटों उपलब्ध हैं / example.com

कॉन्फ़िगर प्रॉक्सी गैर अपाचे स्थैतिक मीडिया अनुरोधों को lighttpd

मैं प्रयोग किया जाता है "छद्म Lighttpd रिवर्स करने के लिए ब्लॉग" प्रदर्शन लेख MySQL विन्यास के रूप में अपने खुद के आधार है. इसलिए, हम एक URL क्या करेंगे http://example.com/server-status , विल, प्रमाणीकरण की आवश्यकता होती है जो हमें सक्षम करने के लिए स्थिति देख Apache सर्वर.

बनाएँ त्रुटि के लिए एक निर्देशिका लॉग:

sudo mkdir var / log / lighttpd / example.com

lighttpd के लिए एक डोमेन विन्यास फाइल बनाएँ:

vi sudo / etc/lighttpd/conf-available/20-example.com.conf

इन सामग्री के साथ:

+ = Server.modules (mod_auth ""
Mod_status ""
"Mod_proxy",
)

$ HTTP [] "मेजबान" = ~ "(^ | \). उदाहरण Com. \ $ ("
$ HTTP ["url"] ~ "\!. (जे एस | सीएसएस | gif jpg | ico | txt | swf | html | htm png | |) $ ("
Proxy.server = ("" => (
("=> मेजबान", "बंदरगाह 127.0.0.1> = 81)
))
)

server.document रूट = "/ var / example.com / www /"
= / / Log / lighttpd / error.log example.com / var server.errorlog ""
बता listing.activate = "अक्षम"

auth.backend = "htpasswd"
Auth.backend.htpasswd.userfile = "/ var / www /. Htpasswd"
Auth.require = ("/ सर्वर स्थिति" => (
"= विधि"> "बुनियादी",
"दायरे> =" "स्थिति",
= "आवश्यक"> "मान्य उपयोगकर्ता"
)
)
)

वहाँ से ऊपर विन्यास में उल्लेख के लायक लाइनें हैं:

$ HTTP [] "मेजबान" = ~ "(^ | \). उदाहरण Com. \ $ ("

इस चादर के निर्देशों के अंदर क्या केवल example.com के लिए अनुरोध करने के लिए लागू होते हैं.

$ HTTP ["url"] ~ "\!. (जे एस | सीएसएस | gif jpg | ico | txt | swf | html | htm png | |) $ ("
Proxy.server = ("" => (
("=> मेजबान", "बंदरगाह 127.0.0.1> = 81)
))
)

इन एक्सटेंशन में निर्दिष्ट नहीं समाप्त दस्तावेज़ों के लिए किसी भी अनुरोध करने के लिए 127.0.0.1 IP, 81 बंदरगाह भेज देंगे, अपाचे कहां रहता है. मूलतः, सब कुछ) जो स्थिर (सामग्री या अधिक सही, | अलग नियमित अभिव्यक्ति के द्वारा निर्दिष्ट है, विल रहो lighttpd द्वारा सेवा की.

cd / etc / lighttpd / conf-सक्षम /
sudo ln-s .. / conf-उपलब्ध हैं / example.com.conf

जहाँ आप परियोजना और Django व्यवस्थापक स्थैतिक सामग्री फाइलसिस्टम बताओ स्थित हैं:

sudo ln-s usr/local/lib/python2.6/dist-packages/django/contrib/admin/media / / / www / मीडिया / var example.com
sudo ln-s usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir / var / www / example.com / project_media_dir / /

अंत में, सब कुछ तो पुनः आरंभ नवीनतम विन्यास लागू किया जा सकता

sudo / etc/init.d/apache2 पुनः आरंभ
sudo / / init.d / restart आदि lighttpd

तो, वास्तव में क्या होता है?

जब एक आगंतुक अपनी वेबसाइट (example.com को जाता है), पहली मारा जाएगा lighttpd अनुरोध करता हूँ. यदि दस्तावेज़ पथ स्थैतिक सामग्री एक्सटेंशन की हमारी सूची में स्ट्रिंग के साथ समाप्त नहीं करता है, अनुरोध किया 81 बंदरगाह पर अपाचे को proxied विल, अन्यथा lighttpd विल ही कार्य करता है.

और यह बात है, अगर मेरी याददाश्त सही है. क्या मैंने कुछ याद आती है? पर टिप्पणी करेंगे.

[1] linodivas, यदि आप उत्सुक हैं. मुख्य कारण बैंडविड्थ सस्ता है. यदि आप एक रेफरल linodivas रहे हैं तलाश के लिए linodivas linodivas डिस्काउंट कोड या पदोन्नति कोड, साइन अप इस लिंक का उपयोग करने के लिए रेफरल क्रेडिट मुझे. धन्यवाद :)

    टिप्पणियों Disqus द्वारा संचालित ब्लॉग

    Portugus flagItaliano flagCoreano flagChins (simplificado) flagEnglish flagAlemo flagFrancs flagEspanhol flag
    Japons flagrabe flagRusso flagHolands flagBlgaro flagTcheco flagCroata flagDinamarqus flag
    Finlands flagHindu flagPolons flagRomeno flagSueco flagGrego flagNoruegus flag 
    By N2H
    Dreamhost होस्टिंग पर डिस्काउंट Dolet 96!
    जड़ता का प्रयोग करें कोड "" प्रोमो. 20GB अंतरिक्ष की और 1TB हस्तांतरण के साथ दीपक.

    संबंधित आलेख

    • कोई संबंधित पोस्ट