Comment installer un site réalisé php/symfony 5 et comme base de données MySql chez OVH avec ubuntu 22.04 VPS chez ovh


Première partie installation d'un VPS chez ovh sous Ubuntu 22.04

Après la connexion mise à jour se connecter sur le vps pour une mise à jour complète

$ sudo apt update
$ sudo apt upgrade

Relancement par l'interface de gestion

Vue VPS relancement

Et garder l\'adresse ip v4 pour la connexion au domaine

L'association du domaine par l'adresse ip V4

Dans la gestion des domaines d\'ovh, la cible du domaine pour un site web est de type A

Vue domaine config

Pour la modification du lien du domaine recopier à l'emplacement prévu l\'adresse ip V4 du vps

Vue domaine modif

La seconde fenêtre sert de vérification des valeurs

Vue domaine modif2

Ne pas oublier de modifier le sous-domaine de base www

Vue sous-domaine modif

Sur le serveur

Installation de LAMP

    $ sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql

Création d’un utilisateur sous mysql

    $ sudo mysql
    mysql> create user <username> identified by <yourpassword> ;
    mysql> grant all access to <username> ;
    mysql> exit ;

Composer

    $ sudo apt install composer

Complément d'installation php

    $ sudo apt install php-gd php-xml php-dom php-fpm php-curl php-intl php-json php-mbstring php-zip

Installation gestion des droits d’accès aux fichiers

    $ sudo apt acl

Config apache

    $ sudo a2enmod proxy_fcgi setenvif

Pour les répertoires Symfony

La mise en place doit obligatoirement se faire dans un sous-répertoire de /var/www/. Par défaut les .htaccess sont désactivés

    $ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
    $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
    $ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

Créer le .env.local avec vos données de production. Pour la connection de la base de données elle doit être conforme à la norme des liens html

Installation des dépendances

    $ sudo composer install

Gestion des assets (calcul automatique des liens)

    $ sudo apt npm
    $ sudo npm install
    $ sudo npm run build

Création du site virtuel

Contenu du fichier conf

<VirtualHost *>
    ServerName blog-db.fr
    ServerAlias www.blog-db.fr
    ServerAdmin ubuntu@localhost
    DocumentRoot /var/www/<your_subdirectory>/public
    DirectoryIndex /index.php
    ErrorLog /var/log/apache2/project_error.log
    CustomLog /var/log/apache2/project_error.log combined
    <Directory /var/www/<your_subdirectory>/public>
        AllowOverride None
        Order Allow,Deny
        Allow from All
        FallbackResource /index.php
    </Directory>
    <Directory /var/www/<your_subdirectory>/public/bundles>
        DirectoryIndex disabled
        FallbackResource disabled
    </Directory>
</ VirtualHost>

activation du site dans apache2

pour information le nom du site c\'est le nom du fichier conf sans l'extension

    $ sudo a2ensite <site>
    $ sudo systemctl reload apache2

pour désactiver le site dans apache

    $ sudo a2dissite <site>
    $ sudo systemctl reload apache2

Pour la base de données

une fois vos données environnemental OK

    $ php bin/console doctrine:database:create
    $ php bin/console doctrine:migrations:migrate

création de l'admin

Le code ci-dessous pour crypter le mot de passe de l'administrateur, et récupérer son hash

    $ symfony console security:hash-password

creation de l'admin

    $ mysql -u <your user> -p
    entrer votre mot de passe
    mysql> connect <your database>
    mysql> INSERT INTO user (username, roles, password, is_verified)
        -> VALUES ('your admin name', '[\"ROLE_ADMIN\"]',
        -> 'your hashed password',1);
    mysql> Commit;
    mysql> exit

Mise en place du mode https avec lestencrypt

Installation de snap

    $ sudo snap install core; sudo snap refresh core

N'existe pas de base sur ubuntu 22.04, mais par sécurité

    $ sudo apt-get remove certbot

Installation certbot

    $ sudo snap install --classic certbot

Création d'un lien pour exécution

    $ sudo ln -s /snap/bin/certbot /usr/bin/certbot

activation de certbot

    $ sudo certbot --apache