मैंने लिखा है कैसे कॉन्फ़िगर अपाचे, mod_python और Django और कैसे Apache के पीछे lighttpd डाला के लिए.
हाल ही में मैं एक अलग VPS प्रदाता [1] पर मेरी सबसे का दौरा किया वेबसाइट मेजबान का फैसला किया है, और एक खोज के लिए Django तैनाती के बारे में अपने ज्ञान को अद्यतन शुरू कर दिया. मैं इस बार कुछ अलग ढंग से किया, mod_wsgi Apache और Django की तैनाती की है (सिफारिश की तरह) का उपयोग कर, और गतिशील सामग्री (दूसरे शब्दों में लिए Apache के पीछे lighttpd विन्यस्त, स्थैतिक मीडिया की सेवा करेंगे lighttpd).
मैंने पिछले कुछ दिनों में नीचे सब कुछ किया, और कुछ मैं कर रहा था लिखा नहीं है, क्योंकि यह प्रयोग बहुत परीक्षण (और मुझे त्रुटि के लिए) शामिल किया गया. जैसे, मैं यह स्मृति के आधार पर लेख लिख रहा हूँ और मेरे config फाइल की जाँच. यदि आप कोई समस्या आती है, कृपया एक टिप्पणी छोड़ दो और मैं किसी चूक के स्पष्ट करना होगा.
यहाँ है इसे कैसे करना है:
मैं अपने Linux distro Ubuntu के रूप में चुनते हैं, और कुछ की स्थापना पर एक हवा है. sudo apt-get install package-name इस भाग को अच्छी तरह से वेब के आसपास कवर किया है, तो मैं जानकारी में कोई टिप्पणी नहीं करेंगे कि यह कैसे किया है. कहना पर्याप्त है, संकुल को अधिष्ठापित किया है मैं कुछ apache2 libapache2-mod-wsgi और lighttpd
के बाद से अपने डोमेन के लिए प्राथमिक सर्वर के रूप में कार्य करेगा lighttpd, मैं 81 बंदरगाह के लिए Apache जाने का फैसला किया:
sudo vi / etc/apache2/ports.conf
अधिलेखित मौजूदा IP: इन पंक्तियों के साथ पोर्ट:
127.0.0.1:81 NameVirtualHost
81 सुनो
तुम कहाँ नए Ubuntu प्रतिष्ठानों पर अपनी पायथन मॉड्यूल डाल /usr/local/lib/python2.6/dist-packages/ में बदल गया है /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 / /
sudo vi / 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.comDocumentRoot / 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 एस .. / साइटों-उपलब्ध / example.com
मैं रिवर्स प्रॉक्सी के रूप में MySQL प्रदर्शन है ब्लॉग Lighttpd "इस्तेमाल अपना विन्यास के लिए एक आधार के रूप में लेख '. इसलिए, हम एक url http://example.com/server-status जो प्रमाणीकरण की आवश्यकता होगी है, हमें सक्षम करने के लिए है Apache सर्वर की स्थिति देख लूँगा.
त्रुटि लॉग के लिए एक निर्देशिका बनाएँ:
sudo mkdir / var / log / lighttpd / example.com
Lighttpd के लिए एक डोमेन विन्यास फाइल बनाएँ:
sudo vi / etc/lighttpd/conf-available/20-example.com.conf
इन सामग्री के साथ:
server.modules + = (mod_auth "",
"Mod_status",
"Mod_proxy",
)$ HTTP [ "मेजबान"] = ~ "(^ | \.) उदाहरण \ Com. $ ("
$ HTTP [ "Url"]! ~. "\ (जे एस | सीएसएस | gif | jpg | png | ico | txt | swf | HTML | htm) $ ("
proxy.server = ( "> (
"(मेजबान ="> "127.0.0.1", "पोर्ट '=> 81)
))
)server.document-जड़ = "/ var / www / example.com /"
server.errorlog = "/ var / log / lighttpd / example.com / error.log"
बताओ listing.activate = "" निष्क्रियauth.backend = htpasswd ""
auth.backend.htpasswd.userfile = "/ var / www /" htpasswd.
auth.require = "(/ सर्वर-स्थिति '=> (
"विधि ="> "मूल",
"दायरे ="> "स्थिति",
"आवश्यक" => "मान्य उपयोगकर्ता '
)
)
)
वहाँ ऊपर विन्यास में उल्लेख के लायक पंक्तियाँ हैं:
$ HTTP [ "मेजबान"] = ~ "(^ | \.) उदाहरण \ Com. $ ("
इस निर्देशों के भीतर रैप केवल example.com के लिए अनुरोध पर लागू होंगे.
$ HTTP [ "Url"]! ~. "\ (जे एस | सीएसएस | gif | jpg | png | ico | txt | swf | HTML | htm) $ ("
proxy.server = ( "> (
"(मेजबान ="> "127.0.0.1", "पोर्ट '=> 81)
))
)
इन समाप्त निर्दिष्ट एक्सटेंशन में 127.0.0.1, 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 / / var / www 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 / etc / init.d / lighttpd पुनः आरंभ
जब एक आगंतुक आपकी वेबसाइट (example.com) को जाता है, अनुरोध पहली lighttpd होगा मारा. यदि दस्तावेज़ मार्ग स्थिर सामग्री विस्तार की हमारी सूची में स्ट्रिंग के साथ समाप्त नहीं होता है, अनुरोध 81 बंदरगाह पर अपाचे को proxied होगा, अन्यथा स्वयं की सेवा करेंगे lighttpd.
और वह यह है, अगर मेरी याददाश्त सही है. क्या मैं कुछ भी याद आती है? पर टिप्पणी करेंगे.
1 [] Linode, यदि आप उत्सुक हैं. जिसका मुख्य कारण बैंडविड्थ सस्ता है. यदि आप एक Linode सिफ़ारिश के लिए देख रहे हैं, Linode Linode डिस्काउंट कोड या बढ़ावा देने के कोड को, इस लिंक का उपयोग मुझे रेफरल क्रेडिट साइन अप करें. धन्यवाद ![]()