Начална » как да » Промяна на специален виртуален уеб сървър

    Промяна на специален виртуален уеб сървър

    Когато получите специален виртуален сървър, за да управлявате уебсайта си, шансовете са добри, че е конфигуриран за всички и не са персонализирани, за да максимизират ефективността при работа с уебсайт.

    съдържание

    [Крия]

    • 1 Преглед
    • 2 Конфигурация на Linux
      • 2.1 Изключване на DNS
      • 2.2 Изключване на SpamAssassain
      • 2.3 Изключване на xinetd
      • 2.4 Ограничете използването на Plesk памет
      • 2.5 Изключване или изключване на Plesk (незадължително)
    • 3 MySQL конфигурация
      • 3.1 Активиране на кеш за заявки
      • 3.2 Изключване на TCP / IP
    • 4 Конфигурация на Apache
    • 5 Конфигурация на PHP
      • 5.1 Премахване на ненужни PHP модули
      • 5.2 PHP Opcode Cache
    • 6 резервни копия
      • 6.1 Създаване на автоматичен скрипт за архивиране
      • 6.2 Синхронизиране на резервни копия извън сайта с Rsync
    • 7 сигурност
      • 7.1 Изключване на Root Login Over SSH
      • 7.2 Изключване на SSH версия 1
      • 7.3 Рестартирайте SSH сървъра
      • 7.4 Проверете за отворени портове
      • 7.5 Настройка на защитна стена
    • 8 Вж
    • 9 Референции

    Преглед

    Има редица проблемни области, в които искаме да увеличим максимално ефективността:

    • Конфигурация на Linux
      Обикновено се изпълняват услуги, които не трябва да бъдат, като се губи памет, която може да се използва за повече връзки.
    • MySQL конфигурация
      Често настройките по подразбиране се основават на малък сървър, можем да добавим няколко ключови промени, за да увеличим значително производителността.
    • Конфигурация на Apache
      По подразбиране повечето хостинг доставчици инсталират Apache с почти всеки инсталиран модул. Няма причина да зареждате модули, ако никога няма да ги използвате.
    • PHP конфигурация
      По подразбиране PHP конфигурацията е подобно подут, обикновено има един тон на ненужни допълнителни модули, инсталирани.
    • PHP Opcode Cache
      Вместо да позволява на PHP да прекомпилира скриптовете всеки път, кешът за операционния код ще кешира компилираните скриптове в паметта за огромни увеличения на производителността..
    • Архивите
      Вероятно трябва да инсталирате някои автоматизирани архиви, тъй като вашият хостинг доставчик няма да го направи за вас.
    • Сигурност
      Разбира се, Linux е достатъчно сигурен по подразбиране, но обикновено има някои явни проблеми със сигурността, които можете да поправите с няколко бързи настройки.

    Конфигурация на Linux

    Има доста голям брой настройки, които можете да направите, които ще се различават леко в зависимост от сървъра, който използвате. Тези настройки са за сървър, работещ с CentOS, но те трябва да работят за по-голямата част от DV сървърите.

    Деактивиране на DNS

    Ако вашият доставчик на хостинг услуги обработва DNS за вашия домейн (вероятно), тогава можете да забраните работата на DNS услугата.

    деактивиране на dns /etc/init.d/named стоп chmod 644 /etc/init.d/named

    Командата chmod премахва разрешението за изпълнение от скрипта, като го спира да работи при стартиране.

    Деактивиране на SpamAssassain

    Ако не използвате имейл акаунти на самия си сървър, не трябва да се притеснявате да използвате анти-спам инструменти. (Също така трябва да проверите Google Приложения, много по-добро решение за електронна поща)

    /etc/init.d/psa-spamassassin стоп chmod 644 /etc/init.d/psa-spamassassin

    Деактивиране на xinetd

    Процесът xinetd съдържа редица други процеси, нито един от които не е полезен за типичен уеб сървър.

    /etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

    Ограничете използването на 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 конфигурация

    Активиране на кеш за заявки

    Отворете файла /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

    Намерете реда, който изглежда така:

    Timeout 120

    И го променете на това:

    Timeout 20

    Сега намерете секцията, която включва тези редове, и се адаптирайте към нещо подобно:

    StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

    Конфигурация на PHP

    Едно от нещата, които трябва да имате предвид, когато променяте сървъра на PHP платформата е, че всеки отделен apache контур ще зареди PHP в отделно място в паметта. Това означава, че ако един неизползван модул добави 256 кб памет към PHP, през 40 нишки в Apache губите 10MB памет.

    Премахване на ненужни PHP модули

    Трябва да намерите файла php.ini, който обикновено се намира на адрес /etc/php.ini (Имайте предвид, че в някои дистрибуции ще има директория /etc/php.d/ с няколко .ini файлове, по един за всеки модул.

    Коментирайте всички линии на loadmodule с тези модули:

    • ODBC
    • SNMP
    • ЗНП
    • odbc pdo
    • MySQLi
    • ioncube-товарач
    • JSON
    • IMAP
    • LDAP
    • ncurses

    Todo: Добавете повече информация тук.

    PHP Opcode Cache

    Има няколко кеша за операционни кодове, които можете да използвате, включително APC, eAccelerator и Xcache, като последното е моето лично предпочитание поради стабилността.

    Изтеглете 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]; Променете xcache.size, за да настроите размера на кеш опкода xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 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 = Изключено xcache.readonly_protection = На xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = На xcache.stat = На xcache.optimizer = Изключено

    Todo: Необходимо е да разширите това малко и да се свържете с 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 / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs / gps /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm  \ t find / backups / files / db * -mtime +5 -exec rm  \ t

    Скриптът първо ще създаде променлива за дата, така че всички файлове ще бъдат наречени едни и същи за едно резервно копие, след това ще изхвърли базата данни, ще накара файловете в мрежата и ги gzips. Командите за намиране се използват за премахване на файлове, по-стари от 5 дни, тъй като не искате вашето устройство да остане без пространство.

    Направете скрипта изпълним, като изпълните следната команда:

    chmod u + x /backups/backup.sh

    След това трябва да го зададете да се стартира автоматично от cron. Уверете се, че използвате профил, който има достъп до директорията за архивиране.

    crontab -е

    Добавете следния ред към crontab:

    1 1 * * * /backups/backup.sh

    Можете да тествате скрипта предварително, като го изпълните, докато сте влезли в потребителския акаунт. (Обикновено изпълнявам архивите като root)

    Синхронизирайте резервни копия извън сайта с Rsync

    Сега, когато имате автоматизирани резервни копия на сървъра, можете да ги синхронизирате някъде другаде, като използвате помощната програма rsync. Вие ще искате да прочетете тази статия за това как да настроите ssh ключовете за автоматично влизане: Добавяне на публичен SSH ключ към отдалечен сървър в една команда

    Можете да изпробвате това, като изпълните тази команда на Linux или Mac машина на друго място (аз имам Linux сървър у дома, който е мястото, където го стартирам)

    rsync -a [email protected]: / архиви / файлове / * / offsitebackups /

    Това ще отнеме известно време, за да стартирате първия път, но накрая вашият локален компютър трябва да има копие на директорията с файлове в директорията / offsitebackups /. (Уверете се, че сте създали тази директория, преди да стартирате скрипта)

    Можете да планирате това, като го добавите към линия crontab:

    crontab -е

    Добавете следния ред, който ще стартира rsync на всеки 45 минути. Ще забележите, че използваме пълния път към rsync тук.

    45 * * * * / usr / bin / rsync -a [email protected]: / архиви / файлове / * / offsitebackups /

    Можете да планирате да се изпълнява в различно време или само веднъж на ден. Това зависи от вас.

    Имайте предвид, че има много помощни програми, които ще ви позволят да синхронизирате чрез ssh или ftp. Не е нужно да използвате rsync.

    Сигурност

    Първото нещо, което искате да направите, е да се уверите, че имате обикновен потребителски акаунт, който да използвате чрез ssh, и се уверете, че можете да използвате су, за да превключите към root. Това е много лоша идея да се разреши директно влизане за root над ssh.

    Изключване на кореновото влизане през SSH

    Редактирайте файла / etc / ssh / sshd_config и потърсете следния ред:

    #PermitRootLogin да

    Променете този ред, за да изглежда така:

    PermitRootLogin no

    Уверете се, че имате редовен потребителски акаунт и може да го корен, преди да направите тази промяна, в противен случай може да се заключите.

    Деактивиране на SSH версия 1

    Наистина няма причина да използвате нищо друго освен SSH версия 2, тъй като е по-сигурна от предишните версии. Редактирайте файла / etc / ssh / sshd_config и потърсете следния раздел:

    Протокол 2.1 Протокол 2

    Уверете се, че използвате само протокол 2, както е показано.

    Рестартирайте SSH сървъра

    Сега ще трябва да рестартирате SSH сървъра, за да стане това.

    /etc/init.d/sshd рестартиране

    Проверете за отворени портове

    Можете да използвате следната команда, за да видите кои портове сървърът слуша:

    netstat -an | grep ЛИСТЕНЕ

    Наистина не трябва да слушате нищо друго освен пристанища 22, 80 и евентуално 8443 за plesk.

    Настройка на защитна стена

    Основен член: Използване на Iptables в Linux

    Можете по желание да настроите iptables защитна стена, за да блокирате повече връзки. Например обикновено блокирам достъпа до други портове, различни от работната ми мрежа. Ако имате динамичен IP адрес, трябва да избегнете тази опция.

    Ако досега вече сте следвали всички стъпки в това ръководство, вероятно не е необходимо да добавяте защитна стена към микса, но е добре да разберете опциите си.

    Вижте също

    • Използване на Iptables в Linux

    Препратки

    • Оптимизиране на DV сървъра (mediatemple.net)
    • XCache