Всем привет, в данной статье хотел бы затронуть тему, полной установки и настройки рабочего сервера с операционной системой Ubuntu Linux server 13.04, но эта же конфигурация с легкостью подойдет и для более старых версий Ubuntu server 12.04/12.10. Сам сервер будем поднимать пошагово, буду пояснять как можно больше мелких деталей по его настройке, конечной целью будет деплой двух сайтов на сервер, один обычный php сайт использующий движок wordpress, 2 будет сайт использующий Ruby On Rails. Итак задача ясна, теперь стоит определиться с тем что именно мы будем устанавливать на сервер и какую связку будем использовать, что бы добиться стабильной работы сервера. Наш сервер будет сконфигурирован с такими приложениями :
- nginx (Веб сервер для обработки статики);
- php-fpm + php 5.4 (Веб сервер для обработки динамического контента);
- phpMyAdmin (Для работы с БД);
- MariaDB/Mysql (Хороший аналог Mysql);
- APC + ioncube (Для улучшения производительности);
- GeoIP (Модуль для блокировки запросов из нежелательных стран);
- Memcached (Модуль для кеширования);
- CSF (Серверный фаервол, позволяющий отбить легкий ДДос);
- Apache + passenger ();
- Ruby + Gems ();
- Node.js ();
- GIT (Система контроля версий);
Устанавливать все это дело мы будем довольно долго, поэтому данная статья будет разбита на несколько частей. Первое что нам необходимо это заказать любой ВПС (выделенный сервер), можно даже тестовый на несколько дней, с установленной системой Ubuntu Server 13.04
Все это дело я буду сетапить используя ОС Linux Mint 16 Petra и консольку. Так же стоит запастись хорошим чайком и терпением Ну что же приступим.
Как установить и настроить веб сервер Ubuntu Linux server 13.04
Для начала, соединяемся с сервером по SSH, для этого открываем консоль и прописываем
ssh root@91.223.223.108 |
91.223.223.108 — IP адрес сервера, прописываем свой, после чего попросит ввести пароль доступа, вводим, жмем энтер.
После того как мы зашли на сервер, переходим в директорию src
cd /usr/local/src/ |
В неё будем закачивать все наши файлы для установки из интернета, будем использовать данный каталог, как временную директорию (tmp).
Как установить MariaDB на сервер:
В первую очередь установим базу данных на наш сервер, в качестве базы данных я выбрал MariaDB, это альтернатива стандартной MySQL, которая включает все ее преимущества и дополнена большим количеством улучшений в коде, способствующих увеличению производительности.
Для установки прописываем в консоли такие команды:
apt-get install python-software-properties apt-get install software-properties-common |
Добавляем на сервер нужный нам репозиторий и ключ MariaDB
apt-key adv —recv-keys —keyserver hkp://keyserver.ubuntu.com:80 1BB943DB add-apt-repository ‘deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main’ |
Теперь приступаем к самой установке MariaDB на сервер :
apt-get update && apt-get -y install mariadb-server-5.5 mariadb-client-core-5.5 mariadb-client-5.5 mariadb-server-core-5.5 mariadb-common mariadb-server libmariadbclient18 libdbd-mysql-perl libmysqlclient18=5.5.34+maria-1~precise mysql-common=5.5.34+maria-1~precise |
Если при установке возникает ошибка :
E: Version ‘5.5.30-mariadb1~quantal’ for ‘libmysqlclient18’ was not found
E: Version ‘5.5.30-mariadb1~quantal’ for ‘mysql-common’ was not found
Выполняем команду :
aptitude versions libmysqlclient18 |
Packagelibmysqlclient18:
p 5.5.29-0ubuntu1 raring 500
p 5.5.34-0ubuntu0.13.04.1 raring-security,raring-updates 500
p 5.5.34+maria1~precise <NULL> 1000
p 5.5.34+maria-1~raring <NULL> 500
Как видим не совпадают версии и названия для двух наших файлов, прописываем нужные :
mysql-common=5.5.34+maria-1~precise libmysqlclient18=5.5.34+maria-1~precise |
Устанавливаем еще раз, ждем завершения установки, попиваем наш чаек
Во время установки необходимо 2 раза ввести root пароль для пользователя базы данных :
Далее установим :
mysql_secure_installation |
Во время установки система предложит нам выбрать несколько пунктов, выбираем в таком порядке (n/Y/Y/Y/Y).
После чего перезапускаем MariaDB
service mysql restart |
Лично у меня при перезапуске в последней строке отобразилось сообщение :
root@exp:~# service mysql restart
* Stopping MariaDB database server mysqld [ OK ]* Starting MariaDB database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.
Это предупреждение говорящие о том, что для Вашего сервера mysql не будет проверять наличие битых таблиц.
Открываем и правим файл :
vi /etc/mysql/debian-start |
На этом установку MariaDB можно считать завершенной. Проверим лишь на каком порту висит наш процесс mysqld:
root@exp:/var/log/mysql# netstat -nlpt | grep mysqld
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15762/mysqld
Все OK, попиваем чаек, потираем руки и приступаем к установке nginx.
Как установить Nginx на сервер:
Думаю все знают, что такое Nginx и для чего он нужен, в нашем случае он будет обрабатывать и отдавать статический контент для наших сайтов, тем самым оптимизировав и ускорив их работу. Уже не для кого не секрет, что скорость отдачи контента и юзабилити на сайтах сильно влияют на ранжирование в поисковых системах, да и пользователям вряд ли по духу сидеть и ждать по несколько минут пока Ваш сайт отдаст контент. К тому же с помощью nginx, можно блокировать и отсекать различные подозрительные запросы на Ваши сайты, блокировать БрутФорс атаки на админки либо слабые Ддос атаки и многое другое
Как всегда добавляем нужный нам репозиторий :
add-apt-repository ppa:nginx/stable |
Затем ставим сам nginx :
apt-get install -y nginx-full |
Запускаем nginx :
/etc/init.d/nginx start |
Nginx у нас весит на 80 порту :
root@exp:/etc/nginx# netstat -nlpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17429/nginx
tcp6 0 0 :::80 :::* LISTEN 17429/nginx
Конфигурационные файлы nginx будем править позже, а пока поставим php:
Как установить php-fpm + Php 5.4
В нашем случае php-fpm будет обрабатывать динамический контент для наших сайтов, версию php я выбрал 5.4, так как она уже достаточно стабильна и включает в себя большое количество новшеств по сравнению со старыми версиями. Версию 5.5 ставить на данный момент не вижу особого смысла.
Приступим к добавлению репозитория с php 5.4 в систему :
add-apt-repository ppa:ondrej/php5-oldstable |
Далее займемся установкой, для этого прописываем такую команду :
apt-get update && apt-get install -y nginx-extras php5 php5-cli php5-fpm php5-mysql php5-curl php5-geoip php5-gd php5-intl php5-mcrypt php-pear php5-imap php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-cgi spawn-fcgi openssl geoip-database php5-dev |
При этом будут установлены все нужные для работы php модули. Сама установка может занять определенное время, по окончанию установки вы будете видеть вот такое сообщение :
На этом весь запас нашего чайка должен иссякнуть, поэтому вынуждены пойти закипятить водички, после чего приступить к чтению второй части данной статьи
укажите пожалуйста что надо изменить в debian-start
«Открываем и правим файл :
vi /etc/mysql/debian-start…»
Необходимо закомментировать строку :
#check_for_crashed_tables;
Либо просто выполнить принудительную проверку :
mysqlcheck —check-upgrade —all-databases —auto-repair -u root -p
mysql_upgrade —force -u root -p
Желательно так же на всякий случай проверить логи :
less /var/log/syslog | grep mysql
add-apt-repository ‘deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main’
возвращает error need repository as argument
apt-get install python-software-properties
и в итоге такая штука
WARNING: The following packages cannot be authenticated!
unattended-upgrades python-software-properties
Install these packages without verification [y/N]? yes
Err http://archive.ubuntu.com/ubuntu/ raring/main unattended-upgrades all 0.79.3ubuntu7
404 Not Found [IP: 91.189.92.200 80]
Err http://archive.ubuntu.com/ubuntu/ raring/universe python-software-properties all 0.92.17
404 Not Found [IP: 91.189.92.200 80]
Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.79.3ubuntu7_all.deb 404 Not Found [IP: 91.189.92.200 80]
Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/s/software-properties/python-software-properties_0.92.17_all.deb 404 Not Found [IP: 91.189.92.200 80]
E: Unable to fetch some archives, maybe run apt-get update or try with —fix-missing?