मैं अपाचे सर्वर की रूट डायरेक्टरी कैसे बदलूं? [बन्द है]


241

क्या किसी को पता है कि अपाचे सर्वर के दस्तावेज़ रूट को कैसे बदलना है? मैं मूल रूप localhostसे /users/spencer/projectsइसके बजाय निर्देशिका से आना चाहता हूं /var/www

संपादित करें

मैंने इसे समाप्त करने की योजना बनाई। कुछ ने सुझाव दिया कि मैंने httpd.confफ़ाइल बदल दी है, लेकिन मैंने एक फ़ाइल ढूंढना समाप्त कर /etc/apache2/sites-available/defaultदिया और रूट डायरेक्टरी /var/wwwको /home/myusername/projects_folderउसमें से बदल दिया और वह काम कर गई।


स्टैक ओवरफ्लो प्रोग्रामिंग और विकास के सवालों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद सर्वर दोष या वेबमास्टर स्टैक एक्सचेंज पूछने के लिए एक बेहतर स्थान होगा।
jww

जवाबों:


209

आपको DocumentRootअपनी httpd.confफ़ाइल में सेटिंग बदलनी होगी । संभावना है कि यह कुछ इस तरह से होगा/etc/apache2/conf/httpd.conf

अपने पसंदीदा संपादक (मैं विम की सलाह देता हूं ) का उपयोग करें DocumentRootऔर इसे देखें और इसे बदल दें /users/spencer/projects। इस तरह दिखने वाली सेटिंग के लिए थोड़ा और नीचे देखें:

<Directory "/var/www">

आप अपनी नई निर्देशिका के उद्धरणों में क्या बदलना चाहते हैं। यह अपाचे को उस डायरेक्टरी से पढ़ने के लिए देता है जब कोई उपयोगकर्ता उस पर कॉल करने का अनुरोध करता है।

अब अपनी अपाचे सेवा को पुनः आरंभ करें ( httpd -k restart) और आपको जाना अच्छा होना चाहिए।

संपादित करें : Apache2 साइट कॉन्फिग फाइल्स को अब आम तौर पर /etc/apache2/sites-available/ (Debian, Ubuntu, आदि) में रखा जाता है ।


6
मैंने /etc/apache2/httpd.conf खोला, लेकिन फ़ाइल रिक्त थी। मैं इसे gedit के साथ खोल रहा हूं।
स्पेंसर कोइली

3
फ़ाइल आपके लिनक्स के स्वाद के आधार पर /etc/httpd/conf/httpd.conf में हो सकती है।
क्रिस हेनरी

3
httpd.conf फ़ाइल खाली है, लेकिन मुझे etc / apache2 / sites-available / default पर एक फ़ाइल मिली और रूट डायरेक्टरी को बदल दिया। मुझे लगता है कि यह एक वास्तविक सर्वर पर नहीं है उल्लेख किया जाना चाहिए। मैं एक स्थानीय विकास वातावरण स्थापित कर रहा हूं। यकीन नहीं है कि अगर एक फर्क पड़ता है
स्पेन्सर Cooley

3
क्या एक ही समय में दोनों / var / www और / home / myusername / Projects_folder को सक्षम करना संभव होगा? और मुझे कैसे कॉन्फ़िगर करना चाहिए? धन्यवाद।
पॉल लो

3
"उत्तर" वास्तव में अप्रचलित है। उबंटू 18.x डॉक्स के अनुसार सही उत्तर या तो अपाचे की रूट डायरेक्टरी को बदल दें या प्रोजेक्ट को / var / www / html में ले जाएं। अपाचे की मूल निर्देशिका को बदलने के लिए, चलाएँ: cd / etc / apache2 / sites-available। फिर कमांड का उपयोग करके 000-default.conf फ़ाइल खोलें: nano 000-default.conf। DocumentRoot विकल्प संपादित करें: DocumentRoot / path / to / my / project। (देखें askubuntu.com/questions/337874/... )
sea26.2

263

कृपया ध्यान दें, यह केवल Ubuntu 14.04 LTS और नए रिलीज़ के लिए लागू होता है।

