Solovyev-Pavel / o-gis

Web-GIS with limited raster analysis abilities
Apache License 2.0
2 stars 1 forks source link

Сбор сведений об установке #3

Open sevryukov opened 7 years ago

sevryukov commented 7 years ago

Предлагаю собрать и обсудить сведения, необходимые для выполнения развёртывания системы.

Solovyev-Pavel commented 7 years ago

Для работы O-GIS требуются:

Файлы O-GIS добавляются в каталог проекта Symfony 2. После этого, необходимо подключить O-GIS в кернеле приложения Symfony: для этого в файле /app/AppKernel.php необходимо добавить строчку:

Далее необходимо выполнить следующие команды (для системы на OS linux) из каталога проекта Symfony 2:

Вроде все.

P.S. наверное, стоит как-нибудь сесть и написать скрипты для автоматизации по крайней мере части из этих действий. Хотя бы, скрипт, который бы сам выполнял настройки O-GIS, а не требовал явного обращения к определенному экшну в контроллерах.

sevryukov commented 7 years ago

P.S. наверное, стоит как-нибудь сесть и написать скрипты для автоматизации по крайней мере части из этих действий. Хотя бы, скрипт, который бы сам выполнял настройки O-GIS, а не требовал явного обращения к определенному экшну в контроллерах.

Добавил Issue: #4

AlexeyDomnin commented 7 years ago

Сразу скажу, что речь идет о Windows.

1. Развертывание GeoServer на Tomcat/Jetty Вообще говоря, для развертывания GeoServer'a есть две "опции": на Jetty и на Tomcat. Думаю, для нас нет особой разницы, где именно разворачивать GeoServer, но опишу оба варианта. Предварительно необходимо скачать jdk с сайта: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html -Jetty. Процедура крайне проста. Можно установить GeoServer перейдя по ссылке: http://geoserver.org/release/stable/ . Выбрать вариант "Windows installer", скачать exe файл и далее просто следовать инструкциям инсталлера. В конце запустить startup.bat из папки _%GEOSERVERHOME%/startup.bat. Всё, геосервер работает. Насколько я понял, по умолчанию он будет запущен на порте 8080 и доступен в бразуере по ссылке localhost:8080 (или возможно на 80-ом порту и по ссылке localhost). -Tomcat. Cкачать бинарный дистрибутив Apache Tomcat с сайта https://tomcat.apache.org/ и распаковать его в директорию, где бы вы хотели его хранить. Далее необходимо найти файл server.xml и по желанию сменить порт с 8080 на любой другой, какой захотим. Это делается в разделе про Connector (можно поиском по файлу прямо так и найти, вбив туда "Connector"). Далее переходим по ссылке: http://geoserver.org/release/stable/ . Находим там пункт WAR Archive, качаем его. Из всего того, что скачается, нас интересует только geoserver.war. Копируем его в _%TOMCATHOME%/webapps. Далее из папки _%TOMCATHOME%/bin запускаем startup.bat и, если нет никаких ошибок, то в браузере находим сервер по ссылке localhost:port/geoserver.

2. БД. Посмотрел PostgreSQL. Его можно скачать по ссылке: https://www.postgresql.org/download/ . В установке нет ничего сложного. Опять же просто запускаем инсталлер и делаем все по инструкциям. После того, как PostgreSQL установится, откроется StackBuilder, в котором можно сразу, "за бесплатно" установить PostGIS для PostgreSQL.

3. PHP и Apache. Подробно описывать не буду. Скажу только, что никогда не имел дела с PHP, поэтому тут процесс установки замедлился, но завершился удачно. Вообще, руководствовался вот этим гайдом: http://blog.denisbondar.com/post/apache24php56win7 (Всем, кроме того, что про MySQL). По ходу дела узнал, что у Symfony есть свои требования к php, нашел полезный скрипт, который подскажет, чего не хватает в настройках php. Ссылка на него: https://searchcode.com/codesearch/view/11656651/ . Если где-то возникает warning или error, то надо править php.ini. Тут уже особых советов нет, надо гуглить.

