Когато получите специален виртуален сървър, за да стартирате уебсайта си, шансовете са добри, че той е конфигуриран за всички и не е персонализиран, за да увеличи максимално ефективността за стартиране на уебсайт.
съдържание[Крия]
|
Преглед
Има редица проблемни области, в които искаме да увеличим максимално ефективността:
- Linux конфигурация Обикновено се изпълняват услуги, които не трябва да бъдат, губи памет, която може да се използва за повече връзки.
- MySQL конфигурация Често настройките по подразбиране се базират на малък сървър, можем да добавим няколко ключови промени, за да увеличим ефективността много.
- Apache конфигурация По подразбиране повечето хостинг доставчици инсталират Apache с почти всеки инсталиран модул. Няма причина да заредите модули, ако изобщо няма да ги използвате.
- PHP конфигурация По подразбиране PHP конфигурацията е подобно подуто, обикновено има тон ненужни допълнителни модули инсталирани.
- PHP Opcode кеш Вместо да позволява на PHP да прекомпилира сценариите всеки път, кешът за опкод ще кешира компилираните скриптове в паметта, за да увеличи производителността.
- Архивите Вероятно трябва да настроите автоматизирани резервни копия, тъй като вашият хостинг доставчик няма да го направи за вас.
- Сигурност Разбира се, Linux е достатъчно сигурен по подразбиране, но обикновено има някои очевидни проблеми със сигурността, които можете да коригирате с няколко бързи настройки.
Linux конфигурация
Има доста ощипвания, които можете да направите, които ще се различават леко на базата на сървъра, който използвате. Тези ощипвания са за сървър, изпълняващ CentOS, но те трябва да работят за по-голямата част от DV сървърите.
Деактивиране на DNS
Ако вашият хостинг доставчик обработва DNS за вашият домейн (вероятно), тогава можете да деактивирате услугата DNS да се изпълнява.
disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Командата chmod премахва разрешението за изпълнение от скрипта и го спира да работи при стартиране.
Деактивирайте SpamAssassain
Ако не използвате имейл акаунти на самия сървър, не трябва да се притеснявате да работите с антиспам инструменти. (Също така трябва да проверите 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, но не е била проверена на други. (Виж референциите)
Деактивиране или изключване на плесен (по избор)
Ако използвате Plesk само веднъж годишно, няма много причини да го оставяте да работи изобщо. Обърнете внимание, че тази стъпка е напълно по желание и малко по-напреднала.
Изпълнете следната команда, за да изключите плешката:
/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
Можете да добавите още памет към кеша за заявки, ако искате, но не използвайте прекалено много.
Деактивиране на TCP / IP
Изненадващ брой хостове позволяват по подразбиране достъп до MySQL на TCP / IP, което няма смисъл за уебсайт. Можете да разберете дали mysql слуша в TCP / IP, като стартирате следната команда:
netstat -an | grep 3306
За да деактивирате, добавете следния ред към файла /etc/my.cnf:
skip-networking
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 в отделно място в паметта. Това означава, че ако един неизползван модул добави 256k памет към PHP, в 40 апаша нишки губите 10MB памет.
Премахване на ненужните PHP модули
Трябва да намерите файла php.ini, който обикновено се намира в /etc/php.ini (Имайте предвид, че на някои дистрибуции ще има директория /etc/php.d/ с няколко.ini файла, един за всеки модул.
Коментирайте всички loadmodule линии с тези модули:
- ODBC
- SNMP
- ЗНП
- Отбр
- MySQLi
- ioncube-товарач
- JSON
- IMAP
- LDAP
- ncurses
Todo: Добавете още информация тук.
PHP Opcode кеш
Съществуват няколко кеша с опкода, които можете да използвате, включително 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]; 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 в препратките.
Архивите
Има много малко по-важно от това да имате автоматизирани резервни копия на уебсайта си. Възможно е да можете да получите резервни копия от вашия хостинг доставчик, които също са много полезни, но предпочитам да има и автоматични резервни копия.
Създаване на автоматизиран резервен скрипт
Обикновено започвам с създаването на директория / backup, с директория / backups / files под нея. Можете да коригирате тези пътища, ако искате.
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 {};
Първоначалният скрипт ще създаде променлива за дата, така че всички файлове ще бъдат наименувани за едно и също резервно копие, след това ще изхвърлят базата от данни, ще разкопаят уеб файловете и ще ги образуват. Командите за намиране се използват за премахване на всички файлове, по-стари от 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/
Това ще отнеме известно време, за да се стартира за първи път, но в крайна сметка локалният ви компютър трябва да има копие на директорията за файлове в директорията / offsitebackups /. (Уверете се, че сте създали тази директория преди да стартирате скрипта)
Можете да насрочите това, като го добавите към линия crontab:
crontab -e
Добавете следния ред, който ще се изпълнява rsync всеки час в рамките на 45 минути. Ще забележите, че тук използваме пълния път към rsync.
45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/
Можете да го планирате да се изпълнява в различно време или само веднъж на ден. Това зависи от вас.
Имайте предвид, че има много помощни програми, които ви позволяват да синхронизирате чрез ssh или ftp. Не е нужно да използвате rsync.
Сигурност
Първото нещо, което искате да направите, е да сте сигурни, че имате редовен потребителски акаунт, който да използвате чрез ssh, и се уверете, че можете да използвате su, за да преминете към root. Много лоша идея е да позволите директно вход за корен над ssh.
Деактивиране на коренното влизане през SSH
Редактирайте файла / etc / ssh / sshd_config и потърсете следния ред:
#PermitRootLogin yes
Променете този ред, така че да изглежда така:
PermitRootLogin no
Уверете се, че имате обикновен потребителски акаунт и можете да го root, преди да направите тази промяна, в противен случай може да се заключите.
Деактивирайте SSH Версия 1
Наистина няма причина да се използва нещо друго освен SSH версия 2, тъй като е по-сигурно от предишните версии. Редактирайте файла / etc / ssh / sshd_config и потърсете следната секция:
#Protocol 2,1 Protocol 2
Уверете се, че използвате само Протокол 2, както е показано.
Рестартирайте SSH сървъра
Сега ще трябва да рестартирате SSH сървъра, за да стане това действие в сила.
/etc/init.d/sshd restart
Проверете за отворени портове
Можете да използвате следната команда, за да видите кои пристанища сървърът слуша:
netstat -an | grep LISTEN
Наистина не трябва да имате каквото и да било слушане, освен пристанища 22, 80 и вероятно 8443 за пляскане.
Настройка на защитна стена
Основен член:Използване на Iptables на Linux
По желание можете да настроите защитна стена на iptables, за да блокирате повече връзки. Например, обикновено блокирам достъпа до други портове, различни от моята работна мрежа. Ако имате динамичен IP адрес, вие ще искате да избегнете тази опция.
Ако вече сте изпълнили всички стъпки в това ръководство досега, вероятно не е необходимо да добавяте защитна стена към сместа, но е добре да разберете вашите опции.
Вижте също
Използване на Iptables на Linux
Препратки
- Оптимизиране на вашия DV сървър (mediatemple.net)
- XCache