Установка и настройка Ubuntu Server 13.04 (Nginx/php5-fpm/APC/RoR/Passenger)

ubuntu-server-rails-php-nginxВсем привет, в данной статье хотел бы затронуть тему, полной установки и настройки рабочего сервера с операционной системой Ubuntu Linux server 13.04, но эта же конфигурация с легкостью подойдет и для более старых версий Ubuntu server 12.04/12.10. Сам сервер будем поднимать пошагово, буду пояснять как можно больше мелких деталей по его настройке, конечной целью будет деплой двух сайтов на сервер, один обычный php сайт использующий движок wordpress, 2 будет сайт использующий Ruby On Rails. Итак задача ясна, теперь стоит определиться с тем что именно мы будем устанавливать на сервер и какую связку будем использовать, что бы добиться стабильной работы сервера. Наш сервер будет сконфигурирован с такими приложениями :

  1. nginx (Веб сервер для обработки статики);
  2. php-fpm + php 5.4 (Веб сервер для обработки динамического контента);
  3. phpMyAdmin (Для работы с БД);
  4. MariaDB/Mysql (Хороший аналог Mysql);
  5. APC + ioncube (Для улучшения производительности);
  6. GeoIP (Модуль для блокировки запросов из нежелательных стран);
  7. Memcached (Модуль для кеширования);
  8. CSF (Серверный фаервол, позволяющий отбить легкий ДДос);
  9. Apache + passenger ();
  10. Ruby + Gems ();
  11. Node.js ();
  12. GIT (Система контроля версий);

Устанавливать все это дело мы будем довольно долго, поэтому данная статья будет разбита на несколько частей. Первое что нам необходимо это заказать любой ВПС (выделенный сервер), можно даже тестовый на несколько дней, с установленной системой Ubuntu Server 13.04

Как установить и настроить веб сервер Ubuntu Linux server 13.04

Все это дело я буду сетапить используя ОС Linux Mint 16 Petra и консольку. Так же стоит запастись хорошим чайком и терпением :) Ну что же приступим.

Как установить и настроить веб сервер Ubuntu Linux server 13.04

Для начала, соединяемся с сервером по SSH, для этого открываем консоль и прописываем

ssh root@91.223.223.108

91.223.223.108 — IP адрес сервера, прописываем свой, после чего попросит ввести пароль доступа, вводим, жмем энтер.

SSH

После того как мы зашли на сервер, переходим в директорию 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 пароль для пользователя базы данных :

MariaDB_install

MariaDB_install_2

Далее установим :

mysql_secure_installation

Во время установки система предложит нам выбрать несколько пунктов, выбираем в таком порядке  (n/Y/Y/Y/Y).

MariaDB_install_secure

MariaDB_install_secure_2

После чего перезапускаем 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 модули. Сама установка может занять определенное время, по окончанию установки вы будете видеть вот такое сообщение :

Как установить php-fpm + Php 5.4

На этом весь запас нашего чайка должен иссякнуть, поэтому вынуждены пойти закипятить водички, после чего приступить к чтению второй части данной статьи :)

Понравилась статья? Поделиться с друзьями:
Комментариев: 4
  1. Roman

    укажите пожалуйста что надо изменить в debian-start

    «Открываем и правим файл :

    vi /etc/mysql/debian-start…»

    1. TECHnik (автор)

      Необходимо закомментировать строку :

      #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

  2. Кирилл

    add-apt-repository ‘deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main’
    возвращает error need repository as argument

  3. Богдан

    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?

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.