Open sevryukov opened 7 years ago
Для работы O-GIS требуются:
Файлы O-GIS добавляются в каталог проекта Symfony 2. После этого, необходимо подключить O-GIS в кернеле приложения Symfony: для этого в файле /app/AppKernel.php необходимо добавить строчку:
Далее необходимо выполнить следующие команды (для системы на OS linux) из каталога проекта Symfony 2:
Вроде все.
P.S. наверное, стоит как-нибудь сесть и написать скрипты для автоматизации по крайней мере части из этих действий. Хотя бы, скрипт, который бы сам выполнял настройки O-GIS, а не требовал явного обращения к определенному экшну в контроллерах.
P.S. наверное, стоит как-нибудь сесть и написать скрипты для автоматизации по крайней мере части из этих действий. Хотя бы, скрипт, который бы сам выполнял настройки O-GIS, а не требовал явного обращения к определенному экшну в контроллерах.
Добавил Issue: #4
Сразу скажу, что речь идет о 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 делаю совсем неправильно?
Здравствуйте! Удалось решить проблему следующим способом: 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. Были еще какие-то ошибки, но они как-то разрешились (сейчас, к сожалению, уже не помню что это за ошибки)
@AlexeyDomnin @Solovyev-Pavel Коллеги, как вы смотрите на то, чтобы отдельные проблемы оформлять в виде отдельных Issue и выпускать патчи (например, правки в файлах конфигурации)?
Еще прикреплю полезную ссылку: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors
При загрузке композером пакетов, может возникнуть ошибка "memory limit". Информация внутри этой ссылки поможет решить проблему.
@sevryukov Хорошая идея! Я бы хотел этим заняться, когда у меня, наконец, всё заработает, чтобы лучше "структурировать" последовательность действий при установке. То есть, хотел бы создать очень подробный гайд. А по поводу патчей, может возникнуть проблема, потому что для пользователей Windows и Unix систем, возможно файлы конфигураций будут немного отличаться (например, будут разные сепараторы в файловой системе: "/" или"\", но это моя догадка)
@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
@sevryukov Тоже верно! :) Но в любом случае мне нужно добить до рабочего варианта, потому что загружать сюда, пусть даже в отдельную ветку, нерабочую версию будет, по-моему, не очень неправильно. Пусть первая моя рабочая версия и будет, например, как первый патч с исправлениями для разработки под Windows!
Перед этим рекомендуется обновить список пакетов 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
)
Собственно, сервер запустился, идем смотреть в браузер:
Далее по урлу /test/web/app.php symfony возвращает ошибку:
Может я чего-то недопонял, либо это косяк вышеперечисленных действий, собственно, на этом я и встал.
@oonsamyi По моему опыту, во всех урлах, где есть что-то наподобие test/web/... , нужно оставлять только то, что идет после этого test/web/. То есть в этом случае просто localhost:8000/app.php. Если проблема вдруг еще не решилась, то, возможно, это поможет.
@AlexeyDomnin К сожалению, не помогло.
Предлагаю собрать и обсудить сведения, необходимые для выполнения развёртывания системы.