Налаштування виділеного віртуального веб-сервера

Коли ви отримуєте вибраний віртуальний сервер для запуску вашого сайту, велика ймовірність, що він налаштований для всіх і не налаштований для максимізації продуктивності для запуску сайту.


зміст

[Сховати]


огляд

Є ряд проблемних областей, де ми хочемо максимізувати продуктивність:

  • Налаштування LinuxЗазвичай
    працюють запущені сервіси, які не потрібні, витрачаючи пам'ять, яку можна використовувати для більшої кількості з'єднань.
  • Налаштування MySQL
    Часто типові параметри базуються на невеликому сервері, ми можемо додати декілька ключових змін, щоб значно підвищити продуктивність.
  • Налаштування ApacheЗа
    замовчуванням більшість хостинг-провайдерів встановлюють apache практично з кожним встановленим додатком. Немає причин завантажувати модулі, якщо ви ніколи не збираєтеся їх використовувати.
  • За замовчуванням налаштування РНРКонфігурації
    PHP подібно до роздутої, зазвичай встановлюється безліч непотрібних додаткових додатків.
  • PHP кеш коду Замість
    того, щоб дозволяти PHP перекомпілювати скрипти кожен раз, кеш коду операції буде кешувати скомпільовані скрипти в пам'яті для величезного підвищення продуктивності.
  • Резервні коп
    Ймовірно, слід налаштувати автоматичне резервування, оскільки ваш хостинг-провайдер не збирається робити це за вас.
  • Звичайно
    , типовий Linux досить безпечний, але зазвичай є деякі явні проблеми з безпекою, які ви можете виправити за допомогою декількох швидких налаштувань.

Налаштування Linux

Ви можете зробити багато параметрів, які трохи відрізнятимуться залежно від сервера, який ви використовуєте. Ці параметри призначено для сервера під керуванням CentOS, але вони повинні працювати для більшості серверів DV.

Вимкнути DNS

Якщо ваш хостинг-провайдер обробляє DNS для вашого домену (ймовірно), ви можете вимкнути запуск служби 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

Обмежити використання пам'яті 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 stop


Ви можете вимкнути його під час запуску, виконавши наступну команду:

chmod 644 /etc/init.d/psa

Зауважте, що якщо ви вимкнете його, ви не зможете запустити його вручну, не повернувши назад права доступу до файла (chmod u + x).

Налаштування MySQL

Увімкнути Query Cache

Відкрийте ваш файл/etc/my.cnf і додайте такі рядки до розділу [mysqld] наступним чином:

[ТузДи] query-cache-type
= 1
розмір кеш-запиту = 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 в окремому місці в пам'яті. Це означає, що якщо невикористовуваний додаток додає 256 КБ пам'яті в PHP, то в 40 потоках Apache ви витрачаєте 10 МБ пам'яті.

Вилучити непотрібні додатки PHP

