Промяна на специален виртуален уеб сървър
Когато получите специален виртуален сървър, за да управлявате уебсайта си, шансовете са добри, че е конфигуриран за всички и не са персонализирани, за да максимизират ефективността при работа с уебсайт.
съдържание[Крия]
|
Преглед
Има редица проблемни области, в които искаме да увеличим максимално ефективността:
- Конфигурация на 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