Настройка выделенного виртуального веб-сервера

Оглавление:

Настройка выделенного виртуального веб-сервера
Настройка выделенного виртуального веб-сервера

Видео: Настройка выделенного виртуального веб-сервера

Видео: Настройка выделенного виртуального веб-сервера
Видео: How to Import Outlook.com Emails to Thunderbird | Cost-Effective Solution! - YouTube 2024, Май
Anonim

Когда вы получаете выделенный виртуальный сервер для запуска своего сайта, есть хорошие шансы, что он настроен для всех и не настроен на максимальную производительность для запуска веб-сайта.

содержание

[скрывать]

  • 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 Кэш-код Opcode PHP
  • 6 резервных копий

    • 6.1 Создание автоматического сценария резервного копирования
    • 6.2 Синхронизация резервных копий вне сайта с Rsync
  • 7 Безопасность

    • 7.1 Отключить вход в root через SSH
    • 7.2 Отключение SSH версии 1
    • 7.3 Перезапуск SSH-сервера
    • 7.4 Проверка открытых портов
    • 7.5 Настройка брандмауэра
  • 8 См. Также
  • 9 Ссылки

обзор

Существует ряд проблемных областей, где мы хотим максимизировать производительность:

  • Конфигурация Linux Обычно работают службы, которые не нужны, теряя память, которая может использоваться для большего количества подключений.
  • Конфигурация MySQL Часто настройки по умолчанию основаны на небольшом сервере, мы можем добавить несколько ключевых изменений, чтобы увеличить производительность.
  • Конфигурация Apache По умолчанию большинство хостинг-провайдеров устанавливают apache практически с каждым установленным модулем. Нет причин загружать модули, если вы их никогда не будете использовать.
  • Настройка PHP Конфигурация PHP по умолчанию аналогично раздута, обычно имеется тонна ненужных дополнительных модулей.
  • Кэш PHP-кода Вместо того, чтобы позволить 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

Ограничение использования памяти 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

Включить кеш запросов

Откройте файл /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 потоков 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 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 в ссылках.

Резервные копии

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

Создать автоматический сценарий резервного копирования

Обычно я начинаю с создания каталога / backups с подкаталогом / 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 {};

Сценарий сначала создаст переменную даты, так что все файлы будут одинаковыми для одной резервной копии, затем сбрасывают базу данных, выгружают веб-файлы и gzips их. Команды 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 [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. Это очень плохая идея разрешить прямой вход для root поверх ssh.

Отключить вход в root через 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 для plesk.

Настройка брандмауэра

Основная статья:Использование Iptables в Linux

Вы можете настроить брандмауэр iptables для блокировки большего количества подключений. Например, я обычно блокирую доступ к любым другим портам, отличным от моей рабочей сети. Если у вас динамический IP-адрес, вы захотите избежать этого параметра.

Если вы уже следовали всем шагам в этом руководстве, вероятно, нет необходимости также добавлять брандмауэр в микс, но хорошо понимать ваши варианты.

Смотрите также

Использование Iptables в Linux

Рекомендации

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

Рекомендуемые: