मैंने लिखा है कि कैसे और 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 .
के बाद से कार्य करेगा अपने डोमेन के लिए प्राथमिक सर्वर 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.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-s .. / साइटों उपलब्ध हैं / example.com
मैं प्रयोग किया जाता है "छद्म 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 डिस्काउंट कोड या पदोन्नति कोड, साइन अप इस लिंक का उपयोग करने के लिए रेफरल क्रेडिट मुझे. धन्यवाद ![]()