क्या मुझे अपने घर के लिए मेरी / var / www निर्देशिका को सिमिलिंक करना चाहिए?


20

मैंने सिर्फ एक लेम्प सेटअप के साथ उबंटू सर्वर 10.04 स्थापित किया है। मैं वहां एक वेबसाइट होस्ट करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि सर्वर पर मेरी फ़ाइलों को प्राप्त / संपादित करने का सबसे अच्छा तरीका है। Googling कई विकल्प प्रदान करता है लेकिन मुझे यकीन नहीं है कि कौन सा सबसे अच्छा है?

जब तक कोई बेहतर विकल्प न हो, मैं एक अन्य पीसी (विंडोज या लिनक्स) पर पेज बनाना चाहता हूं और सर्वर में बदलाव को सिंक करने के लिए एसएफटीपी का उपयोग करता हूं - लेकिन क्या मैं इसे सिमिलिंक किए गए फ़ोल्डर में ~ / या अधिकारों को बदलकर करता हूं / var / www / फ़ोल्डर पर?


जवाबों:


21

हर सेटअप अलग है। मेरे लिए मेरे पास एक सर्वर पर बहुत सारे उपयोगकर्ता हैं जो प्रत्येक वेबसाइट को होस्ट करते हैं, आपके लिए, आपको सिस्टम पर केवल एक से अधिक उपयोगकर्ता बनाने की आवश्यकता नहीं होगी। हालाँकि, यदि आप इस सर्वर पर कई वेबसाइटों का प्रबंधन करते हैं तो यह सेटअप आपको मानक LAMP सेटअप की तुलना में आसान तरीके से प्रत्येक डोमेन को प्रबंधित, कॉन्फ़िगर और डीबग करने में मदद करेगा। ऐसा होने के लिए मैं अपाचे द्वारा कई उपकरणों का उपयोग अनुमति त्रुटियों के आसपास प्राप्त करने के लिए करता हूं।

सबसे पहले, यह दस्तावेज़ संरचना है जिसका मैं उपयोग करता हूं:

/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs

प्रत्येक उपयोगकर्ता के पास एक डोमेन फ़ोल्डर के साथ अपना खाता होता है (जिसे मैंने इसमें जोड़ा है जो /etc/skelहर बार बनाया जाता है। प्रत्येक डोमेन में domainsफ़ोल्डर के साथ फ़ोल्डर में इसका स्वयं का htmlफ़ोल्डर है (मेरे पास इसके कारण हैं, मुख्य रूप से इसलिए डोमेन के बाहर वेब फ़ाइलें हो सकती हैं) सार्वजनिक दायरे के अनुसार) इस संरचना को संशोधित करने के लिए स्वतंत्र महसूस करें जैसा कि आप फिट देखते हैं, बस इस पोस्ट में उन परिवर्तनों को ले जाने के लिए याद रखें।

दूसरे, मैं बहुत से PHP साइटों को होस्ट करता हूं इसलिए मैं अपने कॉन्फ़िगरेशन में suPHP का उपयोग करता हूं। डिफ़ॉल्ट रूप से मानक संग्रह पैकेज में उचित संकलित ध्वज सक्षम नहीं होता है जिसके परिणामस्वरूप suPHP का कम सुरक्षित संस्करण होता है। मैंने अपना खुद का suPHP पैकेज बनाया है जिसका उपयोग मैं अपने सर्वर पर करता हूं, नीचे दिए गए इंस्टॉलेशन निर्देश। suPHP आपको यह परिभाषित करने की अनुमति देता है कि उपयोगकर्ता PHP लिपियों को किस तरह निष्पादित किया जाना चाहिए (अन्य बातों के साथ: प्रत्येक साइट के लिए कस्टम php.ini, आदि)। मैं Apache के लिए suExec को भी सक्षम करता हूं - आगे www-data उपयोगकर्ता (ऐसा उपयोगकर्ता जिसे मैं तिरस्कृत करता हूं) के पास कोई स्वामित्व होने की आवश्यकता को दूर करता हूं।

