Развёртывание рабочего окружения OpenCorpora на базе CentOs
Данная инструкция описывает подготовку рабочего окружения OpenCorpora на базе CentOs.
Точка актуальности инструкции: январь 2015 года.
В качестве предисловия.
Собрать рабочее окружение OpenCorpora - это простая операция для разработчика даже среднего/начинающего уровня.
Не нужно ничего компилировать, даже репозитории никакие дополнительные не нужны. Просто собираем обычный LAMP-сервер.
Есть базовая инструкция 2011 года, в ней некоторые вещи устарели но для разработчика не составит труда разобраться, что к чему.
Я писал конкретную инструкцию ориентируясь именно на CentOs, как-то привычнее чем Debian.
Перечислены только те модули, которые реально используются, ничего лишнего (специально собирал на minimal iso) и проверял нормальную работу сайта.
I Подготовительные операции. Установка ОС
1. Создать виртуалку. Поставить ОС
Достаточно 512 Mb RAM, 20 Gb HDD.
Ставил с образа CentOS-6.6-x86_64-minimal.iso или CentOS-6.6-i386-minimal.iso брать отсюда
2. Поднять сетку Отредактировать файл /etc/sysconfig/network-script/ifcfg-eth0:
cd /etc/sysconfig/network-script vi ifcfg-eth0
В моём конкретном случае (виртуалка подключена непосредственно в сеть, режим bridge в VmWare) это было:
IPADDR=192.168.1.53 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.1
Рестартовать службу:
service network restart
Попробовать пингануть ya.ru, проверить что узел доступен.
3. Обновиться
yum update
4. Доставить пакеты по вкусу
yum install mc
5. Отрубить SELinux
Если по-простому - то прописать в /etc/selinux/config следующее:
SELINUX=disabled
6. Отключить файерволл
Дать в консоли команды:
service iptables stop chkconfig iptables off
7. Настройка подключения по SSH
Закинуть свой ключ в /root/.ssh/authorized_keys, после reboot'а попробовать подключиться по SSH
II Ставим вебсервер (apache+php+mysql)
1. Ставим апач
yum install httpd chkconfig httpd on
В /etc/httpd/conf/httpd.conf добавить
ServerName localhost
Стартуем службу:
service httpd start
Закинуть файл /var/www/html/index.html и проверить, что открывается http://192.168.1.53
Версия апача - 2.2:
httpd -v Server version: Apache/2.2.15 (Unix) Server built: Oct 16 2014 14:45:47
2. Ставим php с нужными нам модулями:
yum install php php-pear php-mbstring php-intl service httpd restart
Закинуть простенький helloworld.php в /var/www/html/helloworld.php и проверить что открывается http://192.168.1.53/helloworld.php
<?php echo 'php works!'; ?>
Версия PHP должна быть выше 5.3.2 (для phinx), в основных репозитория сейчас 5.3.3 идёт по умолчанию:
php -v PHP 5.3.3 (cli) (built: Oct 30 2014 19:56:14) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
3. Установка mysql
yum install mysql-server php-mysql chkconfig mysqld on service mysqld start mysql_secure_installation
Проверяем подключение и работу библиотеки pdo. Закинем простенький test_mysql.php в /var/www/html/test_mysql.php и проверим, что нормально открывается http://192.168.1.53/test_mysql.php
<?php $user = 'root'; $pass = 'password_here'; try { $dbh = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass); echo 'connection OK'; $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; } ?>
III Настраиваем проект
1. Качаем исходники (предпочтительнее через git)
Cпособ через subversion:
yum install subversion cd /var/www/html svn co https://github.com/OpenCorpora/opencorpora/trunk .
Способ через git:
yum install subversion git git config --global user.name "MyGithubLogin" git config --global user.email "[email protected]" cd /var/www/html git clone https://github.com/OpenCorpora/opencorpora.git .
(Здесь предполагаем, что ssh-ключи сгенерированы, установлены на сервере и в профиле на гитхабе)
2. Подкачиваем Smarty, symphony и что-то там ещё (через composer)
Подключаем composer:
cd /var/www/html curl -sS https://getcomposer.org/installer | php
И инсталлируем необходимые модули для opencorpora
php composer.phar install
Подключается следующее:
Installing dependencies (including require-dev) from lock file - Installing symfony/yaml (v2.0.24) Downloading: 100% - Installing symfony/console (v2.0.24) Downloading: 100% - Installing symfony/config (v2.0.24) Downloading: 100% - Installing symfony/class-loader (v2.0.24) Downloading: 100% - Installing robmorgan/phinx (v0.3.7) Downloading: 100% - Installing smarty/smarty (v3.1.19) Checking out /tags/v3.1.19/@4867 - Installing swiftmailer/swiftmailer (v5.2.1) Downloading: 100% Generating autoload files
Проверить, что создалась папка /var/www/html/vendor/
Добавляем ссылку на Smarty (файл Smarty.class.php находится в /var/www/html/vendor/smarty/smarty/distribution/libs) в файл /etc/php.ini
include_path = ".:/php/includes:/var/www/html/vendor/smarty/smarty/distribution/libs"
Создаем каталоги под Smarty (такие же, как в нашем будущем конфиге):
mkdir /var/www/templates/ mkdir /var/www/smarty_dir/ mkdir /var/www/smarty_dir/templates_c/ mkdir /var/www/smarty_dir/configs/ mkdir /var/www/smarty_dir/cache/ chown -R apache /var/www/templates/ chown -R apache /var/www/smarty_dir/
3. Создаём конфиг
Копируем настройки из конфиг-файла по умолчанию (там уже все настройки сделаны под CentOs, почти ничего не придётся править):
cp /var/www/html/config.default.ini /var/www/html/config.ini
Из необходимых настроек - правим настройки подключения к mysql-базе (логин/пароль), введите свои.
Также поправим настройку root (корень проекта) -- в текущей версии указывает на папку /corpus а у нас всё находится в /var/www/html
4. Дополнительные правки в php.ini
Выставляем timezone для корректной работы функций даты/времени:
date.timezone ="Europe/Moscow"
Не забываем, что после правок php.ini нужен рестарт апача.
5. Заменить в /var/www/html/config.ini строку
template_dir = /var/www/templates/
на
template_dir = /var/www/html/templates
6. Создаём mysql-базу
mysql -u root -p CREATE DATABASE corpora DEFAULT CHARSET utf8; GRANT DELETE, INSERT, LOCK TABLES, SELECT, UPDATE ON corpora.* TO username IDENTIFIED BY 'password';
7. Инсталлируем пустую базу при помощи phinx
Проверяем настройки phinx (файл phinx.php в корне сайта) в секции developement (логин/пароль к базе, мы созданную на шаге 6 базу будем считать dev-базой)
cd /var/www/html php vendor/bin/phinx migrate -e development
IV Пробный запуск
На текущий момент всё готово к пробному заходу на наш веб-сайт. Открываем в браузере http://192.168.1.53:
Если всё прошло правильно и успешно мы увидим привычный сайт:
Если так и получилось -- всё, установка завершена.
V Troobleshooting
В большинстве случаев можно самостоятельно устранить ошибку изучением /var/log/httpd/error_log
Если что-то не запустилось -- обращаться за помощью по-прежнему лучше всего к Дмитрию Грановскому.