SULU CMS – Content management made awesome

Czym jest Sulu.ioSulu to platforma zarządzania treścią oparta o framework Symfony2. Głównym odbiorcom tego narzędzia ma być szeroko pojęty biznes. Jest to elastyczny CMS do tworzenia i zarządzania multi-witrynami przedsiębiorstwa, taki multi-cms. Cały CMS został oparty o praktycznie niezawodne środowisko programistyczne gwarantujące wysoką wydajność rozwiązania. Samo Sulu cechuje zbiór zaawansowanych funkcji dla programistów oraz bardzo prosty interfejs dla użytkowników / redaktorów. Właśnie dlatego mój wzrok został skierowany właśnie na ten framework i powstanie na jego temat kilka tutoriali, począwszy od instalacji,  aż do rozwoju platformy o nowe elementy.

Czy jest to fajny system? Zdecydowanie tak, jednak na początku bez developera ani róż. Nie ma cudownego (jak w WordPressie) zarządzania skórkami. Pierwsze co trzeba zrobić to łapać za konsolę i wpisywać zbiór komend żeby zainstalować całe to ustrojstwo w miarę stabilny sposób. Następnie przechodzimy do grzebania w plikach XML w celu konfiguracji przestrzeni roboczych – czyli naszych multi-witryn. Jeżeli nie chcesz bawić się w instalowanie Sulu aby samemu przekonać się że jest to super sprawa możesz sprawdzić sobie demo: http://demo.sulu.io/en oraz panel admina http://demo.sulu.io/admin/login (demo:demo).

 

Instalacja

Rozpoczynamy od pobrania repozytorium. Wydajemy w konsoli komendę:

git clone https://github.com/sulu-io/sulu-standard.git

Wchodzimy do projektu i przełączamy się dla pewności na mastera:

cd sulu-standard
git checkout master

Instalujemy composera (Linux) Poradnik instalacji:

curl -sS https://getcomposer.org/installer | php

Instalujemy Sulu.io:

composer install

1

Po pobraniu wszystkich składników (trochę ich jest) rozpoczniemy proces podawania danych dostępowych do bazy danych, smtp i ogólnej konfiguracji systemu. Dokładnie rozpisane parametry znajdziecie tutaj na samym końcu zebrane w tabelce.

Po wstępnym zainstalowaniu systemu przechodzimy do wydania szeregu komend które skopiują dla nas domyślne elementy wyglądu.

cp app/Resources/webspaces/sulu.io.xml.dist app/Resources/webspaces/sulu.io.xml

Po skopiowaniu naszej przestrzeni roboczej musimy ją wyedytować. Wchodzimy w plik i zmieniamy wszystko co ma w nazwie sulu na swój adres / domenę. Dla przykładu mój config dla maszyny wirtualnej.

<?xml version="1.0" encoding="utf-8"?>
<webspace xmlns="http://schemas.sulu.io/webspace/webspace"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://schemas.sulu.io/webspace/webspace http://schemas.sulu.io/webspace/webspace-1.0.xsd">

    <name>192.168.56.180</name>
    <key>192_168_56_180</key>

    <localizations>
        <localization language="en" shadow="auto">
            <localization language="en" country="us" shadow="auto"/>
        </localization>
        <localization language="de">
            <localization language="de" country="at"/>
        </localization>
    </localizations>

    <theme>
        <key>default</key>
        <default-templates>
            <default-template type="page">default</default-template>
            <default-template type="homepage">overview</default-template>
        </default-templates>

        <error-templates>
            <error-template default="true">ClientWebsiteBundle:views:error.html.twig</error-template>
            <error-template code="404">ClientWebsiteBundle:views:error404.html.twig</error-template>
        </error-templates>
    </theme>

    <navigation>
        <contexts>
            <context key="main">
                <meta>
                    <title lang="de">Hauptnavigation</title>
                    <title lang="en">Mainnavigation</title>
                </meta>
            </context>
            <context key="footer">
                <meta>
                    <title lang="de">Footernavigation</title>
                    <title lang="en">Footernavigation</title>
                </meta>
            </context>
        </contexts>
    </navigation>

    <portals>
        <portal>
            <name>192.168.56.180</name>
            <key>192_168_56_180</key>
            <resource-locator>
                <strategy>tree</strategy>
            </resource-locator>

            <localizations>
                <localization language="en" default="true"/>
                <localization language="de"/>
            </localizations>

            <environments>
                <environment type="prod">
                    <urls>
                        <url language="en">192.168.56.180</url>
                        <url language="de">192.168.56.180</url>
                        <url>192.168.56.180/{localization}</url>
                    </urls>
                </environment>
                <environment type="stage">
                    <urls>
                        <url>192.168.56.180/{localization}</url>
                        <url>192.168.56.180/{localization}</url>
                    </urls>
                </environment>
                <environment type="dev">
                    <urls>
                        <url>192.168.56.180/{localization}</url>
                        <url language="en">192.168.56.180</url>
                    </urls>
                </environment>
            </environments>
        </portal>
    </portals>
</webspace>

następnie kopiujemy domyślne templejty

cp app/Resources/pages/default.xml.dist app/Resources/pages/default.xml
cp app/Resources/pages/overview.xml.dist app/Resources/pages/overview.xml
cp app/Resources/snippets/default.xml.dist app/Resources/snippets/default.xml

czyścimy pliki projektu, zakładamy niezbędne foldery

rm -rf app/cache/*
rm -rf app/logs/*
mkdir app/data
sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs uploads/media web/uploads/media app/data
sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs uploads/media web/uploads/media app/data

I przechodzimy do instalacji bazy danych. Wersja developerska automatycznie założy nam użytkownika administracyjnego admin/admin oraz domyślną scheme uprawnień.

app/console sulu:build prod
LUB
app/console sulu:build dev

Jeżeli wybraliśmy wersję produkcyjną to musimy założyć uprawnienia oraz konto użytkownika:

app/console sulu:security:role:create
app/console sulu:security:user:create

no i ODPALAMY! 🙂

Kasztelan Paweł

Programista samouk, zakochany w ZF i Laravel, szerzący opinię że PHP + JS + HTML + CSS to są języki w których może zostać stworzona aplikacja równie dobra, a nawet lepsza od twardego klienta.