Как быстро настроить VPS в качестве web сервера.

Neron

Прописан на форуме
Пользователь
Регистрация
12/4/14
Сообщения
263
Симпатии
20
Возраст
26
#1
В этой мини статье я опишу своими словами как быстро и не имея специальных знаний перейти с хостинга на VPS.

Кому это пригодится:
  • тем, кому просто интересно
  • тем, кого достало анальное рабство постоянные ограничения со стороны хостера
  • тем, кто надумал перейти на VPS, но не хватает теоретических знаний
В этом примере я рассмотрю следующие моменты:
  • установка панели управления сервером
  • обновление php до версии 5.5.* с родным кешированием
  • замена mysql на mariadb
  • небольшие твики конфигов сервера
Что потребуется:
  • VPS c debian 7 и ssh доступом к нему
  • любой клиент ssh (putty для винды, в маке и линуксе уже есть терминал)
  • знание вашей cms (где лежат конфиги, как их править и т.п.)
  • умение пользоваться днс (настройка A записи)
  • базовые знания командной строки линукс
  • базовые знания английского языка
  • внимательность
Приступим. В качестве примера я буду использовать VPS c 1 cpu 1000mhz, 512 ram и 20gb ssd. Операционная система – debian 7 x86 (32-bit). Если вы предполагаете, что ваши сайты потребуют больших ресурсов (скажем больше 2gb памяти), то выбираем debian 7 x64.

Соединяемся по SSH с сервером от рута:
Код:
login: root
root@128.199.37.177's password:
Linux prcy 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
В первую очередь проверим обновления. Вводим по очереди это команды:
Код:
apt-get update
Код:
apt-get upgrade
Приступаем к установке панели управления VestaCP. Vesta – легкая, бесплатная панель от русских разработчиков с удобным и понятным интерфейсом. Не жрет ресурсы как ISP или Cpanel, имеет отдельный независимый пакет php и nginx (будет работать даже если вы накосячите где-то в конфигах) и имеет хорошую поддержку.
Код:
curl -O http://vestacp.com/pub/vst-install.sh
Код:
bash vst-install.sh –force
Когда сервер спросит:
Код:
Do you want to proceed? [y/n]):
Пишем y и энтер.
Указываем рабочий e-mail. Туда придёт пароль от панели.
Указываем хостнейм. Я указываю тот, что написан в квадратных скобках.
Код:
Do you want to proceed? [y/n]): y
Please enter valid email address: mr.devilstar@gmail.com
Please enter hostname [prcy]: prcy
Ждем. Установка с хорошим каналом и ssd дисками занимает минуты полторы-две:
Код:
=======================================================
-------------------------------
  https://128.199.37.177:8083
  username: admin
  password: GsdH73Gppe
-------------------------------
Congratulations,
you have successfully installed Vesta Control Panel.
Сохраняем пароль, запоминаем адрес для входа в панель.
Заходим по предложенному адресу, удостоверяемся что панель работает:

7fecccc7c6874c6292467220979fdd1f.png


Возвращаемся к ssh, смотрим какие версии php и mysql у нас установились:
Код:
root@prcy:~# php -v
PHP 5.4.34-0+deb7u1 (cli) (built: Oct 20 2014 09:46:02)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
root@prcy:~# mysql -v
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 62
Server version: 5.5.40-0+wheezy1 (Debian)
php 5.4.34, а бд – mysql 5.5.40.

Сейчас наша цель обновить php и заменить mysql на mariadb. Обновленный php позволит нам воспользоваться родным кешированием Zend OPcache, а mariadb жрет меньше памяти и работает быстрее (субъективно).

Открываем файл /etc/apt/sources.list в консоли, добавляем новые источники приложений:
Код:
nano /etc/apt/sources.list
Откроется файл. В самом конце добавляем четыре строки
Код:
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all
Жмем CTRL+O и энтер. Закрываем файл по CTRL+X.

