जब आपको अपनी वेबसाइट चलाने के लिए समर्पित वर्चुअल सर्वर मिलता है, तो संभावना है कि यह सभी के लिए कॉन्फ़िगर किया गया है, और किसी वेबसाइट को चलाने के लिए प्रदर्शन को अधिकतम करने के लिए अनुकूलित नहीं किया गया है।
अंतर्वस्तु[छिपाना]
|
अवलोकन
वहां कई समस्याएं हैं जहां हम प्रदर्शन को अधिकतम करना चाहते हैं:
- लिनक्स विन्यास आमतौर पर ऐसी सेवाएं चलती हैं जिन्हें स्मृति की बर्बादी करने की आवश्यकता नहीं होती है जिसका उपयोग अधिक कनेक्शन के लिए किया जा सकता है।
- MySQL विन्यास अक्सर डिफ़ॉल्ट सेटिंग्स छोटे सर्वर पर आधारित होती हैं, हम प्रदर्शन को बढ़ाने के लिए कुछ महत्वपूर्ण परिवर्तन जोड़ सकते हैं।
- अपाचे कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से अधिकांश होस्टिंग प्रदाता लगभग हर मॉड्यूल के साथ अपाचे स्थापित करते हैं। यदि आप कभी भी उनका उपयोग नहीं कर रहे हैं तो मॉड्यूल लोड करने का कोई कारण नहीं है।
- PHP विन्यास डिफ़ॉल्ट PHP कॉन्फ़िगरेशन समान रूप से फूला हुआ होता है, आमतौर पर अनावश्यक अतिरिक्त मॉड्यूल स्थापित किए जाते हैं।
- PHP ओपोड कैश PHP को प्रत्येक बार स्क्रिप्ट को पुन: संकलित करने की अनुमति देने के बजाय, एक ओपोड कैश विशाल प्रदर्शन बूस्ट के लिए स्मृति में संकलित स्क्रिप्ट को कैश करेगा।
- बैकअप शायद कुछ स्वचालित बैकअप सेट अप करें, क्योंकि आपका होस्टिंग प्रदाता आपके लिए ऐसा नहीं करेगा।
- सुरक्षा निश्चित रूप से, लिनक्स डिफ़ॉल्ट रूप से पर्याप्त सुरक्षित है, लेकिन आमतौर पर कुछ चमकदार सुरक्षा समस्याएं होती हैं जिन्हें आप कुछ त्वरित सेटिंग्स के साथ ठीक कर सकते हैं।
लिनक्स विन्यास
आप बहुत सारे बदलाव कर सकते हैं जो आप कर सकते हैं, जो आपके द्वारा उपयोग किए जा रहे सर्वर के आधार पर थोड़ा भिन्न होगा। ये tweaks CentOS चल रहे सर्वर के लिए हैं, लेकिन उन्हें अधिकांश डीवी सर्वर के लिए काम करना चाहिए।
DNS अक्षम करें
यदि आपका होस्टिंग प्रदाता आपके डोमेन (संभवतः) के लिए DNS को संभालता है, तो आप DNS सेवा को चलने से अक्षम कर सकते हैं।
disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Chmod कमांड स्क्रिप्ट से निष्पादित अनुमति को हटा देता है, इसे स्टार्टअप पर चलने से रोकता है।
स्पैमएसासेन को अक्षम करें
यदि आप अपने सर्वर पर ईमेल खाते का उपयोग नहीं कर रहे हैं, तो आपको एंटी-स्पैम टूल चलाने से परेशान नहीं होना चाहिए। (आपको Google Apps, बहुत बेहतर ईमेल समाधान देखना चाहिए)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Xinetd अक्षम करें
Xinetd प्रक्रिया में कई अन्य प्रक्रियाएं होती हैं, जिनमें से कोई भी सामान्य वेब सर्वर के लिए उपयोगी नहीं है।
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
सीमा प्लस मेमोरी उपयोग सीमित करें
यदि आप प्लेस्क पैनल का उपयोग करते हैं, तो आप विकल्प फ़ाइल जोड़कर कम मेमोरी का उपयोग करने के लिए मजबूर कर सकते हैं।
vi /usr/local/psa/admin/conf/httpsd.custom.include
फ़ाइल में निम्न पंक्तियां जोड़ें:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
ध्यान दें कि यह विकल्प MediaTemple DV सर्वर पर काम करने के लिए जाना जाता है, लेकिन किसी अन्य पर जांच नहीं की गई है। (संदर्भ देखें)
अक्षम या प्लेस्क बंद करें (वैकल्पिक)
यदि आप वर्ष में एक बार प्लसस्क का उपयोग करते हैं, तो इसे चलाने के लिए बहुत कम कारण है। ध्यान दें कि यह चरण पूरी तरह से वैकल्पिक है, और थोड़ा और उन्नत है।
प्लेस्क बंद करने के लिए निम्न आदेश चलाएं:
/etc/init.d/psa stop
आप इसे निम्न आदेश चलाकर स्टार्टअप पर चलने से अक्षम कर सकते हैं:
chmod 644 /etc/init.d/psa
ध्यान दें कि यदि आप इसे अक्षम करते हैं, तो आप फ़ाइल अनुमतियों को वापस किए बिना इसे मैन्युअल रूप से प्रारंभ नहीं कर सकते हैं (chmod u + x)।
MySQL विन्यास
क्वेरी कैश सक्षम करें
अपनी /etc/my.cnf फ़ाइल खोलें और अपने [mysqld] अनुभाग में निम्न पंक्तियां इस तरह जोड़ें:
[mysqld] query-cache-type = 1 query-cache-size = 8M
यदि आप चाहें तो क्वेरी क्वेरी में आप अधिक मेमोरी जोड़ सकते हैं, लेकिन बहुत अधिक उपयोग नहीं करते हैं।
टीसीपी / आईपी अक्षम करें
मेजबानों की एक आश्चर्यजनक संख्या डिफ़ॉल्ट रूप से टीसीपी / आईपी पर MySQL तक पहुंच सक्षम करती है, जो किसी वेबसाइट के लिए कोई समझ नहीं लेती है। आप निम्न आदेश चलाकर टीसीपी / आईपी पर mysql सुन रहा है, तो आप यह पता लगा सकते हैं:
netstat -an | grep 3306
अक्षम करने के लिए, निम्न पंक्ति को अपनी /etc/my.cnf फ़ाइल में जोड़ें:
skip-networking
अपाचे कॉन्फ़िगरेशन
अपनी httpd.conf फ़ाइल खोलें, जो अक्सर /etc/httpd/conf/httpd.conf में पाई जाती है
इस तरह दिखने वाली रेखा खोजें:
Timeout 120
और इसे इस में बदलें:
Timeout 20
अब उस अनुभाग को ढूंढें जिसमें इन पंक्तियों को शामिल किया गया है, और कुछ इसी तरह समायोजित करें:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP विन्यास
PHP प्लेटफॉर्म पर सर्वर को ट्वीव करते समय ध्यान में रखना एक बात यह है कि प्रत्येक एकल अपाचे थ्रेड PHP में एक अलग स्थान पर PHP को लोड करने जा रहा है। इसका मतलब यह है कि यदि एक अप्रयुक्त मॉड्यूल PHP में 256k मेमोरी जोड़ता है, तो 40 अपाचे थ्रेड में आप 10 एमबी मेमोरी बर्बाद कर रहे हैं।
अनइडेड PHP मॉड्यूल निकालें
आपको अपनी php.ini फ़ाइल का पता लगाना होगा, जो आमतौर पर /etc/php.ini पर मिलता है (ध्यान दें कि कुछ वितरणों पर, एक.etc/php.d/ निर्देशिका होगी जिसमें कई.ini फाइलें होंगी, प्रत्येक मॉड्यूल के लिए एक।
इन मॉड्यूल के साथ किसी भी लोड मॉड्यूल लाइनों पर टिप्पणी करें:
- ODBC
- SNMP
- पीडीओ
- odbc pdo
- mysqli
- ionCube-लोडर
- json
- imap
- ldap
- ncurses
Todo: यहां अधिक जानकारी जोड़ें।
PHP ओपोड कैश
एपीसी, ईएक्लेरेटर और एक्सकैच सहित कई ऑपोड कैश हैं जिनका उपयोग आप स्थिरता के कारण आखिरी प्राथमिक पसंद करते हैं।
Xcache डाउनलोड करें और इसे एक निर्देशिका में निकालें, और फिर निम्न आदेशों को xcache स्रोत निर्देशिका से चलाएं:
phpize./configure --enable-xcache make make install
अपनी php.ini फ़ाइल खोलें और xcache के लिए एक नया खंड जोड़ें। यदि आपके PHP मॉड्यूल कहीं और से लोड किए गए हैं तो आपको पथ समायोजित करने की आवश्यकता होगी।
vi /etc/php.ini
फ़ाइल में निम्न खंड जोड़ें:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = 'myusername' xcache.admin.pass = 'putanmd5hashhere' [xcache]; Change xcache.size to tune the size of the opcode cache xcache.size = 16M xcache.shm_scheme = 'mmap' xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Change xcache.var_size to adjust the size of variable cache xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = On xcache.mmap_path = '/tmp/xcache' xcache.coredump_directory = '' xcache.cacher = On xcache.stat = On xcache.optimizer = Off
Todo: संदर्भों में xcache से थोड़ा सा विस्तार करने और लिंक करने की आवश्यकता है।
बैकअप
आपकी वेबसाइट के स्वचालित बैकअप होने से बहुत कम महत्वपूर्ण है। आप अपने होस्टिंग प्रदाता से स्नैपशॉट बैकअप प्राप्त करने में सक्षम हो सकते हैं, जो भी बहुत उपयोगी हैं, लेकिन मैं स्वचालित बैकअप भी पसंद करता हूं।
स्वचालित बैकअप स्क्रिप्ट बनाएं
मैं आम तौर पर इसके नीचे एक / बैकअप / फाइल निर्देशिका के साथ एक / बैकअप निर्देशिका बनाकर शुरू करता हूं। यदि आप चाहें तो इन पथों को समायोजित कर सकते हैं।
mkdir -p /backups/files
अब बैकअप निर्देशिका के अंदर एक backup.sh स्क्रिप्ट बनाएं:
vi /backups/backup.sh
फ़ाइल में निम्न जोड़ें, आवश्यकतानुसार पथ और mysqldump पासवर्ड समायोजित करें:
#!/bin/sh THEDATE=`date +%d%m%y%H%M` mysqldump -uadmin -pPASSWORD DATABASENAME > /backups/files/dbbackup$THEDATE.bak tar -cf /backups/files/sitebackup$THEDATE.tar /var/www/vhosts/my-website-path/httpdocs gzip /backups/files/sitebackup$THEDATE.tar find /backups/files/site* -mtime +5 -exec rm {}; find /backups/files/db* -mtime +5 -exec rm {};
स्क्रिप्ट पहले एक डेट वैरिएबल तैयार करेगी, इसलिए सभी फ़ाइलों को एक बैकअप के लिए समान नाम दिया जाएगा, फिर डेटाबेस को डंप करेगा, वेब फ़ाइलों को टार देगा और उन्हें gzips। खोज आदेश 5 दिनों से अधिक पुरानी फ़ाइलों को हटाने के लिए उपयोग किए जाते हैं, क्योंकि आप नहीं चाहते हैं कि आपका ड्राइव अंतरिक्ष से बाहर हो।
निम्न आदेश चलाकर स्क्रिप्ट निष्पादन योग्य बनाएं:
chmod u+x /backups/backup.sh
इसके बाद आपको इसे क्रॉन द्वारा स्वचालित रूप से चलाने के लिए असाइन करना होगा। सुनिश्चित करें कि आप उस खाते का उपयोग करते हैं जिसमें बैकअप निर्देशिका तक पहुंच है।
crontab -e
क्रॉन्टाब में निम्न पंक्ति जोड़ें:
1 1 * * * /backups/backup.sh
उपयोगकर्ता खाते पर लॉग इन करते समय आप इसे चलाकर समय से पहले स्क्रिप्ट का परीक्षण कर सकते हैं। (मैं आमतौर पर बैकअप को जड़ के रूप में चलाता हूं)
रुनक के साथ बैक अप ऑफ साइट सिंक करें
अब जब आपके सर्वर के स्वचालित बैकअप चल रहे हैं, तो आप rsync उपयोगिता का उपयोग कर उन्हें कहीं और सिंक कर सकते हैं। आप स्वचालित लॉगिन के लिए एसएसएच कुंजी कैसे सेट अप करें इस लेख को पढ़ना चाहेंगे: सिंगल कमांड में रिमोट सर्वर पर सार्वजनिक एसएसएच कुंजी जोड़ें
आप इस आदेश को किसी अन्य स्थान पर लिनक्स या मैक मशीन पर चलाकर इसका परीक्षण कर सकते हैं (मेरे पास घर पर एक लिनक्स सर्वर है, जहां मैं इसे चलाता हूं)
rsync -a [email protected]:/backups/files/* /offsitebackups/
इसमें पहली बार चलाने में काफी समय लगेगा, लेकिन अंत में आपके स्थानीय कंप्यूटर में /ssitebackups / निर्देशिका में फ़ाइलों निर्देशिका की एक प्रति होना चाहिए। (स्क्रिप्ट चलाने से पहले उस निर्देशिका को बनाना सुनिश्चित करें)
आप इसे क्रॉन्टाब लाइन में जोड़कर शेड्यूल कर सकते हैं:
crontab -e
निम्न पंक्ति जोड़ें, जो हर मिनट 45 मिनट के निशान पर rsync चलाएगी। आप देखेंगे कि हम यहां rsync के लिए पूर्ण पथ का उपयोग करते हैं।
45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/
आप इसे एक अलग समय पर चलाने के लिए शेड्यूल कर सकते हैं, या प्रति दिन केवल एक बार। यह वास्तव में आप पर निर्भर है।
ध्यान दें कि बहुत सारी सुविधाएं हैं जो आपको एसएसएच या एफटीपी के माध्यम से सिंक करने की अनुमति देगी। आपको rsync का उपयोग करने की आवश्यकता नहीं है।
सुरक्षा
पहली चीज जो आप करना चाहते हैं, यह सुनिश्चित कर लें कि आपके पास एसएसएच के माध्यम से उपयोग करने के लिए नियमित उपयोगकर्ता खाता है, और सुनिश्चित करें कि आप रूट पर स्विच करने के लिए su का उपयोग कर सकते हैं। एसएसएच पर रूट के लिए सीधे लॉगिन की अनुमति देना बहुत बुरा विचार है।
एसएसएच पर रूट लॉगिन अक्षम करें
/ Etc / ssh / sshd_config फ़ाइल संपादित करें, और निम्न पंक्ति को देखें:
#PermitRootLogin yes
इस तरह दिखने के लिए उस पंक्ति को बदलें:
PermitRootLogin no
सुनिश्चित करें कि आपके पास नियमित उपयोगकर्ता खाता है और आप यह परिवर्तन करने से पहले रूट पर मुकदमा कर सकते हैं, अन्यथा आप स्वयं को लॉक कर सकते हैं।
एसएसएच संस्करण 1 अक्षम करें
एसएसएच संस्करण 2 के अलावा किसी अन्य चीज का उपयोग करने का वास्तव में कोई कारण नहीं है, क्योंकि यह पिछले संस्करणों की तुलना में अधिक सुरक्षित है। / Etc / ssh / sshd_config फ़ाइल संपादित करें, और निम्न खंड देखें:
#Protocol 2,1 Protocol 2
सुनिश्चित करें कि आप केवल दिखाए गए प्रोटोकॉल 2 का उपयोग कर रहे हैं।
एसएसएच सर्वर पुनरारंभ करें
अब इसे प्रभावी बनाने के लिए आपको एसएसएच सर्वर को पुनरारंभ करना होगा।
/etc/init.d/sshd restart
ओपन पोर्ट के लिए जाँच करें
आप निम्न आदेश का उपयोग यह देखने के लिए कर सकते हैं कि सर्वर किस पोर्ट पर सुन रहा है:
netstat -an | grep LISTEN
आपको वास्तव में बंदरगाहों के लिए 22, 80, और संभवतः 8443 बंदरगाहों के अलावा कुछ भी नहीं सुनना चाहिए।
फ़ायरवॉल सेटअप करें
मुख्य लेख:लिनक्स पर इप्टेबल्स का उपयोग करना
आप वैकल्पिक रूप से अधिक कनेक्शन ब्लॉक करने के लिए एक iptables फ़ायरवॉल सेटअप कर सकते हैं। उदाहरण के लिए, मैं आमतौर पर अपने कार्य नेटवर्क के अलावा किसी अन्य बंदरगाह तक पहुंच को अवरुद्ध करता हूं। यदि आपके पास गतिशील आईपी पता है तो आप उस विकल्प से बचना चाहेंगे।
यदि आप इस मार्गदर्शिका में अब तक सभी चरणों का पालन कर चुके हैं, तो मिश्रण में फ़ायरवॉल भी जोड़ना आवश्यक नहीं है, लेकिन आपके विकल्पों को समझना अच्छा है।
यह भी देखें
लिनक्स पर इप्टेबल्स का उपयोग करना
संदर्भ
- अपने डीवी सर्वर को अनुकूलित करना (mediatemple.net)
- XCache