मेरे Ubuntu 14.04 LTS में, दस्तावेज़ रूट को सेट किया गया था /var/www/html। इसे निम्न फ़ाइल में कॉन्फ़िगर किया गया था:

/etc/apache2/sites-available/000-default.conf

तो बस एक करो

sudo nano /etc/apache2/sites-available/000-default.conf

और निम्नलिखित लाइन को आप जो चाहते हैं उसे बदलें:

DocumentRoot /var/www/html

इसके अलावा ए

sudo nano /etc/apache2/apache2.conf

और इसे खोजें

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

और बदल जाते हैं /var/www/html अपनी पसंदीदा निर्देशिका में करें

और इसे बचाओ।

अपने परिवर्तनों को सहेजने के बाद, बस Apache2 वेबसर्वर को फिर से शुरू करें और आपको किया जाएगा :)

sudo service apache2 restart


यदि आप एक ग्राफिकल टेक्स्ट एडिटर को पसंद करते हैं, तो आप बस इसके sudo nanoद्वारा बदल सकते हैं gksu gedit


1
@ पाओल लो: मैंने उबंटू 13.10 पर यह कोशिश नहीं की, केवल उबंटू 14.04 पर; जैसा कि मुझे पूरा यकीन है कि पहली बार मैंने अपाचे की स्थापना की थी (जो उबंटू 12.04 पर था), ऐसी कोई निर्देशिका नहीं थी। तो हां, मुझे लगता है कि यह केवल Ubuntu 14.04 LTS और नए पर उपलब्ध है। हालाँकि, आप अन्य उत्तरों पर एक नज़र डाल सकते हैं। अपवोट्स का सुझाव है कि उन्होंने अन्य लोगों की मदद की, शायद वे उबंटू 13.10 के साथ भी काम करते हैं।
मोज़ुज़्ज़

1
हालाँकि पूछने के लिए धन्यवाद, मैंने अभी इस जानकारी को उत्तर में संपादित किया है ताकि कोई और पुराने उबंटू संस्करणों (y) के साथ इस कोशिश के जाल में न
चला जाए

3
@mozzbozzm, आप सही हैं। केवल 14.04। वास्तव में एक अजीब विकल्प, अब अचानक var/www/htmlडिफ़ॉल्ट रूट के रूप में। क्या वे वास्तव में लोगों का समय बर्बाद करने की कोशिश कर रहे हैं ? :)
दाविदकोनराड

4
You don't have permission to access / on this server.जब मैंने अपने ब्राउज़र में लोकलहोस्ट: 80 मारा तो मुझे एक निषिद्ध त्रुटि मिली। क्या मुझे पोर्ट बदलने की आवश्यकता है?
कोस्टा

3
@ कोस्टा I ने /etc/apache2/apache2.conf <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> में जोड़कर समस्या का हल किया
कीनन

42

मुझे एडिट करना था /etc/apache2/sites-available/default। आरडीएल द्वारा उल्लिखित लाइनें समान हैं।


3
@Pabloab द्वारा सुझाए गए संपादन में यह कहना था: "Apache 2.4 और इसके बाद के संस्करण की आवश्यकता है .conf, और डिफ़ॉल्ट 000-रूप से उपसर्ग है"। परिणाम है /etc/apache2/sites-available/000-default.conf। मैंने इसका परीक्षण नहीं किया है, लेकिन यह कुछ लोगों की मदद कर सकता है।
निक

^ ^ यह तय है। यह कहां प्रलेखित है कि मुझे अपनी साइटों-उपलब्ध फाइलों के अंत में .conf की आवश्यकता है।? मेरे पास लगभग 20 वर्चुअल होस्ट हैं जो एक अद्यतन के बाद अक्षम और ऑफ़लाइन थे, और कुछ घंटों के बाद, इसे खोजने और मेरी साइटों-उपलब्ध फ़ाइलों का नाम बदलकर मेरे लिए इसे निर्धारित किया।
जेम्स पेरिह

23

यह Ubunutu 14.04 के लिए है:

फ़ाइल में /etc/apache2/apache2.confइसे निर्देशिका नाम के बिना नीचे होना चाहिए:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

