Déployer son site Symfony sur un serveur Mutualisé

Il y a 2 ou 3 petites choses à faire, mais rien de bien sorcier, par contre la ressource n’est pas facilement trouvable sur le net.

Je vous conseille avant toute chose, de cloner votre projet dans un autre répertoire, il peut y avoir un risque de pétage de projet.

Tout d’abord, il faut faire un dump de votre environnement grâce à la commande :

composer dump-env prod

Une fois fait, vous vous retrouvez avec un fichier env.php qui contient un tableau associatif avec les accès BDD, serveur mail, etc. (ce qui se trouvait dans env.php). Pensez à mettre a jour avec vos identifiants BDD, serveur SMTP

Ensuite, passez en prod et relancez le composer install qui va ne prendre que les dépendances de la prod (pas de web profile, fixtures, etc.)

Une fois fait, vous devez ajouter 2 fichiers .htaccess. Un à la racine du site, le second dans le répertoire public.

Voici le contenu de celui à la racine, qui en gros redirige les requêtes vers le répertoire public en les passant en https.

RewriteEngine on

RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]

Et celui à mettre dans public qui va faire les branchements avec le moteur de Symfony


<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>

une fois fait, envoyez ça sur votre hébergement et normalement ça marche. En cas de problème, pensez à virer le cache, le plus facile c’est d’aller dans var et de renommer le répertoire prod en prod_ (c’est plus rapide, car il contient des centaines de fichiers)

Fichier robots.txt et autre ads avec Symfony

Comme vous le savez, une bonne pratique est d’ajouter un fichier robots.txt pour indiquer vos préférences en terme de crawler (enfin quand c’est pris en compte) idem si vous utilisez une régie de pub (ads.txt).

Pour qu’il soit visible dans un projet Symfony, il faut les placer dans le dossier public.

Générer les classes et les accesseurs avec Symfony depuis une BDD

Il est possible de générer toutes les classes et les entités depuis une base de données existante.

Cette commande génére l'entité sous forme de classe PHP:

php bin/console doctrine:mapping:import 'App\Entity' annotation --path=src/Entity

Si vous préferez le yml ou le xml à la place des annotations, il suffit de replacer annotation dans la commande.

 

Pour générer les accesseurs, il suffit de taper:

php bin/console make:entity --regenerate App

Il reste quelque petit trucs à ajouter à la main, mais ça supprime déjà pas mal de travail répétitif et sans intérêt.

Commande Ionic

Bon je commence à tester Ionic pour faire des applications mobiles hybrides (qui fonctionne sur toute les plateformes et qui sont codée avec des technos web). Je ferais peut être un tuto une fois que je me serait enfin dépatouiller avec l'implémentation de SQLite.

Démarrer un nouveau projet Ionic:

ionic start [nomDuProjet] [template]

template peut etre tabs, blank, etc.

Ajouter un component:

ionic g [component]

component => page, tabs, etc.

Lancer le serveur de développement:

ionic serve --lab

/!\ attention ne marche pas pour les fonctionnalités natives(accelerometre, stockage, etc.)

 

Ajouter la couche SQLITE en complement de PouchDB:

ionic cordova plugin add cordova-plugin-sqlite-2
npm install pouchdb --save
npm install pouchdb-adapter-cordova-sqlite --save

 

 

 

source:

https://www.techiediaries.com/ionic-sqlite-pouchdb/

Ajout d’un getUrl

Pour ajouter un getUrl sur l'objet et par exemple avoir un lien dans le titre d'un objet sur le River. Ajouter un hook handler dans le start.php

// Register a URL handler for idea
elgg_register_plugin_hook_handler('entity:url', 'object', 'idea_set_url');

et la fonction qui va bien:

function idea_set_url($hook, $type, $url, $params) {
    $entity = $params['entity'];
    if (elgg_instanceof($entity, 'object', 'idealab_idea')) {
        $title = elgg_get_friendly_title($entity->title);
        return "module/view/" . $entity->getGUID() . "/" . $title;
    }
}

Utilisé une vue d’un autre plugin dans Elgg

il existe plusieurs fonctions pour afficher les vues dans Elgg. elgg_view, elgg_view_form, elgg_view_annotation, etc.

Pour afficher une autre vue de base dans son module il suffit d'appeler la fonction elgg_view("chemin_du_module/nom_de_vue").

Attention si c'est une vue de type formulaire, c'est bien la fonction elgg_view_form

Cette fonction retourne un string du HTML generé par le moteur Elgg.

Installation d’Elgg sur Raspian

Si on veut installer Elgg, ou un autre site d'ailleurs, pour du développement, il faut suivre quelques étapes simple.

D'abord installer Raspbian.

[[inserer tuto installe Raspbian, quand je n’aurais plus la flemme]]

Installer MariaDB.

le probleme sur Raspian, c'est que mysql est accessible que depuis root car il utilise la socket unix pour s'y connecter, il faut alors créer un nouvel utilisateur, de toute façon c'est une bonne pratique de séparer les utilisateurs.

CREATE USER `newuser`@`localhost` IDENTIFIED BY `password`;

Lui donner les autorisations, comme c'est pour du dev on peut y aller franco:

GRANT ALL PRIVILEGES ON *.* TO `newuser`@`localhost`;

// on pousse les modifs, (pas sûr que cela soit obligatoire)

FLUSH PRIVILEGES;

Une fois les fichiers copiés dans le webroot, il faut lancer l'installe. Lors de la vérification d'usage, il faut que le module rewrite soit activé.

a2enmod rewrite

S'il reste un problème de rewriting, il faut édité le fichier /etc/apache2/apache2.conf et changer le

AllowOverride None => All

on restart le apache avec :

service apache2 restart

On peut aussi installer phpmyadmin pour facilité la gestion des BDD.

apt-get phpmyadmin

ajouter une ligne de commande dans le /etc/apache2/apache2.conf:

Include /etc/phpmyadmin/apache.conf


et comme d'hab
service apache2 restart