पहले सुनिश्चित करें कि आपके पास अपाचे हैं, और आपके सर्वर पर स्थापित अन्य सभी सेवाएं। सुनिश्चित करें कि वे कम से कम काम कर रहे हैं। उसके बाद मैं suphp-common और आवश्यक libapache2-mod-suphp मॉड्यूल स्थापित करने की सलाह देता हूं (अधिक जानकारी: क्या हैं और मैं उनका उपयोग कैसे करूं? )। फिर, उन स्थापित करने के बाद, suPHP और suexec का उपयोग करके सक्रिय करेंa2enmod

sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5

sudo /etc/init.d/apache restart

इसके बाद कॉन्फ़िगरेशन फाइल आएगी। मैंने विभिन्न उपकरण बनाए हैं जो स्वचालित रूप से हर बार जब मैं एक नई साइट जोड़ता हूं तो विन्यास फाइल उत्पन्न करता है; हालाँकि, यहाँ मूल टेम्पलेट है जिसका मैं उपयोग करता हूँ:

<VirtualHost *:80>
    ServerAdmin [EMAIL]
    ServerName [DOMAIN]
    ServerAlias www.[DOMAIN] [DOMAIN]
    DocumentRoot /home/[USER]/domains/[DOMAIN]/html

    <Directory /home/[USER]/domains/[DOMAIN]>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
    </Directory>

    ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined

    SuexecUserGroup [USER] [USER]

    suPHP_UserGroup [USER] [USER]
    suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>

यह उस डोमेन के लिए लॉगिंग, डॉक्यूमेंट रूट और डोमेन को संचालित करने के लिए अन्य सभी मूलभूत आवश्यकताओं को निर्धारित करता है। मैं इन फ़ाइलों को /etc/apache2/sites-available/आमतौर पर नामित में रखता हूं [USER]-[DOMAIN]और उन्हें सक्षम / अक्षम करता हूंa2ensite तरह से :

sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]

कॉन्फ़िगरेशन फ़ाइलों में प्रत्येक संशोधन के बाद अपाचे को फिर से लोड करना होगा

sudo /etc/init.d/apache reload

हालांकि यह मेरी राय में, लचीलेपन की मात्रा को सेटअप करने के लिए बहुत कुछ लग सकता है, लेकिन सेटअप समय से बहुत दूर है। हालाँकि आपको केवल एक ही उपयोगकर्ता वेबसर्वर की आवश्यकता है, भविष्य में यदि आप कभी भी एक उपयोगकर्ता वेबसर्वर के अलावा कुछ नहीं चाहते थे, तो ऐसा करने के लिए आपको आगे की कार्रवाई (या बस सुरक्षा को एक साथ छोड़ना) करने की आवश्यकता होगी।


प्रत्येक सेटअप के लिए +1 अलग-अलग है और प्रत्येक वेबसाइट के लिए अलग-अलग उपयोगकर्ता खातों का उपयोग कर रहा है
Lekensteyn

1
यह एक बहु-उपयोगकर्ता LAMP प्रणाली के लिए बहुत अच्छा है, लेकिन सवाल एकल-उपयोगकर्ता LAMP प्रणाली के बारे में था, जिस स्थिति में यह उत्तर ओवरकिल है। :)
कीस कुक

@ एक ही सिद्धांत लागू होता है - केवल आपको अधिक उपयोगकर्ता बनाने की आवश्यकता नहीं है। इस तरह से आपको उपयोगकर्ता या अनुमति के मुद्दों के बारे में चिंता करने की आवश्यकता नहीं है - और यदि किसी एकल उपयोगकर्ता के पास एक से अधिक डोमेन हैं तो यह सेटअप उसे कवर करेगा।
मार्को सेप्पी

मार्को, आप इस पद्धति को उस समय लागू कर सकते हैं जब आप अपना दूसरा उपयोगकर्ता प्राप्त करते हैं। हालांकि यह पहला है, जब तक कि आप निश्चित रूप से अधिक नहीं होंगे।
SpamapS

+1 - यह सबसे सुरक्षित और सबसे समझदार विन्यास है।
नाथन उस्मान

