Развёртывание рабочего окружения OpenCorpora на базе CentOs

Материал из OpenCorpora
Перейти к навигации Перейти к поиску

Данная инструкция описывает подготовку рабочего окружения 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:

Если всё прошло правильно и успешно мы увидим привычный сайт:

Opencorpora after install.png

Если так и получилось -- всё, установка завершена.

V Troobleshooting

В большинстве случаев можно самостоятельно устранить ошибку изучением /var/log/httpd/error_log

Если что-то не запустилось -- обращаться за помощью по-прежнему лучше всего к Дмитрию Грановскому.