और फ़ाइल में /etc/apache2/sites-available/000-default.confआपको कस्टम निर्देशिका नाम यानी www शामिल होना चाहिए:

DocumentRoot /home/username/www

यदि इससे ऊपर नहीं है तो सर्वर लोड करते समय यह आपको एक त्रुटि देगा: Forbidden You don't have permission to access / on this server


धन्यवाद दोस्त :) इसने मेरे लिए उबंटू में 16.04
Magesh Kumaar

2
इसने डेबियन 8
androsfat

15

Apache2 के लिए अलग-अलग पोर्ट के तहत डायरेक्टरी बदलने या कई डायरेक्टरी से चलने का सही तरीका इस प्रकार है:

Apache2 के लिए कॉन्फ़िगरेशन फ़ाइल के अंतर्गत स्थित हैं /etc/apache2और पुराने संस्करणों के रूप में एक एकल कॉन्फ़िगरेशन फ़ाइल का उपयोग नहीं करता है, लेकिन /etc/apache2/apache2.confमुख्य कॉन्फ़िगरेशन फ़ाइल होने के साथ छोटे कॉन्फ़िगरेशन फ़ाइलों में विभाजित है । एक अलग निर्देशिका से फ़ाइलों की सेवा करने के लिए हमें एक नई virtualhost conf फ़ाइल की आवश्यकता है। वर्चुअलबॉस्ट conf फाइलें /etc/apache2/sites-available( स्थित साइटों को सक्षम में संपादित न करें) में स्थित हैं। डिफ़ॉल्ट अपाचे इंस्टॉलेशन virtualhost conf फ़ाइल का उपयोग करता है 000-default.conf

एपाचे की डिफ़ॉल्ट स्थापना (पोर्ट 80 पर स्थानीयहोस्ट पर चलने वाली) द्वारा उपयोग की जाने वाली डिफ़ॉल्ट वर्चुअलहोस्ट फ़ाइल की प्रतिलिपि बनाकर एक नई वर्चुअलाइज फाइल तैयार करना शुरू करें। निर्देशिका में बदलें /etc/apache2/sites-availableऔर फिर प्रतिलिपि बनाएँ sudo cp 000-default.conf example.com.conf, अब फ़ाइल को इसके द्वारा संपादित करें sudo gedit example.com.conf:

<VirtualHost *:80>
    ServerAdmin example@localhost
    DocumentRoot /home/ubuntu/example.com    
</VirtualHost>

मैंने संक्षिप्तता के लिए उपरोक्त फ़ाइल से गैर महत्वपूर्ण लाइनें हटा दी हैं। यहाँ DocumentRootनिर्देशिका का पथ है जहाँ से वेबसाइट फ़ाइलों को इस तरह से परोसा जाना हैindex.html

वह निर्देशिका बनाएं जिससे आप फ़ाइलों की सेवा करना चाहते हैं, उदाहरण के लिए; mkdir example.comऔर निर्देशिका के स्वामी और डिफ़ॉल्ट समूह को बदलें, उदाहरण के लिए यदि आपका उपयोगकर्ता नाम लॉग इन किया गया है तो ubuntuपरिवर्तन अनुमतियाँ हैं sudo chown ubuntu:www-data example.com। यह उपयोगकर्ता तक पूर्ण पहुंच प्रदान करता है ubuntuऔर समूह तक पहुंच को पढ़ने और निष्पादित करने की अनुमति देता हैwww-data

अब अपाचे conf फ़ाइल को संपादित /etc/apache2/apache2.confआदेश जारी करके sudo gedit apache2.confऔर लाइन को खोजने <Directory /var/www/>और बंद टैग नीचे </Directory>, नीचे निम्नलिखित जोड़ें:

<Directory /home/ubuntu/example.com>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

अब सक्षम या वर्चुअलहोस्ट विन्यास फाइल है, जो कर रहे हैं निष्क्रिय करने के लिए दो आदेशों हैं a2ensiteऔर a2dissiteक्रमशः। अब चूंकि हमारी example.com.confफ़ाइल समान पोर्ट ( 80) का उपयोग करती है जैसा कि डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल ( 000-default.conf) द्वारा उपयोग किया जाता है , हमें कमांड जारी करके डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल को अक्षम करना होगा sudo a2dissite 000-default.confऔर हमारे virtualhost conf फ़ाइल को सक्षम करना होगा।sudo a2ensite example.com.conf