11

Sftp स्थापित करना बहुत आसान है। बस पैकेज स्थापित करें openssh-serverऔर आपके पास sftp होगा। सुनिश्चित करें कि आपके उपयोगकर्ता के पास एक अच्छा पासवर्ड है यदि आप इसे इंटरनेट से प्राप्त कर सकते हैं। (8+ वर्ण, शब्दकोष नहीं, शब्द चिह्न और संख्याएँ हैं)।

अनुमतियों के लिए, मैं आमतौर पर ऐसा करता हूं
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
आपको तब sftp (अपने उपयोगकर्ता नाम और पासवर्ड का उपयोग करके) और फिर / var / www फ़ोल्डर पर जाकर और अपनी फ़ाइलों को वहां रखकर पृष्ठों को पोस्ट करने में सक्षम होना चाहिए।


1
एक अधिक सुरक्षित तरीका कुंजी-आधारित प्रमाणीकरण है (निजी कुंजी पासवर्ड से सुरक्षित है)
Lekensteyn

@Lekensteyn मैंने उस सुझाव पर विचार किया, लेकिन मैं इसे सरल रखने की कोशिश कर रहा था। क्रेग टी में help.ubuntu.com/community/SSH/OpenSSH/Keys और help.ubuntu.com/community/SSH/OpenSSH/ पर एक नज़र हो सकती है, यदि वह अधिक सुरक्षित वेब आधारित प्रमाणीकरण स्थापित करना चाहता है।
अज़ेंडेल

2
यह फ़ाइल अनुमतियों के बिना सिंगल-इंस्टेंस वेब सर्वर पर सही जगह पर फ़ाइलों को प्राप्त करने का सबसे सरल तरीका है। :) इसके अलावा, rsync sftp के बजाय इस्तेमाल किया जा सकता है। दोनों हुड के तहत SSH का उपयोग करते हैं (और मैं पासवर्ड के बजाय ssh कुंजी का उपयोग करने की सिफारिश करूंगा, लेकिन किसी ने पहले ही उल्लेख किया है)।
कीस कुक

1
+1, Kees से सहमत हैं, यह सुपर सरल है और बताए गए प्रश्न के लिए काम करता है। मैंने लगभग 40+ नोड्स के साथ प्रोडक्शन क्लस्टर्स के लिए लगभग समान सेटअप का उपयोग किया है, केवल एसएसएच कुंजी तक पहुंच को प्रतिबंधित किया है।
SpamapS

1

मैं वेबडाव का उपयोग करता हूं। उबंटू सर्वर पर स्थापित करना बहुत आसान है। यदि आपके पास अपाचे स्थापित है तो आप लगभग पूरी हो चुकी हैं। बस sudo a2enmod dav; service apache2 restart। आपको अपनी आभासी साइट का थोड़ा विन्यास करने की आवश्यकता होगी। यहाँ एक उदाहरण है कि मैं उत्पादन में उपयोग कर रहा हूँ:

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite
    DAVLockDB /var/lock/apache2/DAVLock
    <Directory /srv/mysite>
        Order allow,deny
        Allow from all
    Dav On
    DAVMinTimeout 600
    DAVDepthInfinity On
AuthName "mysite login"
AuthType Basic
AuthUserFile /srv/mysite/.htpassword
Require valid-user

    </Directory>
php_admin_value engine off
</VirtualHost>

<VirtualHost *>

    ServerName mysite.com
    ServerAlias *.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite/www
    <Directory /srv/mysite/www>
        Order allow,deny
        Allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /srv/mysite/cgi-bin/
</VirtualHost>

आप इसे / srv / etc / apache2 / sites-available / mysite में डाल सकते हैं और फिर कर सकते हैं sudo a2ensite mysite; sudo service apache2 reload

यहाँ क्या हो रहा है आपने दो वर्चुअल साइट बनाई हैं। एक है www.mysite.com और दूसरा है webdav.mysite.com। PHP को webdav.mysite.com पर अक्षम कर दिया गया है जो महत्वपूर्ण है।

