Коли ви отримуєте вибраний віртуальний сервер для запуску вашого сайту, велика ймовірність, що він налаштований для всіх і не налаштований для максимізації продуктивності для запуску сайту.
- зміст
- огляд
- Налаштування Linux
- Вимкнути DNS
- Вимкнути SpamAssassain
- Вимкнути xinetd
- Вимкнути або вимкнути Plesk (необов'язково)
- Налаштування MySQL
- Увімкнути Query Cache
- Вимкнути TCP/IP
- Налаштування Apache
- PHP кеш коду операції
- Резервні копії
- Створити скрипт автоматичного резервування
- Синхронізація резервних копій поза сайтом Rsync
- Безпека
- Вимкнути root-вхід через SSH
- Вимкнути версію SSH 1
- Перезавантажити сервер SSH
- Перевірити наявність відкритих портів
- Налаштуйте брандмауер
- Дивіться також
- Посилання
зміст[Сховати] |
огляд
Є ряд проблемних областей, де ми хочемо максимізувати продуктивність:
- Налаштування 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