Правильная настройка VDS сервера. Правильная настройка VDS сервера Исходные данные для настройки




  • 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 стираем в этом файле все и пишем следующее:
ServerAdmin твой@e-mail DocumentRoot /home/www/адрес_сайта.зона Options FollowSymLinks AllowOverride All Options Indexes FollowSymLinks MultiViews AllowOverride All Order deny,allow deny from all allow from 127.0.0.0/255.0.0.0::1/128 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel crit CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride All Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0::1/128

То, что указан восьмисотый порт - это не ошибка, на стандартном для 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 * Добавить метки

Данное руководство описывает полный процесс настройки VPS под ваши сайты, на вашем виртуальном сервере под Linux, используя Apache, PHP 7, MySQL, phpmyadmin, vsftpd как FTP, и другие мелкие утилиты. Все что я нашел в интернете или не полное, или местами не подходило к современным реалиям. Я переносил с обычного виртуального хостинга свой сайт, так как уперся в ограничения большинства хостеров.

Если вы планируете продавать хостинг или устанавливать панель управления (ISP Manager, cPanel , Plesk и т.п.), данный метод настройки не подойдет. Настройки для такого развертывания иные. PHP7 имеет ряд серьезных преимуществ в быстродействии и оптимизации по сравнению с PHP 5. Мои проекты на WordPress, к примеру, заметно быстрее работают. Важно знать: если у вас не сильно известная CMS с последними обновлениями, а какой-то самописный проект, не оптимизированный под PHP7, то возможны нестыковки.

Я использую в данном руководстве Ubuntu Server 14.04.4 LTS, также все здесь описанное подойдет для VPS\VDS на других Debian — подобных дистрибутивов. Подразумевается, что вы имеете базовые знания Linux и умеете работать с терминальной консолью. Я частично поясню азы, но все же.

Настраиваем

Итак, у нас есть свежеустановленная на VPS система и доступ по SSH. Логинимся на сервер под рутом.

1. Создадим себе пользователя. Работать под рутом без надобности — признак дурачины.

Adduser user

Где user — меняем на ваш будущий логин. Отвечаем на вопросы системы, пароль придумываем сложный, ваш логин будет основным для удаленного управления системой, рут мы в дальнейшем отключим от удаленного терминала из соображений безопасности.

2. Добавляем нашего созданного пользователя в группу sudo, дабы выполнять команды из-под рута:

Usermod -a -G sudo user

Плюс, добавим самого себя в группу администраторов:

Sudo usermod -aG adm YourUserName

3. Выходим из системы (logout) и логинимся под своим новым созданным пользователем на SSH. С этого момента, если нам нужно выполнить команду от имени рута, мы используем операнд sudo перед остальными операндами команды (примеры ниже).

4. Стоит вам только опубликовать ваш сайт-адрес сервера VPS, как всяческие хакинговые боты начнут стучаться к вам на терминальный порт 22. Поэтому, обезопасим терминал VPS, сменив порт с 22 на чтото другое. Как новый порт, вводим любое число от 1 до 65535. Нельзя использовать для этого порты 80, 443, 3306, 22, 21 и 8080. Они заняты под другие сервисы нашего VPS.

Sudo nano /etc/ssh/sshd_config

Nano — консольный «блокнот». Наверняка вы уже с ним знакомы, но я напомню базовое управление: Ctrl+X — выход, Ctrl+O — сохранение, Ctrl+W — поиск, стрелки — перемещение курсора.

Ищем в открывшемся файле строку «Port 22», обычно она прямо сверху. Изменяем 22 на выбранный вами порт. Далее проматываем кнопкой PgDn до самого низа файла и дописываем каждую команду с новой строки:

AddressFamily inet PermitRootLogin no AllowUsers user

Первая команда ограничивает подключения только стандартом IPv4, отключая не нужный IPv6. Вторая запрещает логиниться в терминал под рутом. Третья запрещает вообще кому либо логиниться, кроме вас — подставляйте свой логин вместо user.

Сохраняем и закрываем, как я показывал выше. Впредь все редактирования файлов будут проходить по такому сценарию. Перезапустим удаленный терминал, чтобы настройки применились:

Sudo service ssh restart