4. Symfony. Вот здесь у меня больше всего трудностей. Может кто-то подскажет что делать, потому что я не понимаю :( Опробовал 2 варианта: -Через symfony.phar. Вообще никак заработать не захотело. В свелось к тому, что консоль "винды" не понимала, что делать с файлом "symfony" (это из гайда: http://symfony.com/doc/2.7/setup.html). -Через утилиту composer. Получилось, вроде бы, установить сам фреймворк и его зависимости. Добавить в сам проект файлы с гитхаба и в composer.json добавить строку об OGIS. Однако, вылетает ошибка, с которой я, пока не знаю как бороться (пока еще мало гуглил в связи с загруженностью). Ошибки и мой composer.json (сохранил как txt, чтобы можно было прикрепить) прикрепляю к посту. Может быть кто-то с этим сталкивался и есть решение? Или может быть, я что-то в плане symfony делаю совсем неправильно? exception

composer.txt

AlexeyDomnin commented 7 years ago

Здравствуйте! Удалось решить проблему следующим способом: 1) удалить лишний пробел в config.yml 2) сделать composer update

Однако, после этого выяснилось, что не хватает еще "кое-чего".

1) В config.yml есть такие пункты, как sonata_block и sonata_admin. Соответственно, что при сборке композером не вылетало ошибок, связанных с сонатой, необходимо добавить в composer.json еще: "sonata-project/admin-bundle": "dev-master"

и в AppKernel.php : " new Sonata\BlockBundle\SonataBlockBundle(), new Sonata\AdminBundle\SonataAdminBundle() " 2) Так как я новичок в symfony, то для меня поначалу было все немного магией как и где что работает (да и сейчас магии пока стало не меньше). Так вот, если кто-то еще находится позади меня в установке системы, то не забудьте после подключения в composer.json usersofsymfony зарегистрировать его бандл в AppKernel.php.

3) Т.к. теперь подключена соната. То теперь команда composer install ругается на отсутствие admin.yml в огис системы. Текст ошибки:

Bundle "OGISIndexBundle\Resources\config\admin.yml" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your AppKernel.php file? in @OGISIndexBundle\Resources\config\admin.yml (which is being imported from "D:\dev\ogis\app/config\config.yml. Make sure the "OGISIndexBundle" bundle is correctly registered and loaded in the application kernel class. If the bundle is registered, make sure the bundle path "@OGISIndexBundle\Resources\config\admin.yml" is not empty.

Но у меня на машине файла admin.yml нет, и на гитхабе этого файла тоже нет. Я, конечно, нашел гайды, как его написать, но боюсь нарваться на еще большее количество ошибок. Поскольку проект начинается не с нуля, а уже ведется некоторое время, то наверняка есть какие то хитрости, о которых мне не известно. Так вот, пока осталась проблема с admin.yml. Подскажите, пожалуйста, как ее можно решить?

P.S. Были еще какие-то ошибки, но они как-то разрешились (сейчас, к сожалению, уже не помню что это за ошибки)

sevryukov commented 7 years ago

@AlexeyDomnin @Solovyev-Pavel Коллеги, как вы смотрите на то, чтобы отдельные проблемы оформлять в виде отдельных Issue и выпускать патчи (например, правки в файлах конфигурации)?

AlexeyDomnin commented 7 years ago

Еще прикреплю полезную ссылку: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

При загрузке композером пакетов, может возникнуть ошибка "memory limit". Информация внутри этой ссылки поможет решить проблему.

AlexeyDomnin commented 7 years ago

@sevryukov Хорошая идея! Я бы хотел этим заняться, когда у меня, наконец, всё заработает, чтобы лучше "структурировать" последовательность действий при установке. То есть, хотел бы создать очень подробный гайд. А по поводу патчей, может возникнуть проблема, потому что для пользователей Windows и Unix систем, возможно файлы конфигураций будут немного отличаться (например, будут разные сепараторы в файловой системе: "/" или"\", но это моя догадка)

sevryukov commented 7 years ago

@AlexeyDomnin У нас же система управления версиями и репозиториями ;) Предлагаю в среду обсудить детали. Гайд - это сюда: https://github.com/Solovyev-Pavel/o-gis/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B

AlexeyDomnin commented 7 years ago

@sevryukov Тоже верно! :) Но в любом случае мне нужно добить до рабочего варианта, потому что загружать сюда, пусть даже в отдельную ветку, нерабочую версию будет, по-моему, не очень неправильно. Пусть первая моя рабочая версия и будет, например, как первый патч с исправлениями для разработки под Windows!