अब कमांड के साथ सर्वर को रिस्टार्ट या रीलोड करें sudo service apache2 restart। अब अपाचे निर्देशिका से फ़ाइलों में कार्य करता है example.comपर localhostकी डिफ़ॉल्ट पोर्ट पर80

a2ensiteआदेश मूल रूप से साइट-सक्षम निर्देशिका के अंतर्गत conf फ़ाइल के लिए एक प्रतीकात्मक लिंक बनाता है

साइट-सक्षम (या * -सक्षम) डायरेक्टॉय के भीतर फ़ाइलों को संपादित न करें, जैसा कि इस उत्तर में बताया गया है https://stackoverflow.com/a/41568701/2532763

बंदरगाह को बदलने और विभिन्न बंदरगाहों पर कई निर्देशिकाओं से चलाने के लिए:

अब यदि आपको किसी भिन्न पोर्ट पर डायरेक्टरी को चलाने की आवश्यकता है, तो वर्चुअलाइज़ह फ़ाइल को संपादित करके पोर्ट संख्या को 80 से 8080 तक बदल दें:

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>

और संपादन /etc/apache2/ports.confऔर Listen 8080लाइन के ठीक नीचे जोड़नाListen 80

अब हम default virtualhost conf फाइल को सक्षम कर सकते हैं जो कि 80 पर चलता है क्योंकि example.com निर्देशिका पोर्ट 8080 का उपयोग करता है, जैसा कि sudo a2ensite 000-default.conf

अब कमांड के साथ सर्वर को रिस्टार्ट या रीलोड करें sudo service apache2 restart। अब दोनों निर्देशिकाओं से localhostऔर तक पहुँचा जा सकता हैlocalhost:8080


4

मैं LAMP के साथ काम कर रहा था और दस्तावेज़ रूट फ़ोल्डर को बदलने के लिए मैंने डिफ़ॉल्ट फ़ाइल संपादित की है जो / etc / apache2 / sites-available फ़ोल्डर में है। यदि आप भी ऐसा ही करना चाहते हैं तो निम्नानुसार संपादित करें

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

इसके बाद यदि आप ब्राउज़र में लोकलहोस्ट टाइप करते हैं तो यह * / home / username / new_root_folder * सामग्री को लोड करेगा ।


4

यदि आप http.confनिक के रास्ते को नहीं पा सके और उसका अनुसरण किया।

का उपयोग कर अपाचे को पुनरारंभ करें sudo service apache2 restart


4

लिनक्स मिंट पर अपाचे 2 के लिए 17.3 दालचीनी 64-बिट निम्नलिखित काम करती है:

  1. में /etc/apache2/sites-available/खोलने 000-default.confफ़ाइल, और बदलने के दस्तावेज़ रूट अपने निर्देशिका का निरपेक्ष पथ के लिए।

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. में /etc/apache2/खुला httpd.confहै, और एक जोड़ने के <Directory>टैग अपने निर्देशिका संदर्भित और के लिए टैग के रूप में ठीक उसी सेटिंग्स युक्त var/www

    sudo vim /etc/apache2/apache2.conf

    मेरी मशीन पर यह इस तरह दिखता था:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

नोट: पहले चरण में आप संभवतः फ़ाइल को दस्तावेज़ रूट में बदलना चाहते हैं और default-ssl.confसाथ ही एसएसएल प्रयोजनों के लिए भी। लेकिन जहां तक ​​मैं यह बता सकता हूं कि सामान्य विकास पर्यावरण को चलाने के लिए आवश्यक नहीं है।


2

Apache संस्करण 2.4.18 (Ubuntu) में।

1.go to this file /etc/apache2/apache2.conf सर्च करें <Directory /var/www/>और अपनी डायरेक्टरी को बदलें ......

2.go to /etc/apache2/sites-available/000-default.conf के लिए खोजें DocumentRoot /var/www/htmlऔर अपने DocumentRoot को बदलें ...।