Скачиваем ключи:
Код:
wget http://www.dotdeb.org/dotdeb.gpg
Устанавливаем ключи:
Код:
apt-key add dotdeb.gpg
Обновляем список доступных к установке приложений в соответствии с изменениями выше:
Код:
apt-get update
Запускаем обновление приложений:
Код:
apt-get upgrade
Во время обновления сервер спросит:
Код:
*** my.cnf (Y/I/N/O/D/Z) [default=N] ?
Отвечаем N

Запускаем обновление самой системы:
Код:
apt-get dist-upgrade
Во время обновления может появиться это:
bd4587e535c54ae3847b0a28701efbcf.png


Жмем q

Проверяем какую версию php мы имеем теперь:
Код:
root@prcy:~# php -v
PHP 5.5.18-1~dotdeb.1 (cli) (built: Oct 22 2014 18:15:17)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Видим 5.5.18 и родной кеш Zend OPcache.

Переходим к базам данных. Выполняем команды последовательно:
Код:
apt-get install python-software-properties
Код:
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
Код:
add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/10.1/debian wheezy main'
Обновляем список приложений:
Код:
apt-get update
И тут, по идее, мы должны начать установку базы данных apt-get install mariadb-server , но получаем ошибку:
Код:
root@prcy:~# apt-get install mariadb-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-10.1 (= 10.1.1+maria-1~wheezy) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Нам мешает mysql, который поставил веста. Варварским способом избавимся от него:
Код:
apt-get purge mysql* mariadb*
И запускаем установку базы:
Код:
apt-get install mariadb-server
Смотрим что у нас получилось:
Код:
root@prcy:~# service mysql status
[info] /usr/bin/mysqladmin  Ver 9.1 Distrib 10.1.1-MariaDB, for debian-linux-gnu on i686
Отлично!

Открываем файл /usr/local/vesta/conf/mysql.conf и смотрим какой там у нас пароль на бд поставила веста:
Код:
nano /usr/local/vesta/conf/mysql.conf
Видим - PASSWORD='jbknjknkj34'. Запоминаем, может пригодиться при обновлениях.

Ставим phpmyadmin для работы с базами данных:
Код:
apt-get install phpmyadmin
Проверяем:
128.199.37.177/phpmyadmin/
Работает J

Тюним php.ini
Код:
nano /etc/php5/apache2/php.ini
Находим и меняем параметры на эти (или на какие вам захочется):
Код:
max_execution_time =  180
upload_max_filesize = 64M
post_max_size = 64M
Сохраняем CTRL+O, энтер, CTRL+X

Перезапускаем апач:
Код:
service apache2 restart
Тюним апач, что бы не иметь проблем с жором памяти:
Код:
nano /etc/apache2/apache2.conf
Находим там блок:
Код:
<IfModule mpm_prefork_module>
    StartServers          8
    MinSpareServers       5
    MaxSpareServers      20
    ServerLimit         256
    MaxClients          200
    MaxRequestsPerChild 4000
</IfModule>
И приводим его к этому виду (эти параметры идеально подходят для vps с 512mb памяти. если памяти больше – можно и нужно ставить значения выше):
Код:
<IfModule mpm_prefork_module>
    StartServers          3
    MinSpareServers       3
    MaxSpareServers       9
    ServerLimit         256
    MaxClients           20
    MaxRequestsPerChild 3000
</IfModule>
Сохраняем, перезапускаем апач
Код:
service apache2 restart
С апачем закончили, тюним базу данных:
Код:
nano /etc/mysql/my.cnf
Находим и ставим следующие значения:
Код:
max_connections         = 50
connect_timeout         = 5
wait_timeout            = 30
max_allowed_packet      = 16M
thread_cache_size       = 128
sort_buffer_size        = 512K
bulk_insert_buffer_size = 16M
tmp_table_size          = 16M
max_heap_table_size     = 16M