oonsamyi commented 7 years ago

Установка системы на ubuntu.

Перед этим рекомендуется обновить список пакетов apt-get: sudo apt-get update 1) Установка apache2: sudo apt-get install apache2 2) Установка php7 и дополнительных пакетов: sudo apt-get install php7.0 sudo apt-get install php-xml sudo apt-get install php7.1-pgsql - клиент для PostgreSQL 3) Установка tomcat7: sudo apt-get install tomcat7 4) Установка PostgreSQL: sudo apt-get install postgresql Далее выполнить инструкции с гайда. (собственно, настройки соединения, создание пользователя и т.д.) 5) Ставим symfony: sudo mkdir -p /usr/local/bin sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony sudo chmod a+x /usr/local/bin/symfony 6) Переходим в директорию apache (здесь будет поставлена сама система): cd /var/www/html 7) Создаем проект symfony (назовем его test): sudo symfony new test и переходим в сгенерированную папку: cd ./test (все дальнейшие команды выполнять в этой директории) 8) Устанавливаем настройки к БД в test/app/config/parameters.yml, которые мы узнали на шаге 4 9) Меняем pdo_mysql на pdo_pgsql в test/app/config/config.yml: doctrine: dbal: driver: pdo_pgsql 10) Копируем файлы с репозитория в соответствующие папки (src, web) 11) В файле test/app/AppKernel.php добавляем строчку: new OGIS\IndexBundle\OGISIndexBundle(), 12) Правим в test/src/OGIS/IndexBundle/Resources/config/services.yml следующее: строку @doctrine.orm.entity_manager - выделяем в кавычки строки @security.context и @security.acl.provider - закомментим, т.к. выскакивает ошибка <- не нашел нужных модулей для установки, если кто знает, напишите 13) Устанавливаем composer, если его нет: sudo apt install composer 14) Устанавливаем пакет friendsofsymfony: composer require friendsofsymfony/user-bundle "~2.0@dev" 15) Создаем базу данных: sudo php bin/console doctrine:database:create 16) Удаляем файл test/src/OGIS/IndexBundle/Entity/Link.php, т.к. при выполнении следующей команды выскакивала ошибка: [Symfony\Component\Debug\Exception\FatalErrorException]
Compile Error: Cannot declare class OGIS\IndexBundle\Entity\Link, because the name is alre
ady in use
(там определен еще файл Links.php) <- данный шаг также может усугубить ситуацию в будущем, может есть какие-нибудь альтернативные решения 17) Создаем схему базы данных: sudo php bin/console doctrine:schema:create 18) Запускаем сервер: sudo php bin/console server:start (Если понадобится его прибить, выполняем: sudo php bin/console server:stop)

Собственно, сервер запустился, идем смотреть в браузер: image Далее по урлу /test/web/app.php symfony возвращает ошибку: image Может я чего-то недопонял, либо это косяк вышеперечисленных действий, собственно, на этом я и встал.

AlexeyDomnin commented 7 years ago

@oonsamyi По моему опыту, во всех урлах, где есть что-то наподобие test/web/... , нужно оставлять только то, что идет после этого test/web/. То есть в этом случае просто localhost:8000/app.php. Если проблема вдруг еще не решилась, то, возможно, это поможет.

oonsamyi commented 7 years ago

@AlexeyDomnin К сожалению, не помогло.