5. Разлогинтесь из терминала (logout), и подключитесь к серверу заново, используя новый порт.

6. Обновим источники приложений и сами приложения:

Sudo apt-get update && sudo apt-get upgrade

Соглашаемся на установку обновлений нажав Y и Enter.

7. Если у вас не самой последней версии система, имеет смысл обновить дистрибутив до последнего подрелиза (необязательный шаг):

Sudo apt-get dist-upgrade

8. Ускоряем общую работу системы — Prelink и Preload. Prelink нужен для создания статичных адресов для библиотек, Preload — это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и предзагружает их в память, пока система простаивает.

Sudo apt-get install prelink sudo apt-get install preload

Sudo nano /etc/default/prelink

Откроется знакомый Nano, и там измените строку с PRELINKING=unknown на PRELINKING=yes. Не забываем сохранять перед закрытием, вы же запомнили уже, ага? Следующий шаг — добавляем в планировщик cron ежедневный запуск:

Sudo /etc/cron.daily/prelink

9. C системными предустановками пока закончим, ставим апач:

Sudo apt-get install apache2

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

Sudo apt-get install mysql-server

Установка может спросить адрес вашего сервера, указываем localhost, если вы пока не назначили внешний домен. Также задаем главный пароль базы данных, сложный, буквы-цифры-разный регистр. Если вы еще не догадались, напоминаю — все логины-пароли нужно записать и хранить в безопасном месте.

MySQL сервер последних версий корректно настроен для работы в нашем окружении, принимает запросы только от localhost. Поэтому, не лезем в конфиг.

11. Ставим php7. На момент написания статьи, файловые репозитории Ubuntu не содержат PHP7, поэтому нам нужно будет добавить неофициальный репозиторий и из него поставить php7:

sudo add - apt - repository ppa : ondrej / php

По окончанию добавления, спросит у вас окончательного согласия, подтверждаем на Y и Enter. Далее обновим список приложений и установим нужное:

Sudo apt-get update sudo apt - get install php7 . 0 - cli php7 . 0 - common libapache2 - mod - php7 . 0 php7 . 0 php7 . 0 - mysql php7 . 0 - fpm php7.0-mbstring php7.0-gd php7.0-curl

Набор модулей тут мной определен эксперементально. Во всех источниках указаны разные, где-то нет mbstring, но он нужен для phpmyadmin, админки для MySQL. Где-то отсутствует curl и gd, но они нужны для капчи и некоторых плагинов CMS. В любом случае, дополнительные модули можно всегда доставить после.

12. Поднастроим Apache. Перейдем (cd) в каталог с настройками апача:

Cd /etc/apache2

Отредактируем главный конфигурационный файл:

Sudo nano apache2.conf

Уже установленные переменные не трогаем, проматываемся в конец файла. Там добавляем каждую команду с новой строки:

ServerName localhost ServerSignature Off

Это задаст хост по умолчанию для самоопределения апача (localhost) и отключит отображение версии системы и сервера на страницах ошибок. Это небезопасно. Как всегда, сохраняем, закрываем.

13. Поднастроим PHP.

Cd /etc/php/7.0/apache2 sudo nano php.ini

Многие скрипты используют короткий тэг открытия, вместо полного, поэтому включим эту опцию, заменив Off на On (отсюда и далее указываю то, как должно быть, а не как было):

Short_open_tag = On

Раздвинем ограничения по памяти и загрузке файлов:

Memory_limit = 128M post_max_size = 64M

14. Установим phpmyadmin. Это графическая панель управления базами данных MySQL. Первый раз когда я его ставил из apt репозитория, он не взлетел. Оказалось, репозитории ubuntu не содержат последней версии phpmyadmin, которая понимает PHP7, так как и самого PHP7 в этих репозиториях тоже нет.

Лучше всего устанавливать в /usr/share:

Cd /usr/share

Качаем, на момент написания, последняя версия 4.6.0:

Sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.zip

Установим unzip, он понадобится:

Sudo apt-get install unzip

Разархивируем:

Sudo unzip phpMyAdmin-4.6.0-all-languages.zip

Переименуем папку:

Sudo mv phpMyAdmin-4.6.0-all-languages phpmyadmin

Прилепим права:

sudo chmod - R 0755 phpmyadmin

Отредактируем конфиг-файл апача, чтобы он знал, гдеи скать наш phpmyadmin:

Sudo nano / etc / apache2 / sites - available / 000 - default . conf

После «DocumentRoot /var/www/html» добавляем строки:

Alias / phpmyadmin "/usr/share/phpmyadmin/" < Directory "/usr/share/phpmyadmin/" > Order allow , deny Allow from all Require all granted

Все готово, перезапустим апач:

Sudo service apache2 restart

15. После всех манипуляций, у нас будет тестовая страница апача открываться в браузере по адресу вашего сервера, а phpmyadmin будет доступен по адресу http://вашсайт/phpmyadmin . Логин туда root, пароль — указанный при установке MySQL.

16. Создадим старницу phpinfo для проверки работы сервера:

Cd var/www/html sudo mkdir phpinfo cd phpinfo sudo nano index.php

Вставляем такой код в Nano и сохраняем:

Теперь по адресу http://вашсайт/phpinfo должна открываться сервисная страница с информацией о PHP и подключенных модулях, например:

Если все работает и отображается, скройте phpinfo, изменив название этой папки на какую-нибудь только вам известную билиберду:

Cd /var/www/html sudo mv phpinfo phpinfo312341

Прямой доступ по известному пути — дыра в безопасности VPS.

17. Поставим FTP. Используем vsftpd:

Sudo apt-get install vsftpd

Правим конфигурацию:

Sudo nano /etc/vsftpd.conf

Убедитесь, что параметры в этом файле соответствуют приведенным ниже. Если параметры закомментированы знаком #, раскомментируйте его, удалив #. Если параметра нет, добавьте вручную в конец файла:

Anonymous_enable=No local_enable=YES write_enable=YES

Перезапустим фтп:

Sudo service vsftpd restart

После этого, можно логиниться на сервер по FTP, используя логин и пароль от системы. C этим конфигом, у вас будет доступ ко ВСЕЙ операционной системе. Если вам нужно ограничить доступ к папкам, поищите в интернете руководства.

18. Резервное копирование. Альфа и Омега администрирования VPS. Бэкапы надо делать хотя бы раз в неделю. Следующий скрипт создает архив с бэкапом папок /var/www (где обычно лежат сайты), /etc, /var/log и /root. Также бэкапит все базы MySQL. Скрипт следует исполнять от имени рута из папки, в которой будут хранится бэкапы. Также, желательно внести файл скрипта в cron. Собственно, скрипт:

#!/bin/bash USER=root #юзер базы данных PASSWORD=password #пароль BACKUP=/media/Backup #куда сохранять бэкапы LOG=/var/log # директория для чистки старых логов OLD=30 # сколько дней хранить бэкапы (более старые будет удаляться) PREFIX=work # если несколько серверов - используйте разные префиксы, чтобы не путаться DATE=`date "+%Y-%m-%d"` echo "Backup database to $BACKUP" mkdir $BACKUP/$DATE.sql cd $BACKUP/$DATE.sql for i in `mysql -u $USER -p$PASSWORD -e"show databases;" | grep -v information_schema | grep -v Database`; do mysqldump -u $USER -p$PASSWORD $i > $DATE-$i.sql; done cd .. tar -cjf $BACKUP/$DATE-sql-$PREFIX.tar.bz2 ./$DATE.sql rm -rf ./$DATE.sql echo "Backup files to $BACKUP" tar -cjf $BACKUP/$DATE-files-$PREFIX.tar.bz2 \ /var/www/ \ /etc/ \ /var/log/ \ /root/ \ --exclude=$BACKUP echo "Deleting old backups and logs from $BACKUP & $LOG" find $LOG -type f \(-name "*.gz" -o -name "*.1*" \) -exec rm "{}" \; find $BACKUP -mtime +$OLD -exec rm "{}" \;

Обратите внимание, верхние несколько строчек скрипта нужно изменить в соответствии с вашей конфигурацией MySQL.

Допустим, у нас в корне будет папка /backup и в ней будет и скрипт, и сами резервные копии. Переходим в корень файловой системы:

Cd / sudo mkdir backup cd backup sudo nano start.sh