अब आप अपनी साइट को http पर Ubuntu, Windows और MacOS पर एक्सेस कर सकते हैं। तीनों ने वेबदाव सपोर्ट में बनाया है। यहां उबंटू में एक वेबदाव नेटवर्क स्थान जोड़ने के निर्देश दिए गए हैं ।


यह अच्छा क्यों है? क्योंकि आप अपनी साइट को बिना किसी अतिरिक्त सॉफ्टवेयर के किसी भी ऑपरेटिंग सिस्टम से एक्सेस कर सकते हैं (उबंटू में sftp काम करता है, अन्य OS में एक अलग प्रोग्राम की आवश्यकता होती है)। इसके अलावा, वर्डप्रेस जैसी साइट के साथ, दोनों पहलुओं के साथ अपाचे सौदों के बाद से फ़ाइल अपलोड से निपटने के लिए अनुमतियां पहले से ही सही हैं। और अगर आप सुरक्षा चाहते हैं, तो मानक https भी उपलब्ध है। (यदि आप एक ही आईपी पर कई साइटें हैं, तो आप अलग-अलग पोर्ट का उपयोग कर सकते हैं)
newz2000

वैसे, ऊपर दिए गए निर्देश मान लेते हैं कि आपने अपनी साइट के लिए एक जगह बनाई है mkdir -p /srv/mysite/www; chown -R www-data.www-data /srv/mysite:।
newz2000

1
डीएवी को एन्क्रिप्ट किया जाना निश्चित नहीं है (जब तक कि आपका वेबसर्वर भी एसएसएल नहीं चला रहा है), इसलिए मैं सामान्य रूप से डीएवी पर SFTP या rsync की सिफारिश करूंगा।
कीस कुक

0

मैं www-data को / var / www को लिखने की अनुमति देता हूं और अपने उपयोगकर्ता को उस समूह में जोड़ता हूं। इस तरह यह नियंत्रित करना आसान होगा कि कौन से उपयोगकर्ता उस निर्देशिका को लिख सकते हैं।

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user

-1

क्या आप अपनी साइट के लिए किसी भी ढांचे का उपयोग कर रहे हैं? Drupal, Wordpress, आदि? उदाहरण के लिए Drupal में ब्राउज़र इंटरैक्शन के माध्यम से अपलोड करने के लिए उपकरण हैं।

क्या आपने सांबा में देखा है? आप एक सांबा शेयर सेटअप कर सकते हैं (और उनके लिए वेब पर बहुत सारे संसाधन हैं) या बस विंडोज एक्सप्लोरर का उपयोग करें इसे खोलने / संपादित करने / सहेजने / हटाने के लिए। साझा करने के लिए सेटअप / var / www और फिर "नेटवर्क ड्राइव" को विंडोज़ पर मैप करें।

क्या यह काम है या घर का माहौल? यह घर जैसा लगता है, लेकिन अगर आप एक काम के माहौल में हैं ... तो आप सांबा को इसी तरह से एक्टिव डायरेक्ट्री के साथ जोड़ सकते हैं जैसे लिक्विड-ओपन। मेरे पास एक सर्वर / वेबसाइट सेटअप है जैसे कि आईटी की दुकान में जो लोग अपने AD क्रेडेंशियल्स के माध्यम से सर्वर (लिनक्स या वेबसाइट) के दोनों ओर लॉग इन कर सकते हैं।

मैं यह भी सुझाव दूंगा कि मर्क्यूरियल जैसी कोई चीज है। सर्वर पर एक रिपॉजिटरी बनाएँ, और TortiseHG जैसी चीज़ों के माध्यम से विंडोज़ के साथ सिंक करें। मुझे लगता है कि यह rsync की तरह है, लेकिन आपके पास संस्करण-आईएनजी, बैकअप, वितरित करने की क्षमता आदि (SVN, Mercurial, Git, आदि सभी विकल्प होंगे)



-2

क्या आप कुछ इस तरह से हैं

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www

1
जड़ के रूप में लॉगिंग गंभीर ओवरकिल की तरह लगता है।
कीस कुक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.