myisam_recover          = BACKUP
key_buffer_size         = 8M
#open-files-limit       = 2000
table_open_cache        = 400
myisam_sort_buffer_size = 8M
concurrent_insert       = 2
read_buffer_size        = 512K
read_rnd_buffer_size    = 512K

innodb_buffer_pool_size = 8M
innodb_log_buffer_size  = 8M
innodb_file_per_table   = 1
innodb_open_files       = 400
innodb_io_capacity      = 400
innodb_flush_method     = O_DIRECT
Сохраняем, перезапускаем бд:
Код:
service mysql restart
Готово.

Приступаем к добавлению домена. Предполагается, что у вас стоит хороший днс, позволяющий управлять зоной (а вы умеете это делать). Допустим, у нас есть домен test.prcy. В управлении доменной зоной нам нужно задать для A записи IP вашего сервера. Допустим у сервера IP 128.199.37.177. Наши записи должны принять следующий вид:
a63bb1c2c07540d78f81adc6f17d7003.png

Добавляем домен в панель управления сервером.
128.199.37.177:8083/list/web/ (вкладка web), жмем «добавить домен»
Выставляем параметры как указаны на скриншоте:
http://webbiz.in.ua/img/15753b0abbf44ba38e0ae158708458c8.png

Почему я отключил поддержку почты? Потому что это лишняя и приличная нагрузка на сервер. В качестве почты для домена идеально подходит pdd.yandex.ru. Не поленитесь, настройте.

Создаем базу данных:
128.199.37.177:8083/list/db/ (вкладка DB), жмем «Добавить БД»
http://webbiz.in.ua/img/802e8b9f9ee543cbbeb2d07158f45058.png

Конектимся по фтп по данным, которые мы указывали когда добавляли домен.
596471c5a493413f9fe7d1a6d1fc5bb1.png

Наш сайт, который будет открываться по домену test.prcy, должен будет лежать в папке public_html

Давайте удалим содержимое public_html и закачаем туда какой-нить тестовый архив (zip).

Пока архив закачивается, возвращаемся к SSH и отключаемся:
Код:
logout
Логинимся в SSH по новой, но уже не от root пользователя, а от admin (это принципиально важно). Пароль тот же что и от панели vesta.

Ставим утилиту, что бы распаковать наш архив.
Код:
sudo apt-get install unzip
Когда спросит пароль, вводим пароль от панели vesta.

Переходим в директорию, куда закинули архив:
Код:
cd web/test.prcy/public_html
Распаковываем архив:
Код:
unzip yoo_peak_demo_package_j33.zip
Проверяем:
http://webbiz.in.ua/img/292bf67f371c43fd93e18792ef205d09.png

Заканчиваем установку сайта и видим, что всё работает:
2af2a4dfcdb94d5e82fd11856e2e0cdb.png

Сайт готов к использованию и выдержит приличную нагрузку (при конфигах, указанных выше, сайт держит нажатую F5 в течении 5 минут и спокойно открывается.

Вот таким нехитрым способом мы поставили и запустили сервер, настроили его и добавили для примера один сайт.

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

Гайд писался параллельно с настройкой vps, каждая команда проверена и работает.

Именно этого гайда мне не хватало в свое время. Надеюсь кому-то это будет полезно.
 
Последнее редактирование модератором:

WebBiz

Вождь
Член команды
Администратор
Регистрация
11/3/14
Сообщения
1.294
Симпатии
178
Возраст
27
#2
Как-то это всё сложно для меня. Есть же такие хостеры, в которых это всё не нужно делать вручную, там всё делается в несколько кликов. Если когда-то и буду переходить на виртуальный сервер, то только к такому хостеру. А вообще зачем нужен виртуальный сервер? Нужно иметь достаточно большую посещаемость, чтобы брать сервак. Для большинства пользователей (в том числе и мне) - достаточно виртуального хостинга.