И вставляем туда скрипт выше. Сохраняем, назначаем его исполняемым:

Sudo chmod +x start.sh

Теперь, командой:

Sudo ./start.sh

Мы запустим процесс бэкапа. Для среднего сайта на средней мощности VPS это занимает 5-10 минут. После окончания процесса, в папке /backup будут несколько архивов с резервными копиями. Как я говорил выше, лучше всего этот скрипт запихнуть в cron. Погуглите, как это сделать.

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

Полезные утилиты

Стоит упомянуть некоторые полезные утилиты, которыми я пользуюсь в администрировании, и которые могут пригодиться вам.

Это командная утилита для администрирования WordPress из терминальной консоли Linux. Умеет очень много, бэкапить, копировать данные в базе данных, отключать и включать плагины и так далее. Очень полезно, в случаях если у вас конфликт плагинов, или вы где-то накосорезили и админка сайта у вас отвалилась. Подробнее .

Multitail

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

Полный аналог «Диспетчера задач» из Windows для терминальной консоли. Очень полезная вещь для мониторинга процессов, памяти, загрузки и управления процессами. Ставиться командой:

Sudo apt-get install htop

И вызывается (кто бы думал) командой:

Let’s Encrypt

Бесплатный сервис для выдачи SSL сертификатов. Отличный вариант для перевода вашего сайта на HTTPS. Больше в моей отдельной статье .

Услуги

Если для вас все это сложно, вы не уверены в себе, или хотите дополнительной поддержки, то я готов взяться за перенос\установку вашего проекта на VDS\VPS или выделенный сервер. Более 5 лет опыта в администрировании сетевых и веб-проектов. В реальной жизни работаю системным администратором. Первичная консультация бесплатно! Свяжитесь со мной удобным для вас способом через раздел .

Здравствуйте! В этом уроке, я покажу, как установить CMS Joomla, на сервер VDS/VPS, управляемый из панели ISPmanager.

Примечание: Панель ISPmanager очень удачный программный продукт, созданный для управления веб-серверами, объединяя в едином интерфейсе, управление доменами, базами данных, почтовыми службами. А также управлять пользователя и организовывать многоуровневую систему прав пользователей.

В данной статье установка продемонстрирована работой на ISPmanager Lite версия 5.8.

Этапы установки Joomla 3 на VDS/VPS из ISPmanager

  • 1: Добавление домена;
  • 2: Создание базы данных;
  • 3: Закачка дистрибутива Joomla на сервер;
  • 4: Инсталляция Joomla с переводом.
  • 5: Проверка результата установки, авторизация в панели администрирования.

Пункт 1: Добавление домена

Меню рабочих вкладок видим слева. Вверху этого меню, кнопки управления меню: его можно раскрыть или закрыть, сделать избранное меню из наиболее используемых вкладок, все вкладки разбиты на группы, каждая группа имеет понятное название.

Домен нужно добавить на вкладке «WWW домены», группа «Домены».

На открытой вкладке заполняем все поля.

На фото вы видите, что сервер настроен с возможным включением защиты от DDoS атак. Вряд ли имеет смысл включать данную защиту на нерабочем сайте.

Итог: Домен с WWW добавлен. Сервер автоматом создал домен без WWW, что можно проверить на вкладке «Домены».

Примечание: Создание почтового домена не влияет на работу сайта, поэтому оставим эту тему для других статей.

На этом этапе важно решить и выбрать для сайта веб-сервер HTTP. Важно, чтобы в работе был задействован веб-сервер Apache. В этом случае вы сможете использовать SEO настройки Joomla и использовать файл htaccess. для управления url адресами сайта.

Есть мнение, что для CMS Joomla предпочтение в выборе веб-серверов ранжируется так:

  • UNIX\Apache\Fast CGI\eAccelerator (самая высокая скорость в сочетании с удобной работой).
  • UNIX\Apache\Fast CGI (тоже, но более доступна).
  • UNIX\Apache\mod_php (неудобная работа с правами CHMOD).
  • UNIX\Apache\CGI (не максимальная скорость, зато удобство работы и совместимость со всеми расширениями Joomla).

