nineskeletor/README.md

3.8 KiB
Executable File

NINESKELETOR

Squelette applicatif symfony

Installation for local dev

curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash  
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -  
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list  
apt-get update  
apt-get install git docker-compose composer symfony-cli php php-xml php-zip php-gd php-curl php-pgsql yarn  
git clone https://forge.cadoles.com/Cadoles/nineskeletor.git  
cd nineskeletor  
symfony server:ca:install  
cp .env .env.local  

Change in .env.local APP_SECRET variabile
This secret is the init password for admin user

Change in .env.local MERCURE_JWT_SECRET variable
And report this secret in docker-compose.yml MERCURE_PUBLISHER_JWT_KEY and MERCURE_SUBSCRIBER_JWT_KEY

And finish with

bin/reconfigure.sh

Run for local

symfony server:start

Installation for apache

exec installation for local dev except /bin/reconfigure.sh

Between
Change in .env.local APP_WEBURL variable
For sample

APP_WEBURL=MyDomaine

Change in .env.local MERCURE variable like
The /hub alias must be the same on Apache configuration ProxyPass and ProxyPassReverse

MERCURE_URL=http://MyDomaine/hub/.well-known/mercure
MERCURE_PUBLIC_URL=http://MyDomaine/hub/.well-known/mercure  

Create the file docker-compose.override.yml like
The port 9090 must be the same in the apache configuration ProxyPass and ProxyPassReverse

version: '3'

services:
  mercure:
    ports:
      - "9090:80"    
    environment:
      SERVER_NAME: ':80'
      MERCURE_PUBLISHER_JWT_KEY: '!ChangeMe!'
      MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeMe!'
      MERCURE_EXTRA_DIRECTIVES: |
        cors_origins http://MyDomaine

And finish with

bin/reconfigure.sh

After install and configure apache

apt-get install apache libmodapache2
a2enmod rewrite proxy_http
service apache2 restart

sample apache configuration in /etc/apache2/site-available/000-

<VirtualHost *:80>
	DocumentRoot /var/www/html/nineskeletor/public
 	CustomLog /var/log/apache2/access.log common
    ErrorLog /var/log/apache2/error.log

    <Directory /var/www/html/nineskeletor/public>
        DirectoryIndex index.php

        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>

        <IfModule mod_rewrite.c>
            RewriteEngine On

            RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
            RewriteRule .* - [E=BASE:%1]

            RewriteCond %{HTTP:Authorization} .+
            RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

            RewriteCond %{ENV:REDIRECT_STATUS} =""
            RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ %{ENV:BASE}/index.php [L]
        </IfModule>

        <IfModule !mod_rewrite.c>
            <IfModule mod_alias.c>
                RedirectMatch 307 ^/$ /index.php/
            </IfModule>
        </IfModule>
    </Directory>

    # For mercure server
    ProxyPass /hub/ http://localhost:9090/
    ProxyPassReverse /hub/ http://localhost:9090/

</VirtualHost>

<VirtualHost *:1080>
    # For mailer server
    ProxyPass / http://localhost:1080/
    ProxyPassReverse / http://localhost:1080/
</VirtualHost>

Cron Job

Make sure the cron job is running all the minute
You can copy this bin/nineskeletor.cron in your crontab

cp /var/www/html/nineskeletor/bin/nineskeletor.cron /etc/cron.d/nineskeletor

Messenger worker

Make sure the messenger consume the bus
Needed to send mail You can copy this bin/nineskeletor.service in your systemd

cp /var/www/html/nineskeletor/bin/nineskeletor.service /etc/systemd/system/
systemctl enable nineskeletor.service
systemctl start nineskeletor.service