ปรับแต่ง Dedicated Virtual Web Server
เมื่อคุณได้รับเซิร์ฟเวอร์เสมือนโดยเฉพาะเพื่อใช้งานเว็บไซต์ของคุณมีโอกาสที่ดีที่จะได้รับการกำหนดค่าสำหรับทุกคนและไม่ได้ปรับแต่งเพื่อเพิ่มประสิทธิภาพสูงสุดสำหรับการใช้งานเว็บไซต์.
สารบัญ[ซ่อน]
|
ภาพรวม
มีจำนวนของปัญหาที่เราต้องการเพิ่มประสิทธิภาพ:
- การกำหนดค่า Linux
มักจะมีบริการที่ใช้งานซึ่งไม่จำเป็นต้องเสียหน่วยความจำที่สามารถใช้สำหรับการเชื่อมต่อเพิ่มเติม. - การกำหนดค่า MySQL
บ่อยครั้งที่การตั้งค่าเริ่มต้นขึ้นอยู่กับเซิร์ฟเวอร์ขนาดเล็กเราสามารถเพิ่มการเปลี่ยนแปลงที่สำคัญบางอย่างเพื่อเพิ่มประสิทธิภาพได้อย่างมาก. - การกำหนดค่า Apache
ตามค่าเริ่มต้นผู้ให้บริการโฮสต์ส่วนใหญ่จะติดตั้ง apache โดยเกือบทุกโมดูลจะถูกติดตั้ง ไม่มีเหตุผลในการโหลดโมดูลหากคุณไม่เคยใช้งานโมดูลเหล่านั้น. - การกำหนดค่า PHP
การกำหนดค่าเริ่มต้นของ PHP นั้นมีลักษณะคล้ายกันโดยทั่วไปจะมีโมดูลพิเศษจำนวนมากที่ไม่จำเป็นติดตั้ง. - PHP Opcode Cache
แทนที่จะอนุญาตให้ PHP คอมไพล์สคริปต์ใหม่ทุกครั้งแคช opcode จะแคชสคริปต์ที่คอมไพล์ในหน่วยความจำเพื่อเพิ่มประสิทธิภาพอย่างมาก. - การสำรองข้อมูล
น่าจะตั้งค่าการสำรองข้อมูลอัตโนมัติบางส่วนเนื่องจากผู้ให้บริการโฮสติ้งของคุณจะไม่ทำเพื่อคุณ. - ความปลอดภัย
แน่นอนว่า Linux มีความปลอดภัยเพียงพอโดยค่าเริ่มต้น แต่มักจะมีปัญหาด้านความปลอดภัยที่เห็นได้ชัดซึ่งคุณสามารถแก้ไขได้ด้วยการตั้งค่าแบบรวดเร็ว.
การกำหนดค่า Linux
มีการปรับแต่งค่อนข้างมากที่คุณสามารถทำได้ซึ่งจะแตกต่างกันเล็กน้อยตามเซิร์ฟเวอร์ที่คุณใช้ การปรับแต่งเหล่านี้มีไว้สำหรับเซิร์ฟเวอร์ที่ใช้ CentOS แต่ควรทำงานกับเซิร์ฟเวอร์ DV ส่วนใหญ่.
ปิดการใช้งาน DNS
หากผู้ให้บริการโฮสต์ของคุณจัดการ DNS สำหรับโดเมนของคุณ (น่าจะเป็น) คุณสามารถปิดใช้งานบริการ DNS ไม่ให้ทำงานได้.
ปิดการใช้งาน dns /etc/init.d/named stop chmod 644 /etc/init.d/named
คำสั่ง chmod ลบการอนุญาตให้เรียกใช้งานจากสคริปต์หยุดการทำงานเมื่อเริ่มต้น.
ปิดการใช้งาน SpamAssassain
หากคุณไม่ได้ใช้บัญชีอีเมลบนเซิร์ฟเวอร์ของคุณเองคุณไม่ควรใช้เครื่องมือป้องกันสแปม (นอกจากนี้คุณควรตรวจสอบ Google Apps โซลูชันอีเมลที่ดียิ่งขึ้น)
/etc/init.d/psa-spamassassin หยุด chmod 644 /etc/init.d/psa-spamassassin
ปิดการใช้งาน xinetd
กระบวนการ xinetd เป็นที่ตั้งของกระบวนการอื่นจำนวนหนึ่งซึ่งไม่มีประโยชน์สำหรับเว็บเซิร์ฟเวอร์ทั่วไป.
/etc/init.d/xinetd หยุด chmod 644 /etc/init.d/xinetd
จำกัด การใช้งานหน่วยความจำ Plesk
หากคุณใช้พาเนล plesk คุณสามารถบังคับให้ใช้หน่วยความจำน้อยลงโดยการเพิ่มไฟล์ตัวเลือก.
vi /usr/local/psa/admin/conf/httpsd.custom.include
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
โปรดทราบว่าตัวเลือกนี้ทำงานบนเซิร์ฟเวอร์ MediaTemple DV แต่ยังไม่ได้ตรวจสอบกับผู้อื่น (ดูอ้างอิง)
ปิดการใช้งานหรือปิด Plesk (ไม่จำเป็น)
หากคุณใช้ Plesk เพียงปีละครั้งมีเหตุผลน้อยมากที่จะทำให้โปรแกรมทำงานได้เลย โปรดทราบว่าขั้นตอนนี้เป็นทางเลือกโดยสมบูรณ์และขั้นสูงกว่าเล็กน้อย.
รันคำสั่งต่อไปนี้เพื่อปิด plesk:
/etc/init.d/psa หยุด
คุณสามารถปิดการใช้งานจากการทำงานเมื่อเริ่มต้นโดยใช้คำสั่งต่อไปนี้:
chmod 644 /etc/init.d/psa
โปรดทราบว่าหากคุณปิดการใช้งานคุณจะไม่สามารถเริ่มต้นได้ด้วยตนเองโดยไม่เปลี่ยนสิทธิ์ของไฟล์กลับ (chmod u + x).
การกำหนดค่า MySQL
เปิดใช้งาน Query Cache
เปิดไฟล์ /etc/my.cnf ของคุณและเพิ่มบรรทัดต่อไปนี้ในส่วน [mysqld] ดังนี้:
[mysqld] query-cache-type = 1 query-cache-size = 8M
คุณสามารถเพิ่มหน่วยความจำเพิ่มเติมลงในแคชคิวรีได้ถ้าต้องการ แต่อย่าใช้มากเกินไป.
ปิดการใช้งาน TCP / IP
จำนวนโฮสต์ที่น่าแปลกใจทำให้สามารถเข้าถึง MySQL บน TCP / IP ได้ตามค่าเริ่มต้นซึ่งไม่สมเหตุสมผลสำหรับเว็บไซต์ คุณสามารถทราบได้ว่า mysql กำลังฟังบน TCP / IP หรือไม่โดยใช้คำสั่งต่อไปนี้:
netstat -an | grep 3306
หากต้องการปิดใช้งานให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/my.cnf ของคุณ:
ข้ามเครือข่าย
การกำหนดค่า Apache
เปิดไฟล์ httpd.conf ของคุณมักจะพบใน /etc/httpd/conf/httpd.conf
ค้นหาบรรทัดที่มีลักษณะดังนี้:
หมดเวลา 120
และเปลี่ยนเป็น:
หมดเวลา 20
ตอนนี้หาส่วนที่มีบรรทัดเหล่านี้และปรับเป็นบางอย่างที่คล้ายกัน:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
การกำหนดค่า PHP
สิ่งหนึ่งที่ต้องจำไว้เมื่อปรับแต่งเซิร์ฟเวอร์บนแพลตฟอร์ม PHP คือทุกเธรด apache เดียวจะโหลด PHP ในตำแหน่งที่แยกต่างหากในหน่วยความจำ ซึ่งหมายความว่าหากโมดูลที่ไม่ได้ใช้เพิ่มหน่วยความจำ 256k ลงใน PHP ใน 40 เธรดของ Apache ที่คุณใช้หน่วยความจำ 10MB.
ลบโมดูล PHP ที่ไม่ต้องการ
คุณจะต้องค้นหาไฟล์ php.ini ของคุณซึ่งโดยปกติจะอยู่ที่ /etc/php.ini (โปรดทราบว่าในบางดิสทริบิวชันจะมีไดเร็กทอรี /etc/php.d/ ที่มีไฟล์. ini จำนวนหนึ่ง หนึ่งสำหรับแต่ละโมดูล.
ใส่เครื่องหมายความคิดเห็นบรรทัดโหลดโมดุลใด ๆ ด้วยโมดูลเหล่านี้:
- ODBC
- SNMP
- PDO
- odbc pdo
- mysqli
- IonCube-loader
- JSON
- IMAP
- LDAP
- ncurses
สิ่งที่ต้องทำ: เพิ่มข้อมูลเพิ่มเติมที่นี่.
PHP Opcode Cache
มี opcode แคชจำนวนมากที่คุณสามารถใช้ได้รวมถึง APC, eAccelerator และ Xcache สิ่งสุดท้ายคือความชอบส่วนตัวของฉันเนื่องจากความเสถียร.
ดาวน์โหลด xcache และแยกลงในไดเรกทอรีแล้วเรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีแหล่ง xcache:
phpize ./configure --enable-xcache ทำการทำการติดตั้ง
เปิดไฟล์ 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.size เพื่อปรับขนาดของแคช opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.gc_interval = 0; เปลี่ยน xcache.var_size เพื่อปรับขนาดแคชตัวแปร 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 = xlycache.var_gm บน xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = บน xcache.stat = บน xcache.optimizer = ปิด
สิ่งที่ต้องทำ: ต้องขยายบิตนี้และเชื่อมโยงไปยัง xcache ในข้อมูลอ้างอิง.
การสำรองข้อมูล
มีความสำคัญมากกว่าการสำรองข้อมูลอัตโนมัติในเว็บไซต์ของคุณ คุณอาจได้รับสำเนาสำรองจากผู้ให้บริการโฮสต์ซึ่งมีประโยชน์มาก แต่ฉันต้องการสำรองข้อมูลอัตโนมัติเช่นกัน.
สร้างสคริปต์การสำรองข้อมูลอัตโนมัติ
ฉันมักจะเริ่มต้นด้วยการสร้างไดเร็กทอรี / backups โดยมีไดเร็กทอรี / backups / files อยู่ด้านล่าง คุณสามารถปรับเส้นทางเหล่านี้ได้ถ้าต้องการ.
mkdir -p / backups / files
ตอนนี้สร้างสคริปต์ backup.sh ภายในไดเรกทอรีการสำรองข้อมูล:
vi /backups/backup.sh
เพิ่มไฟล์ต่อไปนี้ไปยังปรับพา ธ และรหัสผ่าน mysqldump ตามความจำเป็น:
#! / bin / sh THEDATE = "วันที่ +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / สำรอง / ไฟล์ / sitebackup $ THEDATE .tar / var / www / vhosts / my-site-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar ค้นหา / สำรอง / ไฟล์ / ไซต์ / ไซต์ * -mtime +5 -exec rm \; find / backups / files / db * -mtime +5 -exec rm \;
สคริปต์จะสร้างตัวแปรวันที่ก่อนเพื่อให้ไฟล์ทั้งหมดจะมีชื่อเหมือนกันสำหรับการสำรองข้อมูลครั้งเดียวจากนั้นทิ้งฐานข้อมูลแยกไฟล์เว็บและ gzips พวกเขา คำสั่ง find ใช้เพื่อลบไฟล์ใด ๆ ที่เก่ากว่า 5 วันเนื่องจากคุณไม่ต้องการให้ไดรฟ์ของคุณมีพื้นที่เหลือน้อย.
ทำให้สคริปต์เรียกทำงานได้โดยการรันคำสั่งต่อไปนี้:
chmod u + x /backups/backup.sh
ถัดไปคุณจะต้องกำหนดให้ทำงานโดยอัตโนมัติโดย cron ตรวจสอบให้แน่ใจว่าคุณใช้บัญชีที่มีการเข้าถึงไดเรกทอรีสำรอง.
crontab -e
เพิ่มบรรทัดต่อไปนี้ใน crontab:
1 1 * * * /backups/backup.sh
คุณสามารถทดสอบสคริปต์ล่วงหน้าได้ด้วยการรันสคริปต์ในขณะที่เข้าสู่ระบบบัญชีผู้ใช้ (ฉันมักจะเรียกใช้การสำรองข้อมูลเป็น root)
ซิงค์การสำรองนอกไซต์ด้วย Rsync
ตอนนี้คุณมีการสำรองข้อมูลอัตโนมัติของเซิร์ฟเวอร์ของคุณทำงานคุณสามารถซิงค์ได้ที่อื่นโดยใช้ยูทิลิตี้ rsync คุณจะต้องอ่านบทความนี้เกี่ยวกับวิธีการตั้งค่าปุ่ม ssh สำหรับการเข้าสู่ระบบอัตโนมัติ: เพิ่มกุญแจ SSH สาธารณะไปยังเซิร์ฟเวอร์ระยะไกลในคำสั่งเดียว
คุณสามารถทดสอบสิ่งนี้โดยใช้คำสั่งนี้บนเครื่อง linux หรือ Mac ที่ตำแหน่งอื่น (ฉันมีเซิร์ฟเวอร์ linux ที่บ้านซึ่งเป็นที่ที่ฉันเรียกใช้งาน)
rsync -a [email protected]: / backups / files / * / offsitebackups /
ขั้นตอนนี้อาจใช้เวลาสักครู่ในการรันครั้งแรก แต่ในตอนท้ายคอมพิวเตอร์ของคุณควรมีสำเนาของไฟล์ไดเรกทอรีในไดเรกทอรี / offsitebackbackups / (ตรวจสอบให้แน่ใจว่าสร้างไดเรกทอรีนั้นก่อนเรียกใช้สคริปต์)
คุณสามารถกำหนดเวลานี้ได้โดยเพิ่มลงในบรรทัด crontab:
crontab -e
เพิ่มบรรทัดต่อไปนี้ซึ่งจะเรียกใช้ rsync ทุกชั่วโมงที่เครื่องหมาย 45 นาที คุณจะสังเกตเห็นว่าเราใช้เส้นทางแบบเต็มเพื่อ rsync ที่นี่.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
คุณสามารถกำหนดเวลาให้ทำงานในเวลาอื่นหรือเพียงครั้งเดียวต่อวัน นั่นขึ้นอยู่กับคุณจริงๆ.
โปรดทราบว่ามียูทิลิตี้มากมายที่จะช่วยให้คุณซิงค์ผ่าน ssh หรือ ftp คุณไม่จำเป็นต้องใช้ rsync.
ความปลอดภัย
สิ่งแรกที่คุณต้องการทำคือตรวจสอบให้แน่ใจว่าคุณมีบัญชีผู้ใช้ปกติเพื่อใช้งานผ่าน ssh และตรวจสอบให้แน่ใจว่าคุณสามารถใช้ su เพื่อเปลี่ยนเป็นรูทได้ เป็นความคิดที่ดีมากที่จะอนุญาตให้เข้าสู่ระบบโดยตรงสำหรับรูทมากกว่า ssh.
ปิดใช้งานการล็อกอินรูทผ่าน SSH
แก้ไขไฟล์ / etc / ssh / sshd_config และค้นหาบรรทัดต่อไปนี้:
#PermitRootLogin ใช่
เปลี่ยนบรรทัดนั้นเป็นดังนี้:
PermitRootLogin หมายเลข
ตรวจสอบให้แน่ใจว่าคุณมีบัญชีผู้ใช้ทั่วไปและสามารถรูทได้ก่อนที่จะทำการเปลี่ยนแปลงมิฉะนั้นคุณอาจล็อคตัวคุณเอง.
ปิดใช้งาน SSH เวอร์ชัน 1
ไม่มีเหตุผลจริงๆที่จะใช้สิ่งอื่นนอกเหนือจาก SSH เวอร์ชัน 2 เนื่องจากมีความปลอดภัยมากกว่ารุ่นก่อนหน้า แก้ไขไฟล์ / etc / ssh / sshd_config และค้นหาส่วนต่อไปนี้:
#Protocol 2,1 Protocol 2
ตรวจสอบให้แน่ใจว่าคุณใช้โปรโตคอล 2 ตามที่แสดงเท่านั้น.
รีสตาร์ทเซิร์ฟเวอร์ SSH
ตอนนี้คุณจะต้องรีสตาร์ทเซิร์ฟเวอร์ SSH เพื่อให้การดำเนินการนี้มีผล.
/etc/init.d/sshd ทำการรีสตาร์ท
ตรวจสอบ Open Ports
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อดูว่าพอร์ตใดที่เซิร์ฟเวอร์กำลังรับฟัง:
netstat -an | grep ฟัง
คุณไม่ควรฟังอะไรเลยนอกจากพอร์ต 22, 80 และอาจเป็น 8443 สำหรับ plesk.
ติดตั้งไฟร์วอลล์
บทความหลัก: การใช้ Iptables บน Linux
คุณสามารถเลือกที่จะตั้งค่าไฟร์วอลล์ iptables เพื่อบล็อกการเชื่อมต่อเพิ่มเติม ตัวอย่างเช่นฉันมักจะปิดกั้นการเข้าถึงพอร์ตอื่น ๆ นอกเหนือจากเครือข่ายงานของฉัน หากคุณมีที่อยู่ IP แบบไดนามิกคุณจะต้องหลีกเลี่ยงตัวเลือกนั้น.
หากคุณได้ทำตามขั้นตอนทั้งหมดในคู่มือนี้แล้วอาจไม่จำเป็นที่จะต้องเพิ่มไฟร์วอลล์ลงในมิกซ์ แต่ก็ควรเข้าใจตัวเลือกของคุณด้วย.
ดูสิ่งนี้ด้วย
- การใช้ Iptables บน Linux
อ้างอิง
- เพิ่มประสิทธิภาพเซิร์ฟเวอร์ DV ของคุณ (mediatemple.net)
- XCache