На моем сервере нет Fast CGI, поэтому я использую Apache\CGI. Данная настройка сервера, позволяет включить режим сжатия и режим кэширования. Они нужны для ускорения работы сайта. Сразу включим режим сжатия (рекомендована 5-я степень сжатия) и включим кэширования на срок 7 дней.

Пункт 2: Создание базы данных сайта Joomla

База данных в панели ISPmanager создается на вкладке «Базы данных», группа «Инструменты». На вкладке есть кнопка «Создать».

Обязательно, в целях повышения безопасности сайта, создаем нового пользователя для базы данных. Если у вас несколько сайтов и вы root пользователь VDS сервера, вы сможете управлять сразу всеми базами данных своих сайтов из панели phpmyadmin, или управлять каждой отдельной базой данных сайта, входя в phpmyadmin под логином отдельного пользователя этой базы данных.

Создаваемая база данных должна иметь три обязательных параметра, которые нужно зафиксировать: имя базы данных, имя пользователя БД, пароль доступа, а также расположение базы данных на этом сервере. Обычно, расположение сервера баз данных, local host. Для проверки его можно увидеть в столбце «Сервер» в списке (таблице) созданных баз данных.


class="eliadunit">

Пункт 3: Закачка дистрибутива Joomla на сервер

В прошлом уроке мы закачивали Joomla на FTP, используя FTP клиент . Здесь, для примера, закачку дистрибутива Joomla на сервер, проведем через файловый менеджер сервера.

К сожалению, я не смогу показать работу файлового менеджера на этом сервере, он не подключен, но картинки найдутся.

