Mnie oczywiście interesuje PHP, obecnie dostępne na openshift w ver. 5.4 ... Na początek wystarczy ;) Po rejestracji na stronie openshift.redhat.com system zachęca do instalacji pierwszej aplikacji. Tworząc nową aplikację w technologii PHP mamy do wyboru dwie możliwości. Skorzystanie z gotowej preinstalowanej aplikacji/frameworka lub wybór wersji PHP i "ręczną" konfigurację środowiska. Pierwsza opcja umożliwia expresowe postawienie szkieletu aplikacji i będzie atrakcyjna dla mniej doświadczonych developerów, lub w przypadku krótkoterminowych projektów, gdzie istotny jest czas. Możemy mieć gotowego WordPressa czy Drupala po jednym kliknięciu. Początkowo ucieszyłem się, że obok takich frameworków jak CakePHP dostępny jest też "od ręki" gear w Symfony2. Niestety okazało się, że jest on skonfigurowany z cardrige'm PHP 5.3 ... cóż trochę słabo...
Jak postawić najnowszą wersję Symfony2 z PHP 5.4 na platformie OpenShift ?
1. Zakładamy nową aplikację "Based on PHP 5.4 Cardridge", niech się śmiesznie nazywa np "polanto" ;)
2. Jeśli jeszcze nie masz skonfigurowanego klucza SSH, koniecznie użyj rhc do konfiguracji ssh na swoim komputerze.
3. OpenShift używa GIT do deploymentu aplikacji, bardzo spodobała mi się opcja autodeploymentu po push'u do repo, ale o tym za chwilę. Najpierw sklonujmy nasze repo do katalogu w, którym będziemy rozwijać aplikację lokalnie:
$ git clone ssh://541a83925004460525001038@polanto-motyl.rhcloud.com/~/git/polanto.git/
4. Pora stworzyć nowy projekt Symfony2 w podkatalogu php aplikacji:
$ cd polanto
$ composer create-project symfony/framework-standard-edition php
$ git add -A
$ git commit -am "Blank Symfony Project"
5. Zanim wypchnę projekt do chmury warto skonfigurować deploy. OpenShift ma bardzo fajną cechę, polegającą na automatycznym deploymencie aplikacji po tym jak wykonasz git push. W przypadku Symfony2 warto jeszcze zadbać o zautomatyzowanie instalacji nowych, lub zupgradowanych pakietów Composera. W tym celu tworzę w podkatalogu ./openshift/action_hooks plik deploy:
---------------------------------------------------------------
#!/bin/bash
# .openshift/action_hooks/deploy
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"
if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR
else
php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi
unset GIT_DIR
cd $OPENSHIFT_REPO_DIR/php
php $OPENSHIFT_DATA_DIR/composer.phar install
chmod -R 0777 $OPENSHIFT_REPO_DIR/php/app/cache
chmod -R 0777 $OPENSHIFT_REPO_DIR/php/app/logs
---------------------------------------------------------------$ git add -A
$ git commit -am "deploy hook"
Ten skrypt zadba o instalację composera (jeśli go brakuje) a następnie instalację wymaganych pakietów.
6. Push jest tuż za zakrętem jeszcze tylko jeden szczegół. Ten krok nie jest konieczny, ale przyśpieszy deployment w początkowej fazie projektu, kiedy tych push'y może być najwięcej. OpenShift robi nam "niedzwiedzią przysługę" restartując PHP, MySQL i inne serwisy dodane do projektu, przy każdym deploy. Jeśli nie chcemy tego feature'a wystarczy dotknąć marker hot_deploy
$ touch ./openshift/markers/hot_deploy
$ git add -A
$ git commit -am "enable hot deploy"
$ git push
Zauważ, że w tle, po stronie serwera instalowane są pakiety composera, aż miło popatrzeć... :)
Kilka rad wójka dobra-rada:
Korzystaj z RHC - życie będzie prostsze!
po ssh najłatwiej połączyć się komendą
$ rhc ssh mojaaplikacja
W przypadku problemów z composerem, zalogować się na konsoli i uruchomić
$ $OPENSHIFT_DATA_DIR/composer.phar self-update
W przypadku błędów, zapraszam do lektury w tym katalogu:
$ cd $OPENSHIFT_LOG_DIR
404 po pierwszym deploymencie? Zrestartuj php - wykonaj:
$ ctl_app restart
Service Temporarily Unavailable ? Restart PHP!