मैंने दोनों काम किए हैं। यह अभी भी निषिद्ध दिखाता है कि आपके पास इस सर्वर तक पहुँचने की अनुमति नहीं है।
प्रोग्रामर

अपने फ़ोल्डर की अनुमति की जाँच करें अगर यह आपके घर निर्देशिका में नहीं है।
हबीबुन

2

आप उबंटू 16.04 का उपयोग कर रहे हैं। कृपया 000 / default.conf को निर्देशिका / etc / apache2 / साइटों में उपलब्ध- अद्यतन करें

यहाँ -> ServerAdmin वेबमास्टर @ localhost DocumentRoot / var / www / html / YourFolder


1

मैंने /var/wwwआवश्यक निर्देशिका (जैसे) के लिए एक नरम लिंक बनाया था ।/users/username/projects ) के और चीजें उसके बाद ठीक थीं।

हालांकि, स्वाभाविक रूप से, मूल /var/wwwको हटाए जाने या नाम बदलने की आवश्यकता है।


0

अगर किसी ने फ़ोल्डर LAMPमें स्थापित किया है /optतो/etc/apache2 वह नहीं है जिसे आप खोज रहे हैं।

httpd.confमें फ़ाइल के लिए देखो/opt/lampp/etc/httpd.conf

इस फ़ोल्डर में लाइन बदलें और इसे टर्मिनल से सहेजें।



0

यदि आप लिनक्स टकसाल का उपयोग कर रहे हैं (व्यक्तिगत राय, सभी विकृतियों से यह मुझे खुश कर रहा है), तो इसका पालन करें:

1- / etc / apache2 / sites- उपलब्ध पर जाएं और 000-default.conf संपादित करें 2- डॉक्यूमेंटरूट के लिए खोजें, उदाहरण के लिए DocumentRoot / var / www / html आप अपनी संबंधित निर्देशिका में बदलते हैं; 3- टर्मिनल खोलें और टाइप करें: sudo service apache2 पुनरारंभ

EDITED ----- मुझे पता है कि मिंट में आप /etc/apache2/apache.conf के लिए जाते हैं, रिस्टार्ट सर्वर (चरण 3) की तुलना में अपने संबंधित पथ पर / var / www को बदलें।

बस।


0

उबंटू 14.04 पर लागू होता है और बाद में रिलीज़ होता है। कोई भी परिवर्तन करने से पहले फ़ाइलों का बैकअप लेना सुनिश्चित करें।

1.Open /etc/apache2/apache2.confऔर <Directory /var/www/>निर्देश के लिए खोज और रास्ते को बदलने के साथ /home/<USERNAME>/public_html। आप इसके बजाय * का उपयोग कर सकते हैं।

2.Open /etc/apache2/sites-available/000-default.confऔर की जगह DocumentRootसे मूल्य संपत्ति /var/www/htmlके लिए /home/<USERNAME>/public_html। इसके अलावा <Directory /var/www/html>करने के लिए <Directory /home/<USERNAME>/public_html

3.Open /etc/mods-available/php7.1.conf। निम्नलिखित कोड खोजें और टिप्पणी करें

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

चालू मत करो php_admin_flag engine OFFनिर्देश कोड के ऊपर टिप्पणी में उल्लिखित के रूप में ध्वज को । इसके अलावा php संस्करण 5.0, 7.0 या कुछ भी हो सकता है जिसे आपने इंस्टॉल किया है।

में public_htmlनिर्देशिका बनाएँ home/<USERNAME>

कमांड निष्पादित करके अपाचे सेवा को पुनरारंभ करें sudo service apache2 restart

सर्वर पर नमूना स्क्रिप्ट चलाकर परीक्षण करें।


-3

यदि आप Google के माध्यम से इस पोस्ट को ढूंढ रहे हैं (मेरे जैसे):

मैंने इसे /etc/apache2/sites-available/000-default.conf पर पाया


4
कृपया बाहरी फ़ाइल को इंगित करने के बजाय एम्बेडेड कोड के साथ अपने विस्तृत उत्तर का वर्णन करें।
क्रिश्चियन मिशॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.