โฮมเพจ » ทำอย่างไร » ปรับแต่ง Dedicated Virtual Web Server

    ปรับแต่ง Dedicated Virtual Web Server

    เมื่อคุณได้รับเซิร์ฟเวอร์เสมือนโดยเฉพาะเพื่อใช้งานเว็บไซต์ของคุณมีโอกาสที่ดีที่จะได้รับการกำหนดค่าสำหรับทุกคนและไม่ได้ปรับแต่งเพื่อเพิ่มประสิทธิภาพสูงสุดสำหรับการใช้งานเว็บไซต์.

    สารบัญ

    [ซ่อน]

    • 1 ภาพรวม
    • 2 การกำหนดค่า Linux
      • 2.1 ปิดการใช้งาน DNS
      • 2.2 ปิดการใช้งาน SpamAssassain
      • 2.3 ปิดการใช้งาน xinetd
      • 2.4 การ จำกัด การใช้งานหน่วยความจำ Plesk
      • 2.5 ปิดการใช้งานหรือปิด Plesk (อุปกรณ์เสริม)
    • 3 การกำหนดค่า MySQL
      • 3.1 เปิดใช้งาน Query Cache
      • 3.2 ปิดการใช้งาน TCP / IP
    • 4 Apache Configuration
    • 5 การกำหนดค่า PHP
      • 5.1 ลบโมดูล PHP ที่ไม่ต้องการ
      • 5.2 แคช Opcode ของ PHP
    • 6 การสำรองข้อมูล
      • 6.1 สร้างสคริปต์การสำรองข้อมูลอัตโนมัติ
      • 6.2 ซิงค์สำรองนอกไซต์ด้วย Rsync
    • 7 การรักษาความปลอดภัย
      • 7.1 ปิดใช้งานการเข้าสู่ระบบผ่าน SSH
      • 7.2 ปิดใช้งาน SSH เวอร์ชัน 1
      • 7.3 รีสตาร์ทเซิร์ฟเวอร์ SSH
      • 7.4 ตรวจสอบพอร์ตที่เปิด
      • 7.5 ติดตั้งไฟร์วอลล์
    • 8 ดูเพิ่มเติม
    • 9 อ้างอิง

    ภาพรวม

    มีจำนวนของปัญหาที่เราต้องการเพิ่มประสิทธิภาพ:

    • การกำหนดค่า 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