Настраиваем свой первый VDS сервер в роли веб-сервера. Добавление нового хоста Nginx
xHellKern 28 ноября 2012 в 23:29
Настраиваем свой первый VDS сервер в роли веб-сервера
- Nginx
- Tutorial
Добрый день.
Так уж сложилось, что последнее время пришлось достаточно часто менять VDS провайдеров, и каждый раз приходится заново настраивать систему, поэтому решил написать краткий конспект по настройке. Все нижеописанное корректно работает на ОС Linux Ubuntu server 12.04 LTS. В этой статье я опишу как установить и произвести первичную настройку nginx+apache2, eaccelerator, memcached, fure-ftpd, php, mysql, phpmyadmin а также панели управления игровыми серверами - open game panel.
Начну с краткого описания некоторых терминов.
VDS - он же VPS - Virtual Dedicated(Private) сервер - виртуальная машина, сервер - нужен он, когда обычного хостинга мало, а выделенный сервер дорого. На современном рынке провайдеров, которые предоставляют услуги по аренде VDS великое множество, и у каждого есть свои плюсы и минусы, но их мы обсуждать не будем.
Тип виртуализации - говоря простым языком это то, каким способом организована виртуальная машина. В настоящее время наиболее распространены OpenVZ и XEN. Плюс OpenVZ - низкая стоимость, так как в этом типе виртуализации для всех виртуальных машин запущенных на аппаратном сервере используется специально модифицированное ядро хост-системы. Минус этого типа виртуализации - невозможно менять параметры ядра ОС, также практически всегда присутствует оверселлинг (об это позже). А для серьезных проектов лучше использовать XEN или KVM виртуализацию - там гостевая ОС даже и не знает что она установлена на виртуальную машину, и с ОС можно делать практически все, чего душа пожелает, особенно на XEN-HWM и KVM.
Оверселлинг - провайдеры продают больше ресурсов, чем есть на самом деле. Работает это за счет того что клиенты редко используют ресурсы по тарифу на 100 процентов, но у недобросовестных провайдеров с завышенным коэффициентом оверселлинга могут наблюдаться проблемы, такие как крайне медленная работа машины или невыполнение скриптов по причине нехватки памяти. Возвращаясь к типам виртуализации на XEN и KVM оверселлинг практически невозможен технически.
Выбор хостинг-провайдера
Итак, вы решили купить услугу VDS. Как же следует выбирать провайдера. Начать следует с географии - где территориально будет располагаться ваш сервер.
Германия - плюсы: дешевые тарифы, быстрые каналы, безлимитный трафик, минусы - достаточно большая задержка до России - примерно 80мс, очень серьезно относятся к торрент трекерам, торрент клиентам, варезу и т.п.
Голландия, Канада - то же самое то и Германия, но немного дороже, но основной плюс - законодательство которое лояльнее относится к различным видам хранимой и передаваемой информации, за которую у нас по голове не гладят.
США - в большинстве своем считают трафик, большие пинги до России - в общем, не самый лучший вариант.
Россия, Украина - минимальные задержки до Российской аудитории, в большинстве случаев псевдобезлимитный трафик (снижение скорости после определенного порога или необходимость соблюдать пропорции входящего\исходящего Российского\зарубежного трафика), не самые надежные дата центры - практически в каждом периодически случаются массовые отключения сервиса на несколько часов, несмотря на три независимых электроввода, резервирование каналов интернет и дизель-генераторы.
Выбор типа виртуализации
Если позволяют ресурсы, то это однозначно KVM или XEN. Но не у всех провайдеров доступны эти типы виртуальных машин, да и денег оно стоит немного больших, нежели OpenVZ. Поэтому если ваш проект это некий сайт\два\десять с невысокой посещаемостью (примерно до 10000 уникальных хостов в день) и\или какой-нибудь ICQ чат, то OpenVZ для вас будет вполне достаточно.
Ну а если требуется выполнять какие-либо более ресурсоемкие задачи, такие как размещение игровых серверов или видеочаты лучше выбрать XEN | KVM, также эти типы виртуализации стоит выбирать, если есть необходимость создания VPN-туннелей. Здесь VPN поднять проще, чем на OpenVZ.
Настройка сервера
Далее буду рассказывать про разные фичи, которые я настраивал на своем сервере, какие-то могут быть вам полезны. Операционная систем, которую я использую – Ubuntu 12.04.1 LTS. Так как подавляющее большинство выполняющихся далее команд требуют root привилегий, а я человек ленивый то все действия я выполняю под рутом. Залогиниться сразу под рутом обычно нельзя, поэтому заходим под пользователем с правами sudo и выполняем команду sudo -sПересобираем ядро
Если вы выбрали OpenVZ, то можете смело пропускать эту часть статьи.
Данная процедура не даст ощутимого прироста производительности, и нужна эта процедура только для саморазвития и «потренироваться на будущее».
качаем исходники последней стабильной версии ядра с сайта kernel.org. На данный момент это версия 3.6.7
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.7.tar.bz2
Распаковываем архив
tar -xjf linux-3.6.7.tar.bz2
Устанавливаем необходимые для компиляции пакеты
aptitude update
aptitude install build-dep linux kernel-package
заходим в папку с исходниками и генерируем конфигурацию ядра. В нашем случае все будет проходить автоматически - в ядро будут включены только те модули, которые необходимы текущему железу. Если же вам хочется вручную сконфигурировать ядро, то прошу гуглить по запросу make config или make menugonfig.
cd linux-3.6.7
make localyesconfig
запускаем компиляцию ядра - процесс не быстрый идет от 15 минут до нескольких часов.
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
поднимаемся на каталог выше и устанавливаем пакеты
cd ..
dpkg -i linux-*.deb
Перезагружаемся и проверяем, что ядро встало.
reboot
uname -r
Вот и все, в вашей системе новое ядро.
Меняем часовой пояс и имя ПК
Если вы устанавливаете Ubuntu на выделенный сервер сами, то языковые и географические параметры системы вы задаете в ходе установки, но в случае с VDS у провайдера есть уже готовый образ системы, который он раскатывает на ваш сервер. И всем нам приятней видеть правильное для нашего часового пояса время на сервере.
Итак, установим часовой пояс, для этого в консоли выполним команду
dpkg-reconfigure tzdata
Появится псевдографический интерфейс в котором мы выберем наше расположение.
Если вдруг (ни разу еще такого не видел) есть расхождения по дате\времени, то выполним следующую команду, в которую подставим текущие дату и время
hwclock --set --date=”11/24/2012 16:19:55"
Чтобы изменить имя сервера, откроем файл /etc/hostname и заменим содержимое на желаемое имя сервера.
Устанавливаем nginx c бэкэндом apache2, PHP, MySQL, phpmyadmin
В этой части статьи мы установим и настроим веб-сервер, рассчитанный на большое количество соединений.
Сначала установим стандартный «детский» набор пакетов для веб сервера.
aptitude update
aptitude install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-certlibapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl phpmyadmin g++
Нас будут просить задать пароль от MySQL, потом спросят чем обрабатывать phpmyadmin - нужно ответить то апачем, и спросят пароль от MySQL для нужд phpmyadmin
На момент написания статьи phpmyadmin автоматически не прописывался в конфигурации apache2, вследствие чего по адресу адрес_сайта.зона/phpmyadmin мы видим ошибку 404, поэтому открываем файл /etc/apache2/apache2.conf и в конец дописываем строчку
Include /etc/phpmyadmin/apache.conf
Включаем модули apache2
a2enmod include
a2enmod rewrite
a2enmod suexec
a2enmod ssl
Рисуем дефолтный конфиг апача. Для этого открываем /etc/apache2/sites-available/default стираем в этом файле все и пишем следующее:
То, что указан восьмисотый порт - это не ошибка, на стандартном для http восьмидесятом порту будет висеть nginx. Параметр DocumentRoot по неизвестным мне причинам большинство советуют указывать /var/www/…, на мой же взгляд логичнее держать важные данные в /home - проще будет настраивать резервное копирование.
Правим файл /etc/apache2/ports.conf
NameVirtualHost *:800
Listen 800
Копируем файл /etc/apache2/sites-available/default в /etc/apache2/sites-enabled/адрес_сайта
Директории и файлы с конфигами лучше называть по адресам сайтов т.к. в будущем это упростит поиск нужных конфигов\директорий, например /home/www/tweedle.ru /etc/apache2/sites-enabled/tweedle.ru
Правим файл /etc/apache2/apache2.conf - меняем значение параметра MaxClients на 20, сделать это надо в двух местах.
Прописываем репозиторий nginx, для этого откроем файл /etc/apt/sources.list и допишем в конец
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Устанавливаем nginx и apache2-mod-rpaf
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
aptitude update
aptitude install libapache2-mod-rpaf libpcre3 libpcre3-dev nginx
Далее настроим nginx, для этого открываем файл /usr/local/etc/nginx/nginx.conf и заменяем содержимое следующим
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_proxied any;
gzip_min_length 300;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
в том случае если роль веб-сервера является основной ролью вашего сервера и\или сайты имеют большую посещаемость значение worker_processes выставляем равным количеству доступных ядер ЦП, в противном случае одного процесса будет вполне достаточно
создаем конфиг для нашего сайта /etc/nginx/sites-enabled/адрес_сайта.зона
server {
listen 80;
server_name адрес_сайта.зона;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx|mp3|bsp)$ {
root /home/www/адрес_сайта.зона/;
index index.php index.html index.htm;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:800/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
устанавливаем memcached, никаких дополнительных настроек для него не требуеся
aptitude install memcached
устанавливаем eAccelerator
aptitude install php5-dev
aptitude install make
cd /tmp/
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
теперь, прежде чем мы скомпилируем eAccelerator, поправим один баг в коде, из за которого возникают всяческие проблемы, например перестает работать авторизация в phpmyadmin. Откроем файл eaccelerator.c, строка 867. Заменим if (php_check_open_basedir(realname TSRMLS_CC)) { на if (php_check_open_basedir(p->realfilename TSRMLS_CC)) { Сохраняемся и продолжаем…
phpize
./configure --enable-eaccelerator=shared
make
make install
Создаем папку для кэша, и даем на нее права
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Настраиваем php для работы с eaccelerator, для этого откроем файл /etc/php5/apache2/php.ini и допишем сверху
extension = "eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
Перезапускаем сервисы, убедившись что в /home/www/имя_сайта лежит сайт
service apache2 restart
service nginx restart
service memcached restart
Теперь мы имеем достаточно шустрый веб-сервер, который потребляет меньше 100Мб оперативной памяти. Todo: Есть один недочет – phpmyadmin, который доступен по адресу адрес_сайта.зона/phpmyadmin отображается некрасиво(без картинок), временное решение, которое я могу предложить – открывать phpmyadmin по адресу адрес_сайта.зона :800/phpmyadmin
Установка FTP сервера pure-ftpd с поддержкой MySQL
ФТП сервер пригодиться нам для простого и быстрого и удобного переноса информации с сервера и на сервер.
Устанавливаем pure-ftpd с поддержкой mysql
aptitude install pure-ftpd-mysql
Создаем группу для пользователей ftp и пользователя в ней – это делается для того чтобы впоследствии было удобней следить за тем, что происходит на вашем сервере.
groupadd -g 4001 ftpusers && useradd -u 4001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpusers ftp
Создадим базу данных в MySQL для pure-ftpd. Это можно сделать и через phpmyadmin, но великим и могучим копипастом это быстрее сделать в консоли
mysql -u root –p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO "pureftpd"@"localhost" IDENTIFIED BY "пароль_для_pureftpd";
FLUSH PRIVILEGES;
Создадим таблицу, в которой будут храниться учетные записи фтп.
USE pureftpd;
CREATE TABLE ftpd (User varchar(16) NOT NULL default "",
status enum("0","1") NOT NULL default "0",
Password varchar(64) NOT NULL default "",
Uid varchar(11) NOT NULL default "-1",
Gid varchar(11) NOT NULL default "-1",
Dir varchar(128) NOT NULL default "",
ULBandwidth smallint(5) NOT NULL default "0",
DLBandwidth smallint(5) NOT NULL default "0",
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default "*",
QuotaSize smallint(5) NOT NULL default "0",
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)) ENGINE=MyISAM;
quit;
Теперь настроим pure-ftpd, для этого откроем файл /etc/pure-ftpd/db/mysql.conf и сделаем его содержание таким:
MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword пароль_для_pureftpd
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
Теперь сделаем так, чтобы домашняя директория пользователя автоматически создавалась если она не существует
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Следующая команда не даст пользователям доступа к директориям, которые выше чем их домашний каталог.
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
И наконец отключим проверку хостнеймов пользователей – это значительно ускорит процесс авторизации и немного сократит количество трафика.
echo "yes" > /etc/pure-ftpd/conf/DontResolve
Перезапустим сервис чтобы применить настройки
service pure-ftpd-mysql restart
Теперь создадим пользователя www-ftp с GID и UID 4002, домашней директорией /home/www лимитами скорости загрузки\отдачи по одному мегабайту в секунду и без ограничений по занимаемому дисковому пространству. Приведу пример с использованием командной строки, вы же можете использовать и «выполнить SQL-запрос» в phpmyadmin, или даже воспользоваться «добавить строки» в phpmyadmin – но в этом случае нужно не прошляпить то, что пароль в БД храниться в виде его md5 хеша, и в поле password выбрать «Функция» md5
mysql -u root -p
USE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ("www-ftp", "1", MD5("пароль_для_пользователя_www-ftp"), "4002", "4002", "/home/www", "1024", "1024", "Комментарий", "*", "0", "0");
quit;
Вот и все, можно пробовать подключаться к вашему фтп серверу по адресу адрес_сайта.зона c логином www-ftp и указанным паролем.
Если вы собираетесь передавать по протоколу ФТП данные, которые не должны попасть в чужие руки, то не лишним будет настроить TLS шифрование. Для этого выполним следующее:
echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/
Устанавливаем пакет openssl, если он не установлен и генерируем сертификат.
aptitude update
aptitude install openssl
openssl req -x509 -nodes -days 3652 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Отвечаем на вопросы – эти данные будут отображаться в созданном сертификате.
Устанавливаем права доступа на сертификат и перезапускаем pure-ftpd
chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart
Вот и все. Помните, что для того чтобы данные шифровались необходимо включить tls шифрование со стороны клиента, и далеко не все фтп клиенты поддерживают его.
Установка комплекса управления игровыми серверами – Open Game Panel
Open game panel – он же OGP - единственное из мною найденных бесплатное решение, которое позволяет осуществлять мониторинг и управление разнообразными игровыми серверами. На момент написания статьи поддерживаются более 50 разных игр с серверами на платформах Windows и Linux. В том числе такие популярные как Counter-Strike (2D, 1.5, 1.6, Source, GO) и Minecraft(Vanilla, Bukkit)
Состоит комплекс из двух частей – веб-морды, через которую осуществляется мониторинг и управление(фронтэнд) и агента – сервиса, который висит на машинах с игровыми серверами и передает логи в фронтэнд, а команды из фронэнда игровым серверам.
Первым делом регистрируемся на http://www.opengamepanel.org – для установки это не обязательно, но на сайте можно скачать дополнительные модули(например систему биллинга), темы и прочие плюшки.
Устанавливаем необходимые пакеты
aptitude update
aptitude install libxml-parser-perl libpath-class-perl libarchive-any-perl screen
Если система x64, то дополнительно устанавливаем ia32-libs
aptitude install ia32-libs
Скачиваем сам агент
wget "http://www.opengamepanel.org/downloads/ogp_agent_nightly.tar.gz" -O agent.tar.gz
tar xf agent.tar.gz
cd agent
Устанавливаем. Внимание – я предварительно создал пользователя в системе, включил его в группы root и sudo и создал ему домашний каталог – это все необходимо для того чтобы агент корректно работал.
bash ./install.sh
У нас будут спрашивать имя пользователя под которым будет крутиться сервис – нужно указать того, про которого я говорил в предыдущем пункте, его пароль, директорию в которой будут находиться исполняемые файлы(/home/имя пользователя/OGP) и попросят ввести ключ агента – это не пароль пользователя, а ключ управления агентом, он нам пригодится позже, и еще нас попросят согласиться с правилами политики Steam.
После установки залогиниваемся под созданным пользователем и запускаем
cd /home/имя пользователя/OGP
perl ./ogp_agent.pl --log-stdout
Нам должны написать что все в порядке, процесс запущен и слушает на 12679 порту.
Нажимаем ctrl+c, логинимся под рутом и прописываем – это нужно для того чтобы сервис стартовал при запуске ситемы
update-rc.d ogp_agent defaults
Если серверов (выделенных или виртуальных) несколько, то агент необходимо установить на каждом
Теперь установим веб-интерфейс от OGP, скачиваем архив и распаковываем
wget "http://www.opengamepanel.org/downloads/ogp_web_nightly.tar.gz" -O upload.tar.gz
tar xf upload.tar.gz
Перемещаем содержимое папки upload в папку, в которой у нас лежит сайт
В браузере открываем адрес_сайта.зона/папка_с_ogp и выбираем язык, если вдруг насм говорят что не хватает прав на создание каких-либо файлов или папок то выдаем права 777 chmodом, для этого зайдем в папку с ogp и выполним команду.
chmod 777 –v –R *
Обновляшечки! Данный набор шпор для разворота хостинга обновлен 28.03.2015, теперь по ним можно развернуть относительно свежий хостинг под Ubuntu 14.04LTS.
Вчера заметил, что Hetzner недавно «обновил тарифы» и выкатил конфигурацию VX18 всего за 18€ c VAT (для нерезидентов по 15.8€). По характеристикам — всего в 2 раза больше, чем на моем старом тарифе VQ19, по качеству ничего не ясно, предполагаю что такое же десктопное железо. Саппорт не сознается, говорит «просто новые тарифы, надо же нам что-то предлагать». Решил вот попробовать. Прогнал unixbench на старом сервере и новом , остался пока доволен и начал перенос сайтов. За одно решил поправить эти шпаргалки для настройки хостинга. (кстати, со временем показатели сервера ухудшатся при «заселении» сервера или смены ноды на более вялую, как было у меня с VQ19, для сравнения — удивительно бодрее чем VQ19).
Задача
Развернуть под Ubuntu 14.04 LTS
легкий виртуальный вебхостинг для работы в nginx
, PHP-5.5
, MySQL
, а так же поднять почтовый сервер Dovecot2/Postfix
и настроить почту. Apache я разворачивать не буду, ибо не вижу в нем смысла - под мои нужды nginx подходит ничуть не хуже, а оперативную память расходует значительно меньше. Неймсервер использоваться будет хетзнеровский, как более стабильный.
Формат изложения
Ниже вы можете увидеть список действий, которые будут озвучены в последующих постах. Когда этот момент случается — данная страница будет обновлена и итем станет ссылкой 🙂
- Установка средств мониторинга сервера Munin.
- Резервное копирование данных.
- Скрипты упрощающие добавление нового сайта.
Внимание! Я не являюсь матерым админом и все излагаемое может быть оспорено профессионалами в любом виде. Рад всяческим поправкам, комментариям и советам.
Покупка хостинга в hetzner.de
В этом деле я вам особо не помощник, т.к. справится с этой задачей любой. Заходим сюда , выбираем понравившийся тариф, жмем «Order now». Будете средирекчены на https://robot.your-server.de/order . Далее выбираете заново свой продукт — у меня это был «vServer VX18» и жмете «Order product». На следующей странице выбираете Ubuntu 14.04 LTS 64bit minimal , архитектура 64бит , число серверов 1. Все мои изложения далее идут для Ubuntu 14.04 LTS 64bit. Далее жмем «Add to shopping cart». На следующей странице проверяем то ли мы заказали и жмем «Checkout». Далее если имеем аккаунт в роботе — логинимся, если не имеем — заполняем все поля и регистрируемся. Заполнять надо на английском языке (Ф.И.О. транслитом). Необходимо, чтобы ваше Ф.И.О. совпало с транслитом на вашей кредитной карте, которой вы будете платить. После жмете «Create new account». Где-то дальше вас спросят про кредитку … Вообщем все как в обычном интернет-магазине.
Какой тарифный план выбрать?
Сейчас я пользуюсь тарифом VX18 за 18€ (vServer VX18), т.к. потребности постепенно растут, но до реального сервера пока не дотягивают. Данный тариф позволяет довольно бодро тянуть десяток-другой не сильно нагруженых сайтов. Если вы хотите пока попробовать что-то попроще — можно для начала взять тариф VX6, но на нем совсем мало памяти, архитектуру надо будет брать 32bit. Так же не стоит забывать, что у hetzner нельзя на лету сменить тариф — надо покупать еще один сервер и переносить все на него.
Как быть с nameserver?
А очень просто. Свой поднимать накладно, надо 2 IP, нагрузка на сервер всякими ботами нам тоже не нужна, поэтому воспользуемся неймсерверами самого hetzner. Правда услуга эта платная, стоит 0.5€ в год за 1 домен. Эту услугу лучше подключить сразу, как только вам поставят сервер (об этом вы будете уведомлены по EMail), т.к. подключается она не быстрее сервера (т.е. ручками через операторов). Как я уже описывал.
Подготовка окружения сервера.
Ну вот нам уже и сервер включили, SSH дали — можем пользоваться. Первым делом обновим установленный софт:
Sudo apt-get update sudo apt-get upgrade
Если появились ошибки в стиле blah blah blah …Hash Sum mismatch , выполняем следующее:
Sudo rm /var/lib/apt/lists/* sudo apt-get update sudo apt-get upgrade
Поставим Midnight Comander (что-то типа FAR), для запуска mc.
Sudo apt-get install mc
Теперь пропишем имя хоста (все ниже описанные действия я буду проводить для сайта koteika.ru , вы же можете заменять на свой домен, ну или придумать имя хоста себе по вкусу.)
Sudo echo "koteika" > /etc/hostname sudo hostname -F /etc/hostname
Пропишем fqdn (нужен для почты), правим /etc/hosts , чтобы получилось примерно так:
### Hetzner Online AG installimage # nameserver config # IPv4 127.0.0.1 localhost.localdomain localhost 78.47.88.87 koteika.koteika.ru koteika # # IPv6::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 2a01:4f8:d16:4346::2 koteika.koteika.ru koteika
Вся прелесть в строках 78.47.88.87 koteika.ru koteika и 2a01:4f8:d16:4346::2 koteika.koteika.ru koteika , где первое значение - IP вашего сервера, второе - доменное имя сервера в формате (FQDN) и третье - имя хоста.
Если все правильно сделали, то посмотреть результаты можно так:
Hostname hostname -f
P.S. Файлы лучше редактировать в чем-то простом типа , но простые изменения можно делать и в mc. В дальнейшем нам придется править очень много конфигов, т.ч. vi лучше освоить.
Если вам понравилась моя статья, пожалуйста, не поленитесь кликнуть любую кнопочку ниже, или кинуть ссылку на статью в свой блог или форум. Всегда рад ответить на ваши вопросы в комментариях. Спасибо 🙂
В интернете сегодня можно не только развлекаться, но и учиться, работать и зарабатывать. Количество сайтов растет ежесекундно, услуги хостинга также становятся привлекательными и множатся как грибы после дождя. Бывает, что хостер оправдывает все ожидания, но иногда приходится и переезжать. Можно нанять фрилансера, но лучше научиться делать это самому. Сегодня тебя ждет небольшая инструкция именно на этот случай.
Постановка задачи
Ситуация самая жизненная. Интернет-магазин, размещенный на шаред-хостинге, после запуска начал получать клиентов, но появились пожелания к функциональности, и разработчики активно занялись доработкой сайта. Выяснилось, что, когда в этом участвует несколько человек, постоянно копировать файлы через FTP для теста, да и еще на рабочий сайт, очень проблемно. Терялся контроль, кто когда что сделал, нужно было беспокоиться о сохранении оригинальных файлов, чтобы было легко откатиться. Владельцу приходилось или согласовывать правки, или копировать все самому. Разработчик не мог сразу посмотреть результат и ждал. Процесс сильно тормозился. В итоге пришли к тому, что нужно использовать возможности Git и создать новый сайт-зеркало, где можно было бы все обкатывать. При такой схеме разработчик мог сразу тестировать код, а в случае одобрения код переносили в master и выкладывали уже на рабочий сайт. Также можно легко отслеживать коммиты.
Вторая проблема: хостинг постоянно падал. Причину в итоге нашли: Entry processes limit - параметр, который определяет количество CGI/PHP-процессов, входящих внутрь виртуального контейнера, и о котором не сильно любят говорить маркетологи хостера. На графиках его тоже не видно, только маленькая графа в таблице. В итоге при небольших нагрузках CPU и RAM (не более 20%) сервер вообще не работал даже при минимальном количестве посетителей. В итоге было принято решение переезжать.
Первоначальные настройки сервера
OC в VDS устанавливается автоматически. Достаточно выбрать версию и вариант с веб-панелью или без и чуть подождать, пока не придет письмо с данными для входа. На хостингах предлагаются и разные веб-панели. Когда этот материал создавался, Vesta не поддерживала Ubuntu 16.04 и необходимости в ней не было, поэтому выбрали чистую систему. Все дальнейшие действия ведутся от имени root. Первым делом проверяем локаль, часовой пояс и время. Вообще, веб-приложения обычно не обращают внимания на некоторые системные настройки, но иногда попадается именно тот случай, поэтому лучше сразу сделать все правильно.
# locale
Если в ответ получаем отличное от ru_RU.UTF - перенастраиваем.
# locale-gen ru_RU ru_RU.UTF-8 ru_RU ru_RU.UTF-8 # localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # dpkg-reconfigure locales # update-locale LANG=ru_RU.UTF-8
Проверяем время:
Если часовой пояс не соответствует - переконфигурируем.
# dpkg-reconfigure tzdata
Обновляем сервер:
# apt update && apt upgrade
Теперь можем ставить сервисы.
Ставим веб-сервер
Несмотря на их разнообразие, выбор установки обычно сводится к трем вариантам: Apache, nginx или nginx как реверс Apache. Apache очень гибок в настройках и использует модули для обработки динамических запросов, поэтому хорошо справляется с динамикой. Nginx хорош в отдаче статики и потребляет меньше ресурсов, но для обработки динамики использует сторонний модуль, что снижает скорость и чуть усложняет настройки. В зависимости от конкретного приложения каждый из них может иметь свои плюсы и минусы и показывать разную скорость. Поэтому окончательный выбор веб-сервера всегда приходится подтверждать практикой, подбирая оптимальный вариант. Проблема nginx - то, что в некоторых специфических движках следует вручную возиться с редиректами, когда на Apache все будет работать буквально из коробки, достаточно просто включить mod_rewrite.
Нагрузочное тестирование можно произвести при помощи ab (Apache Benchmark, входит в apache2-utils) или siege. Причем лучше проверить с localhost и удаленного узла, чтобы видеть, как работает сеть.
# ab -c 10 -n 6000 http://example.org/
Хотя ab - это скорее для себя, чтобы оценить эффективность установок. Человека со стороны обычно интересует только то, что показывает Google PageSpeed , поэтому ориентироваться следует и на него.
В последнем случае сайт на старом хостинге давал 60, после переноса на VDS (с такими же параметрами) он в Apache в установке по умолчанию показывал 72, nginx с голым конфигом - 62, после добавления сжатия - 78. На этом и остановились, выбрали nginx. В репозитории несколько пакетов, для большинства ситуаций достаточно базового core, содержащего все основные модули, для PHP нам понадобится FPM.
# apt nginx install nginx php7.0-fpm
Файл в общем стандартный, но для скорости добавим кеширование и сжатие. Точные параметры в каждом случае необходимо подбирать опытным путем, но для небольших и средних проектов таких установок обычно бывает достаточно. В nginx.conf добавляем или, если повезло, снимаем комментарии в секции http:
# nano /etc/nginx/nginx.conf http { .... open_file_cache max=200000 inactive=60s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; server_tokens off; server_names_hash_bucket_size 64; reset_timedout_connection on; client_body_timeout 10; gzip on; gzip_disable "msie6"; gzip_static on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js; }
Создаем настройки для домена:
# nano /etc/nginx/sites-available/example.org server { listen 80; server_name example.org default; root /var/www/example.org; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; rewrite_log on; # Полезная настройка для отладки index index.php; try_files $uri $uri/ /index.php?$query_string; location ~ \.php$ { include /etc/nginx/fastcgi_params; # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } # Кешируем картинки и txt/XML/JS/CSS. Можно убрать ненужное или что-то добавить location ~* ^.+\.(jpg|jpeg|gif|png|js|css|txt|xml)$ { access_log off; expires 30d; } # Блокируем доступ к каталогу.git (о нем дальше), по аналогии добавляем свои правила location ~ /\.git { deny all; } }
Это общий пример для стандартного движка. Некоторые движки вроде OpenCart или WebAsyst требуют специфических настроек, и даже не всегда работает то, что предлагается в Сети.
Проверяем, работает ли сжатие. Это можно сделать, просмотрев заголовок Content-Encoding в Firebug (он должен показывать gzip), или при помощи специального сервиса .
Включаем сайт:
# ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org
Перезапускаем nginx:
# service nginx restart
Но работать еще не будет. Нужно настроить PHP. Для FPM все установки находятся в /etc/php/7.0/fpm. Проверяем, что в pool.d/www.conf учетная запись совпадает с используемой nginx и включен сокет.
# nano /etc/php/7.0/fpm/pool.d/www.conf user = www-data group = www-data listen = /run/php/php7.0-fpm.sock
Кроме этого, можно обратить внимание на параметры, определяющие количество процессов, которые будут обслуживать PHP-запросы.
Pm = dynamic pm.max_children = 15 pm.start_servers = 6 pm.min_spare_servers = 2 pm.max_spare_servers = 6
На чуть загруженных серверах может не хватать количества процессов. В логах об этом сразу скажут.
# cat /var/log/php7.0-fpm.log WARNING: server reached pm.max_children setting (5), consider raising it
Еще важный файл php.ini. Параметров там много, и можно рассказывать долго. Но изначально следует включить сжатие, установить максимальный размер файла на аплоад, подключить mail(), сессии и очень желательно включить акселератор OPcache.
# nano /etc/php/7.0/fpm/php.ini zlib.output_compression = On upload_max_filesize = 2M sendmail_path = sendmail -t -i session.save_path = "/var/lib/php/sessions" opcache.enable=1 opcache.memory_consumption=128 pcache.max_accelerated_files=2000
Обязательно проверяем права доступа на /var/lib/php/sessions, чтобы туда мог писать nginx, иначе сессии не будут образовываться. Перезапускаем.
# service php7.0-fpm restart
Теперь перенос сайта. Если переносим с другого хостинга, то там создаем бэкап. Если есть хостинговая веб-панель, то можно использовать ее возможности. Или вручную:
# tar -zcvf backup.tar.gz /var/www
И на новом месте распаковываем:
# tar -zxvf backup.tar.gz /var/www
Но для сайта нам нужна СУБД.
Ставим MySQL
C MySQL все очень просто. Вводим
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
- Tutorial
Добрый день.
Так уж сложилось, что последнее время пришлось достаточно часто менять VDS провайдеров, и каждый раз приходится заново настраивать систему, поэтому решил написать краткий конспект по настройке. Все нижеописанное корректно работает на ОС Linux Ubuntu server 12.04 LTS. В этой статье я опишу как установить и произвести первичную настройку nginx+apache2, eaccelerator, memcached, fure-ftpd, php, mysql, phpmyadmin а также панели управления игровыми серверами - open game panel.
Начну с краткого описания некоторых терминов.
VDS - он же VPS - Virtual Dedicated(Private) сервер - виртуальная машина, сервер - нужен он, когда обычного хостинга мало, а выделенный сервер дорого. На современном рынке провайдеров, которые предоставляют услуги по аренде VDS великое множество, и у каждого есть свои плюсы и минусы, но их мы обсуждать не будем.
Тип виртуализации - говоря простым языком это то, каким способом организована виртуальная машина. В настоящее время наиболее распространены OpenVZ и XEN. Плюс OpenVZ - низкая стоимость, так как в этом типе виртуализации для всех виртуальных машин запущенных на аппаратном сервере используется специально модифицированное ядро хост-системы. Минус этого типа виртуализации - невозможно менять параметры ядра ОС, также практически всегда присутствует оверселлинг (об это позже). А для серьезных проектов лучше использовать XEN или KVM виртуализацию - там гостевая ОС даже и не знает что она установлена на виртуальную машину, и с ОС можно делать практически все, чего душа пожелает, особенно на XEN-HWM и KVM.
Оверселлинг - провайдеры продают больше ресурсов, чем есть на самом деле. Работает это за счет того что клиенты редко используют ресурсы по тарифу на 100 процентов, но у недобросовестных провайдеров с завышенным коэффициентом оверселлинга могут наблюдаться проблемы, такие как крайне медленная работа машины или невыполнение скриптов по причине нехватки памяти. Возвращаясь к типам виртуализации на XEN и KVM оверселлинг практически невозможен технически.
Выбор хостинг-провайдера
Итак, вы решили купить услугу VDS. Как же следует выбирать провайдера. Начать следует с географии - где территориально будет располагаться ваш сервер.
Германия - плюсы: дешевые тарифы, быстрые каналы, безлимитный трафик, минусы - достаточно большая задержка до России - примерно 80мс, очень серьезно относятся к торрент трекерам, торрент клиентам, варезу и т.п.
Голландия, Канада - то же самое то и Германия, но немного дороже, но основной плюс - законодательство которое лояльнее относится к различным видам хранимой и передаваемой информации, за которую у нас по голове не гладят.
США - в большинстве своем считают трафик, большие пинги до России - в общем, не самый лучший вариант.
Россия, Украина - минимальные задержки до Российской аудитории, в большинстве случаев псевдобезлимитный трафик (снижение скорости после определенного порога или необходимость соблюдать пропорции входящего\исходящего Российского\зарубежного трафика), не самые надежные дата центры - практически в каждом периодически случаются массовые отключения сервиса на несколько часов, несмотря на три независимых электроввода, резервирование каналов интернет и дизель-генераторы.
Выбор типа виртуализации
Если позволяют ресурсы, то это однозначно KVM или XEN. Но не у всех провайдеров доступны эти типы виртуальных машин, да и денег оно стоит немного больших, нежели OpenVZ. Поэтому если ваш проект это некий сайт\два\десять с невысокой посещаемостью (примерно до 10000 уникальных хостов в день) и\или какой-нибудь ICQ чат, то OpenVZ для вас будет вполне достаточно.
Ну а если требуется выполнять какие-либо более ресурсоемкие задачи, такие как размещение игровых серверов или видеочаты лучше выбрать XEN | KVM, также эти типы виртуализации стоит выбирать, если есть необходимость создания VPN-туннелей. Здесь VPN поднять проще, чем на OpenVZ.
Настройка сервера
Далее буду рассказывать про разные фичи, которые я настраивал на своем сервере, какие-то могут быть вам полезны. Операционная систем, которую я использую – Ubuntu 12.04.1 LTS. Так как подавляющее большинство выполняющихся далее команд требуют root привилегий, а я человек ленивый то все действия я выполняю под рутом. Залогиниться сразу под рутом обычно нельзя, поэтому заходим под пользователем с правами sudo и выполняем команду sudo -sПересобираем ядро
Если вы выбрали OpenVZ, то можете смело пропускать эту часть статьи.
Данная процедура не даст ощутимого прироста производительности, и нужна эта процедура только для саморазвития и «потренироваться на будущее».
качаем исходники последней стабильной версии ядра с сайта kernel.org. На данный момент это версия 3.6.7
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.7.tar.bz2
Распаковываем архив
tar -xjf linux-3.6.7.tar.bz2
Устанавливаем необходимые для компиляции пакеты
aptitude update
aptitude install build-dep linux kernel-package
заходим в папку с исходниками и генерируем конфигурацию ядра. В нашем случае все будет проходить автоматически - в ядро будут включены только те модули, которые необходимы текущему железу. Если же вам хочется вручную сконфигурировать ядро, то прошу гуглить по запросу make config или make menugonfig.
cd linux-3.6.7
make localyesconfig
запускаем компиляцию ядра - процесс не быстрый идет от 15 минут до нескольких часов.
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
поднимаемся на каталог выше и устанавливаем пакеты
cd ..
dpkg -i linux-*.deb
Перезагружаемся и проверяем, что ядро встало.
reboot
uname -r
Вот и все, в вашей системе новое ядро.
Меняем часовой пояс и имя ПК
Если вы устанавливаете Ubuntu на выделенный сервер сами, то языковые и географические параметры системы вы задаете в ходе установки, но в случае с VDS у провайдера есть уже готовый образ системы, который он раскатывает на ваш сервер. И всем нам приятней видеть правильное для нашего часового пояса время на сервере.
Итак, установим часовой пояс, для этого в консоли выполним команду
dpkg-reconfigure tzdata
Появится псевдографический интерфейс в котором мы выберем наше расположение.
Если вдруг (ни разу еще такого не видел) есть расхождения по дате\времени, то выполним следующую команду, в которую подставим текущие дату и время
hwclock --set --date=”11/24/2012 16:19:55"
Чтобы изменить имя сервера, откроем файл /etc/hostname и заменим содержимое на желаемое имя сервера.
Устанавливаем nginx c бэкэндом apache2, PHP, MySQL, phpmyadmin
В этой части статьи мы установим и настроим веб-сервер, рассчитанный на большое количество соединений.
Сначала установим стандартный «детский» набор пакетов для веб сервера.
aptitude update
aptitude install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-certlibapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl phpmyadmin g++
Нас будут просить задать пароль от MySQL, потом спросят чем обрабатывать phpmyadmin - нужно ответить то апачем, и спросят пароль от MySQL для нужд phpmyadmin
На момент написания статьи phpmyadmin автоматически не прописывался в конфигурации apache2, вследствие чего по адресу адрес_сайта.зона/phpmyadmin мы видим ошибку 404, поэтому открываем файл /etc/apache2/apache2.conf и в конец дописываем строчку
Include /etc/phpmyadmin/apache.conf
Включаем модули apache2
a2enmod include
a2enmod rewrite
a2enmod suexec
a2enmod ssl
Рисуем дефолтный конфиг апача. Для этого открываем /etc/apache2/sites-available/default стираем в этом файле все и пишем следующее:
То, что указан восьмисотый порт - это не ошибка, на стандартном для http восьмидесятом порту будет висеть nginx. Параметр DocumentRoot по неизвестным мне причинам большинство советуют указывать /var/www/…, на мой же взгляд логичнее держать важные данные в /home - проще будет настраивать резервное копирование.
Правим файл /etc/apache2/ports.conf
NameVirtualHost *:800
Listen 800
Копируем файл /etc/apache2/sites-available/default в /etc/apache2/sites-enabled/адрес_сайта
Директории и файлы с конфигами лучше называть по адресам сайтов т.к. в будущем это упростит поиск нужных конфигов\директорий, например /home/www/tweedle.ru /etc/apache2/sites-enabled/tweedle.ru
Правим файл /etc/apache2/apache2.conf - меняем значение параметра MaxClients на 20, сделать это надо в двух местах.
Прописываем репозиторий nginx, для этого откроем файл /etc/apt/sources.list и допишем в конец
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Устанавливаем nginx и apache2-mod-rpaf
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
aptitude update
aptitude install libapache2-mod-rpaf libpcre3 libpcre3-dev nginx
Далее настроим nginx, для этого открываем файл /usr/local/etc/nginx/nginx.conf и заменяем содержимое следующим
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_proxied any;
gzip_min_length 300;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
в том случае если роль веб-сервера является основной ролью вашего сервера и\или сайты имеют большую посещаемость значение worker_processes выставляем равным количеству доступных ядер ЦП, в противном случае одного процесса будет вполне достаточно
создаем конфиг для нашего сайта /etc/nginx/sites-enabled/адрес_сайта.зона
server {
listen 80;
server_name адрес_сайта.зона;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx|mp3|bsp)$ {
root /home/www/адрес_сайта.зона/;
index index.php index.html index.htm;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:800/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
устанавливаем memcached, никаких дополнительных настроек для него не требуеся
aptitude install memcached
устанавливаем eAccelerator
aptitude install php5-dev
aptitude install make
cd /tmp/
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
теперь, прежде чем мы скомпилируем eAccelerator, поправим один баг в коде, из за которого возникают всяческие проблемы, например перестает работать авторизация в phpmyadmin. Откроем файл eaccelerator.c, строка 867. Заменим if (php_check_open_basedir(realname TSRMLS_CC)) { на if (php_check_open_basedir(p->realfilename TSRMLS_CC)) { Сохраняемся и продолжаем…
phpize
./configure --enable-eaccelerator=shared
make
make install
Создаем папку для кэша, и даем на нее права
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Настраиваем php для работы с eaccelerator, для этого откроем файл /etc/php5/apache2/php.ini и допишем сверху
extension = "eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
Перезапускаем сервисы, убедившись что в /home/www/имя_сайта лежит сайт
service apache2 restart
service nginx restart
service memcached restart
Теперь мы имеем достаточно шустрый веб-сервер, который потребляет меньше 100Мб оперативной памяти. Todo: Есть один недочет – phpmyadmin, который доступен по адресу адрес_сайта.зона/phpmyadmin отображается некрасиво(без картинок), временное решение, которое я могу предложить – открывать phpmyadmin по адресу адрес_сайта.зона :800/phpmyadmin
Установка FTP сервера pure-ftpd с поддержкой MySQL
ФТП сервер пригодиться нам для простого и быстрого и удобного переноса информации с сервера и на сервер.
Устанавливаем pure-ftpd с поддержкой mysql
aptitude install pure-ftpd-mysql
Создаем группу для пользователей ftp и пользователя в ней – это делается для того чтобы впоследствии было удобней следить за тем, что происходит на вашем сервере.
groupadd -g 4001 ftpusers && useradd -u 4001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpusers ftp
Создадим базу данных в MySQL для pure-ftpd. Это можно сделать и через phpmyadmin, но великим и могучим копипастом это быстрее сделать в консоли
mysql -u root –p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO "pureftpd"@"localhost" IDENTIFIED BY "пароль_для_pureftpd";
FLUSH PRIVILEGES;
Создадим таблицу, в которой будут храниться учетные записи фтп.
USE pureftpd;
CREATE TABLE ftpd (User varchar(16) NOT NULL default "",
status enum("0","1") NOT NULL default "0",
Password varchar(64) NOT NULL default "",
Uid varchar(11) NOT NULL default "-1",
Gid varchar(11) NOT NULL default "-1",
Dir varchar(128) NOT NULL default "",
ULBandwidth smallint(5) NOT NULL default "0",
DLBandwidth smallint(5) NOT NULL default "0",
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default "*",
QuotaSize smallint(5) NOT NULL default "0",
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)) ENGINE=MyISAM;
quit;
Теперь настроим pure-ftpd, для этого откроем файл /etc/pure-ftpd/db/mysql.conf и сделаем его содержание таким:
MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword пароль_для_pureftpd
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
Теперь сделаем так, чтобы домашняя директория пользователя автоматически создавалась если она не существует
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Следующая команда не даст пользователям доступа к директориям, которые выше чем их домашний каталог.
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
И наконец отключим проверку хостнеймов пользователей – это значительно ускорит процесс авторизации и немного сократит количество трафика.
echo "yes" > /etc/pure-ftpd/conf/DontResolve
Перезапустим сервис чтобы применить настройки
service pure-ftpd-mysql restart
Теперь создадим пользователя www-ftp с GID и UID 4002, домашней директорией /home/www лимитами скорости загрузки\отдачи по одному мегабайту в секунду и без ограничений по занимаемому дисковому пространству. Приведу пример с использованием командной строки, вы же можете использовать и «выполнить SQL-запрос» в phpmyadmin, или даже воспользоваться «добавить строки» в phpmyadmin – но в этом случае нужно не прошляпить то, что пароль в БД храниться в виде его md5 хеша, и в поле password выбрать «Функция» md5
mysql -u root -p
USE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ("www-ftp", "1", MD5("пароль_для_пользователя_www-ftp"), "4002", "4002", "/home/www", "1024", "1024", "Комментарий", "*", "0", "0");
quit;
Вот и все, можно пробовать подключаться к вашему фтп серверу по адресу адрес_сайта.зона c логином www-ftp и указанным паролем.
Если вы собираетесь передавать по протоколу ФТП данные, которые не должны попасть в чужие руки, то не лишним будет настроить TLS шифрование. Для этого выполним следующее:
echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/
Устанавливаем пакет openssl, если он не установлен и генерируем сертификат.
aptitude update
aptitude install openssl
openssl req -x509 -nodes -days 3652 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Отвечаем на вопросы – эти данные будут отображаться в созданном сертификате.
Устанавливаем права доступа на сертификат и перезапускаем pure-ftpd
chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart
Вот и все. Помните, что для того чтобы данные шифровались необходимо включить tls шифрование со стороны клиента, и далеко не все фтп клиенты поддерживают его.
Установка комплекса управления игровыми серверами – Open Game Panel
Open game panel – он же OGP - единственное из мною найденных бесплатное решение, которое позволяет осуществлять мониторинг и управление разнообразными игровыми серверами. На момент написания статьи поддерживаются более 50 разных игр с серверами на платформах Windows и Linux. В том числе такие популярные как Counter-Strike (2D, 1.5, 1.6, Source, GO) и Minecraft(Vanilla, Bukkit)
Состоит комплекс из двух частей – веб-морды, через которую осуществляется мониторинг и управление(фронтэнд) и агента – сервиса, который висит на машинах с игровыми серверами и передает логи в фронтэнд, а команды из фронэнда игровым серверам.
Первым делом регистрируемся на http://www.opengamepanel.org – для установки это не обязательно, но на сайте можно скачать дополнительные модули(например систему биллинга), темы и прочие плюшки.
Устанавливаем необходимые пакеты
aptitude update
aptitude install libxml-parser-perl libpath-class-perl libarchive-any-perl screen
Если система x64, то дополнительно устанавливаем ia32-libs
aptitude install ia32-libs
Скачиваем сам агент
wget "http://www.opengamepanel.org/downloads/ogp_agent_nightly.tar.gz" -O agent.tar.gz
tar xf agent.tar.gz
cd agent
Устанавливаем. Внимание – я предварительно создал пользователя в системе, включил его в группы root и sudo и создал ему домашний каталог – это все необходимо для того чтобы агент корректно работал.
bash ./install.sh
У нас будут спрашивать имя пользователя под которым будет крутиться сервис – нужно указать того, про которого я говорил в предыдущем пункте, его пароль, директорию в которой будут находиться исполняемые файлы(/home/имя пользователя/OGP) и попросят ввести ключ агента – это не пароль пользователя, а ключ управления агентом, он нам пригодится позже, и еще нас попросят согласиться с правилами политики Steam.
После установки залогиниваемся под созданным пользователем и запускаем
cd /home/имя пользователя/OGP
perl ./ogp_agent.pl --log-stdout
Нам должны написать что все в порядке, процесс запущен и слушает на 12679 порту.
Нажимаем ctrl+c, логинимся под рутом и прописываем – это нужно для того чтобы сервис стартовал при запуске ситемы
update-rc.d ogp_agent defaults
Если серверов (выделенных или виртуальных) несколько, то агент необходимо установить на каждом
Теперь установим веб-интерфейс от OGP, скачиваем архив и распаковываем
wget "http://www.opengamepanel.org/downloads/ogp_web_nightly.tar.gz" -O upload.tar.gz
tar xf upload.tar.gz
Перемещаем содержимое папки upload в папку, в которой у нас лежит сайт
В браузере открываем адрес_сайта.зона/папка_с_ogp и выбираем язык, если вдруг насм говорят что не хватает прав на создание каких-либо файлов или папок то выдаем права 777 chmodом, для этого зайдем в папку с ogp и выполним команду.
chmod 777 –v –R *
Добавить метки
Настраивать cs сервер на vds, как и любой другой, следует привычным способом, как это делают все администраторы, работая с физическими серверами – разницы, принципиальной, нет никакой. Единственное, что обязательно советуют сразу после установки проделать, это добавить новоиспеченный сервер в мониторинг. Для этого нужно всего лишь в ISPmanager перейти в «Инструментах» на вкладку «Сервисы», где следует добавить новый сервис с названием «SAMP», именем процесса «samp02xsvr», запускающей командой «cd/hоme/имя пользователя/dаta/servеr/ ; ./sаmp02Xsvr &». Режим работы отмечается как «самостоятельный», а тип сервиса, как – «неизвестный». Также стоит проставить галочки в пунктах «Мониторинг» и «Автозагрузка».
Как настраивается сервер VDS?
В определенный момент развития бизнеса или любого другого интернет-проекта, его владельцы становятся перед фактом, что традиционный хостинг с поставленными задачами уже не справляется – необходим виртуальный сервер vds. Подобный частный виртуальный сервер дает возможность получать требуемые ресурсы вне зависимости от загруженности сервера клиентами, работать стабильно и реализовывать весь необходимый функционал.
Начало работы с VDS-сервером
Безусловно, получить собственный vds windows сервер можно исключительно после оформления соответствующих отношений с хостером, выбора тарифа и пакета услуг, а также их оплаты, если начинается сотрудничество не с тестировочного режима. Фактически придется vds сервер купить, скачать для него все необходимые клиенты и системы, после чего нужно его установить и заняться его качественной настройкой. Разумеется, для осуществления всего этого комплекса мероприятий арендатору необходимо иметь в штате соответствующей квалификации администратора и веб мастера, либо же (а существует и такая возможность) заказать услуги у самого хостера или работающей в этой области другой ИТ-компании, которые могут без вашего непосредственного участия произвести такие мероприятия, как установка и настройка vds сервера.
Понятие настройки VDS-серверов
Очень часто виртуальный сервер vds предлагается уже с предустановленной на него ОСью, что существенно облегчает всю процедуру в целом, правда, не подходит для клиентов со специфическими требованиями к системам. Все этапы, которые предусматривает настройка vds сервера, сводятся к комплексной настройке абсолютно всего используемого программного обеспечения, а именно:
- систем управления проектами;
- серверов баз данных;
- приложений, сформированных на основе общепринятых ЯП (perl, php, ruby, python);
- почтового сервера;
- системы контроля версий;
- оповещений о сбоях;
- интерапторов скриптовых языков;
- web-сервера;
- системы резервного копирования.
Исходные данные для настройки
После того, как вам удалось vds сервер купить, от хостера вы получаете IP-адрес своего сервера, логины и пароли администрирования для панели, а также для самого VDS, адрес, по которому панель управления может быть найдена. Пользователи в зависимости от выбранной ОС получают права администратора или root-а, в результате чего полную настройку могут осуществлять переходом по иконке «На сервер».
Настройка vds windows сервер
При необходимости подтверждается процедура лицензирования и сертификации безопасности, указывается часовой пояс и доменное имя, выбираются необходимые для работы с журналом настройки, а также указывается пользовательский пароль. Для привязки домена к серверу следует создать новое имя на панели управления, после чего получается доступ к настройкам для домена. Далее же прогулка по меню раздела «Настройки» в панели управления позволит вам полностью подстроить VDS-сервер под свои нужды.