Вам потрібно знайти файл php.ini, який зазвичай знаходиться в/etc/php.ini (зверніть увагу, що в деяких дистрибутивах буде каталог/etc/php.d/з кількома файламі.ini, по одному на кожен модуль.

Закомментуйте будь- які рядки loadmodule з цими додатками:

  • ODBC
  • SNMP
  • п. д. о.
  • odbc pdo
  • MySQLi
  • IonCube-навантажувач
  • JSON
  • IMAP
  • LDAP
  • Ncurses

Todo: Додайте більше інформації.

PHP кеш коду операції

Ви можете використовувати кілька кешів кодів операцій, включаючи APC, eAccelerator і Xcache, останній з яких є моєю особистою перевагою через стабільність.

Завантажте xcache і розпакуйте його в каталог, а потім виконайте наступні команди з вихідного каталогу xcache:

phpize
./configure --enable-xcache
зробити
встановлення

Відкрийте файл php.ini та додайте новий розділ для xcache. Вам потрібно буде відрегулювати шляхи, якщо ваші модулі php завантажені звідкись ще.

vi /etc/php.ini

Додайте наступний розділ до файла:

[XCache-распространенным]
 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 = Off
xcache.readonly_protection = On
xcache.mmap_path = ""/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = Вкл
xcache.stat = On
xcache.optimizer = Off

Todo: Потрібно трохи це розширити і посилатися на xcache в посиланнях.

Резервні копії

Це дуже мало важливіше, ніж автоматичне резервування вашого сайту. Ви можете отримати резервні копії знімків від вашого хостинг-провайдера, що також дуже корисно, але я вважаю за краще також мати автоматичні резервні копії.

Створити скрипт автоматичного резервування

Я зазвичай починаю з створення каталогу/backups з каталогом/backups/files під ним. Ви можете налаштувати ці шляхи, якщо хочете.

mkdir -p / backups / files

Тепер створіть скрипт backup.sh всередині каталогу резервних копій:

vi /backups/backup.sh

Додайте наступне до файлу, коригуючи шляхи та пароль mysqldump у міру необхідності:

#! / Bin / ш
 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
 gzip /backups/files/sitebackup$THEDATE.tar
 find / backups / files / site * -mtime +5 -exec rm {} \;
find / backups / files / db * -mtime +5 -exec rm {} \;

Сценарій спочатку створить змінну дати, тому всі файли будуть названі однаково для однієї резервної копії, потім вивантажить базу даних, розбере веб-файли і скопіює їх. Команди 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 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.: / backups / files / * / offsitebackups /

Це займе багато часу для запуску вперше, але в кінці ваш локальний комп'ютер повинен мати копію каталогу файлів у каталозі/offsitebackups/. (Переконайтеся, що створили цей каталог перед запуском скрипту)

Ви можете запланувати це, додавши його до рядка crontab:

crontab -e

Додайте наступний рядок, який буде запускати rsync щогодини з позначкою 45 хвилин. Ви помітите, що ми використовуємо повний шлях до rsync тут.

45 * * * * / usr / bin / rsync -a Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.: / backups / files / * / offsitebackups /

Ви можете запланувати його запуск в інший час або тільки один раз на день. Це дійсно залежить від вас.

Зауважте, що існує багато інструментів, які дозволять вам синхронізуватися через ssh або ftp. Вам не потрібно використовувати rsync.

Безпека

Перше, що ви хочете зробити, це переконатися, що у вас є звичайний обліковий запис користувача для використання через ssh, і переконайтеся, що ви можете використовувати su для перемикання на root. Це дуже погана ідея - дозволити прямий вхід для користувача root через ssh.

Вимкнути root-вхід через SSH

Відредагуйте файл/etc/ssh/ sshd_config і знайдіть такий рядок:

#PermitRootLogin да

Змініть цей рядок, щоб він виглядав так:

PermitRootLogin немає

Переконайтеся, що у вас є звичайний обліковий запис користувача і ви можете увійти в систему, перш ніж вносити ці зміни, інакше ви можете заблокувати себе.

Вимкнути версію SSH 1

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

# Protocol 2,1
Протокол 2

Переконайтеся, що ви використовуєте лише протокол 2, як показано.

Перезавантажити сервер SSH

Тепер вам потрібно перезапустити сервер SSH, щоб це набуло чинності.

/etc/init.d/sshd restart

Перевірити наявність відкритих портів

Ви можете використовувати наступну команду, щоб побачити, які порти прослуховує сервер:

netstat -an |  grep LISTEN

Ви дійсно не повинні слухати нічого, крім портів 22, 80 і, можливо, 8443 для plesk.

Налаштуйте брандмауер

Основна стаття: Використання Iptables у Linux

За бажанням ви можете налаштувати брандмауер iptables для блокування більшої кількості з'єднань. Наприклад, я зазвичай блокую доступ до будь-яких інших портів, крім як з моєї робочої мережі. Якщо у вас динамічна IP-адреса, ви можете уникнути цього параметра.

Якщо ви вже виконали всі дії, описані в цьому керівництві, можливо, немає необхідності додавати брандмауер в мікшер, але добре розуміти ваші варіанти.

Дивіться також

Посилання

  • Оптимізація сервера DV (mediatemple.net)
  • XCache

COM_SPPAGEBUILDER_NO_ITEMS_FOUND