Используя файловый менеджер сервера, для закачки папок и файлов Joomla в корневую папку сайта, распаковывать дистрибутив не нужно.

  • Открываем файловый менеджер сервера;
  • Открываем коневую папку сайта;
  • Закачиваем (кнопка «Скачать») zip архив Joomla;
  • Распаковываем архив (кнопка «Разархивировать»);
  • Удаляем zip архив (выделяем нажатием и удаляем кнопкой «Удалить»;
  • Проверяем права CHMOD на каталоги и файлы Joomla. Каталоги CHMOD=755, файлы CHMOD=644.

Пункт 3: Инсталляция Joomla с переводом

Инсталляция Joomla это прохождение трех или пяти окно установки системы в браузере. Три окна без перевода, пять окон с переводом на нужный язык. Здесь сразу переведем (локализуем) на русский язык.

Окно 1: Заполняем данные по сайту

Окно 2: Вписываем данные базы данных

Окно 3: Проверяем конфигурацию сервера на соответствие системе Joomla

Окно 4: Проходим установку, переходим к установке языка

Окно 5: Выбираем язык для панели для сайта

Окно 6: завершаем установку удалением каталога «Installation».

Переходим по вкладкам «Панель» и «Сайт». Проверяем перевод.

Настраивать 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-сервер под свои нужды.

Управление осуществляется с помощью командной строки. Для этих целей удобнее всего использовать бесплатную программу PuTTy . Она не требует установки: скачав и запустив утилиту, вы можете тут же подключиться к VDS по протоколу SSH, введя IP-адрес (номер порта по умолчанию - 22) и нажав на кнопку “Open”. После этого на экране появится окно консоли с приглашением к авторизации “login as:”. Введите root, нажмите “Enter”, далее укажите полученный при заказе услуги пароль и вновь подтвердите действие клавишей ввода. Теперь можно начинать работу.

Сама процедура настройки VDS представляет собой ввод в консоль текстовых команд, с помощью которых можно осуществлять практически любые операции над сервером. Ниже рассмотрена последовательность базовых действий, которые необходимо осуществить сразу после запуска виртуальной машины, а также пошаговая установка связки программного обеспечения , необходимого для размещения веб-сайтов. Примеры адаптированы для двух наиболее распространенных семейств Линукс: Debian (к ней относится, например популярный Ubuntu) и Centos (в него входит сам Centos, Fedora и ряд других).

Внимание! Для ОС версии Bitrix 6, устанавливаемой на VDS, установка LEMP не требуется!

Первоначальная настройка VDS

Обновление программного обеспечения

Начинать настройку VDS необходимо с глобального обновления. Запустить апдейт в Debian-подобных операционных системах можно следующим образом:

Apt-get update && apt-get upgrade

для Centos команда иная:

В процессе обновления вас спросят о том, хотите ли вы установить новые пакеты. Отвечайте утвердительно, используя клавишу Y, и подтвердите свой выбор, нажав “Enter”.

Добавление нового пользователя

Работать с сервером под учетной записью root настоятельно не рекомендуется - лучше всего создать нового пользователя и передать ему необходимые права. В Debian-подобных системах это делается командой:

Adduser username

где username следует заменить на желаемое имя пользователя. После ее выполнения вас попросят задать пароль, а затем предложат заполнить дополнительные поля (делать это необязательно - их можно оставить пустыми).

При работе с Centos также используется команда:

Adduser username

Однако пароль задается отдельно:

Passwd username

Передача привилегий root

После создания нового пользователя ему необходимо передать права суперадминистратора, в противном случае вы не сможете полноценно настроить VDS. Делается это через добавление вновь созданной учетной записи в соответствующую группу. Для Debian-подобных:

Gpasswd -a username sudo

для Centos-подобных:

Gpasswd -a username wheel

Управление SSH

В целях безопасности необходимо проделать ряд манипуляций с конфигурационным файлом sshd_config, который, как легко догадаться, отвечает за настройку удаленного подключения к серверу по SSH. В разных дистрибутивах Линукс для редактирования используются различные утилиты, соответственно, и команды для них будут несколько различаться. В Debian-подобных применяется nano:

Nano /etc/ssh/sshd_config

Для сохранения внесенных изменений необходимо нажать комбинацию клавиш Ctrl+X, затем Y и “Enter”. Centos имеет в своем составе редактор vi:

Vi /etc/ssh/sshd_config

Сохранение информации осуществляется командой:x, после чего необходимо нажать “Enter”.

В sshd_config следует запретить вход с помощью учетной записи root, заменив

PermitRootLogin yes

PermitRootLogin no

а также поменять порт SSH, используемый по умолчанию, заменив

например, на

Номер порта лучше выбирать из диапазона 49152-65535 - это позволит избежать возможных конфликтов с различными службами и сервисами Линукс. После описанных манипуляций необходимо перезапустить SSH. В Debian это делается так:

Service ssh restart

Systemctl reload sshd

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

Установка и настройка LEMP

Большинство современных CMS написаны на языке программирования PHP. Это означает, что для размещения практически любого сайта, независимо от типа и функционала, нам понадобится LEMP. Данная аббревиатура обозначает связку современного и очень быстрого веб-сервера Nginx, интерпретатора php-fpm и системы управления базами данных MySQL. Процедура установки достаточно проста и не займет много времени.

Установка Nginx

Начнем с установки Nginx. В Debian-подобных дистрибутивах это делается одной строчкой:

Sudo apt-get install nginx

после чего сервер будет автоматически запущен.

В Centos сперва необходимо добавить репозиторий EPEL:

Sudo yum install epel-release

и только после этого производить установку:

Sudo yum install nginx

Финальный этап - запуск Nginx:

Sudo systemctl start nginx

Установка MySQL

В Debian-подобных операционных системах сервис баз данных устанавливается командой:

Sudo apt-get install mysql-server mysql-client

В процессе вас попросят задать пароль администратора MySQL.

В Centos-подобных дистрибутивах вместо MySQL используется форк MariaDB, обладающий теми же функциональными возможностями. После его установки:

Sudo yum install mariadb-server mariadb

сервер баз данных необходимо запустить, а также добавить в список автозагрузки:

Sudo systemctl start mariadb sudo systemctl enable mariadb

Настройка MySQL

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

Sudo mysql_secure_installation

После запуска вас попросят ввести пароль администратора MySQL, который мы задали на предыдущем этапе, а затем зададут ряд вопросов, отвечать на которые необходимо кнопками Y (да) и N (нет), подтверждая выбор клавишей “Enter”:

  • Хотите ли вы сменить пароль? (Change the root password?) - Нет (N)
  • Удалить анонимных пользователей? (Remove anonymous users?) - Да (Y)
  • Запретить удаленную авторизацию с правами суперпользователя? (Disallow root login remotely?) - Да (Y)
  • Удалить тестовую базу данных? (Remove test database and access to it?) - Да (Y)
  • Перезагрузить таблицу привилегий? (Reload privilege tables now?) - Да (Y)

Добавление новой базы данных

Управление базами данных осуществляется через консоль MySQL. Чтобы в нее войти, необходимо ввести команду:

Для размещения динамического сайта необходимо создать базу данных, с которой будет работать движок. Обычно для каждого проекта создается отдельная БД и отдельный пользователь, который может ей управлять. Давайте создадим базу данных sitedb, пользователя site_user, а затем передадим последнему права на управление sitedb (вы можете заменить предложенные имена на любые другие).

Делается это следующим образом:

Создаем базу данных:

CRE ATE DATABASE sitedb;

Создаем пользователя (вместо password укажите уникальный пароль)

CREATE USER site_user@localhost IDENTIFIED BY "password";

Передаем права управления sitedb пользователю site_user:

GRANT ALL PRIVILEGES ON sitedb.* TO site_user@localhost IDENTIFIED BY "password";

Обновляем данные о привилегиях:

FLUSH PRIVILEGES;

По завершении всех операций выйдите из консоли MySQL:

Установка PHP

Важный этап настройки VDS - установка и конфигурирование интерпретатора PHP. Команды для разных дистрибутивов Линукс отличаются. Инсталляция в Debian осуществляется так:

Sudo apt-get install php5-fpm php5-mysql

В Centos - немного иначе:

Sudo yum install php php-mysql php-fpm

Конфигурация PHP

Первый шаг - редактирование файла php.ini. В Debian и Ubuntu он располагается здесь:

Sudo nano /etc/php5/fpm/php.ini

В Centos-подобных дистрибутивах - непосредственно в каталоге etc:

Sudo vi /etc/php.ini

В обеих системах сперва необходимо раскомментировать и поменять значение в следующей строчке:

;cgi.fix_pathinfo=1

Cgi.fix_pathinfo=0

Таким образом, мы закрыли важную уязвимость, с помощью которой злоумышленники могли бы получить несанкционированный доступ к сайту. На этом настройка интерпретатора на Debian завершена, осталось перезапустить PHP-процессор:

Sudo service php5-fpm restart

В Centos же необходимо отредактировать и файл www.conf:

Sudo vi /etc/php-fpm.d/www.conf

Здесь требуется найти строчку

Listen = 127.0.0.1:9000

и заменить на

Listen = /var/run/php-fpm/php-fpm.sock

Также меняем

Listen.owner = nobody listen.group = nobody

Sudo systemctl start php-fpm sudo systemctl enable php-fpm

Создание директории

Теперь необходимо создать каталог, в котором будут располагаться файлы вашего ресурса. В любой операционной системе Линукс это делается следующей командой:

Sudo mkdir /var/www/sitename.ru/public_html

В данном примере sitename.ru необходимо заменить на доменное имя сайта. Что касается файлов CMS, их следует загрузить в папку public_html. По завершении загрузки необходимо передать права управления веб-серверу. Здесь есть различия в именах, используемых для обозначения Nginx. Для Debian-подобных дистрибутивов команда будет выглядеть так:

Sudo chown -R www-data:www-data /var/www/html/*

В Centos иначе:

Sudo chown -R nginx:nginx /var/www/html/*

Добавление нового хоста Nginx

Последний этап настройки VDS для размещения сайта - добавление виртуального хоста Nginx. Нам достаточно отредактировать файл default. В семействе Debian это делается так:

Sudo nano /etc/nginx/sites-available/default

Sudo vi /etc/nginx/conf.d/default.conf

Открыв файл, удалите из него всю информацию, заменив на код, представленный ниже (вместо sitename.ru подставьте актуальное имя сайта), и сохраните результат:

Server { listen 80; server_name sitename.ru; server_name_in_redirect off; access_log /var/log/nginx/sitename.access_log; error_log /var/log/nginx/sitename.error_log; root /var/www/sitename.ru/public_html; index index.php index.html index.htm default.html default.htm; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Осталось перезапустить Nginx. Команда для дистрибутивов Debian:

Sudo service nginx restart

Sudo systemctl restart nginx

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