Bonjour,

Je suis en train de travailler sur une application Laravel et je cherche à l'héberger sur un serveur mutualisé chez OVH. J'ai déjà tenté de mettre en place l'hébergement moi-même, mais je rencontre quelques difficultés.

J'ai trouvé quelques vidéos sur YouTube qui expliquent comment déplacer le dossier public à la racine du dossier de l'application, mais je suis préoccupé par les éventuels problèmes de sécurité que cela pourrait causer.

Est-ce que quelqu'un aurait des conseils ou une solution alternative pour héberger une application Laravel sur OVH ? Je suis ouvert à toutes les suggestions et je vous remercie d'avance pour votre aide.

Cordialement !

8 réponses


Bonjour,
Je pourrais vous aider à déployer votre projet Laravel sur un hébergeur. C'est vrai je n'ai pas encore eu à utiliser OVH (J'utilise Hostinger) mais je pourrais vous aider dans le déploiement si vous m'expliquez votre problème.
Cordialement !

Agarmur
Auteur

un grand merci de vouloir m'aider ! Le problème que je rencontre c'est j'ai mon projet laravel, j'ai mis tout mon projet sur mon serveur avec FileZila le problème c'est que pour y accéder je dois lui donner l'adresse suivante https://test/public, j'avais vu des vidéos qui extraits le dossier public dans la racine du projet pour crée un nouveau dossier avec les autres fichiers du projet et après cela change des choses dans le fichier index, mais je me demande si c'est bien sécurisé de faire cela

cordialement !

Bonjour

Personnellement, cela fait des années que j'utilise laravel avec OVH.
J'utilise capistrano et un dépot framagit pour le déploiement.
Dans ovh, j'ai réorienté le nom de domaine vers www/..../current/public !
capistrano permet d'avoir une sorte de système de versionning. Pour le dossier vendor, j'exécute composer.phar en le téléchargeant via capistrano!

Si tu as des questions, n'hésite pas.

Agarmur
Auteur

Bonjour, merci de votre message, vous auriez des tutoriels pour mettre en place ce systeme ?

Cordialement !

J'avais suivi le tutoriel de @Grafikart => https://grafikart.fr/tutoriels/capistrano-740

Et j'avais fait une "recette" peut etre mauvais terme, pour installer et executer composer sur ovh. Pas pour nodejs, cela ne fonctionne pas.

Je te met, ci dessous ma recette:
laravel.rake

namespace :laravel do

    desc 'Installe composer'
    task :composer do
        on roles(:web) do
            within release_path do
                puts "## Téléchargement de composer"
                # execute 'php -r "readfile(\'https://getcomposer.org/installer\');" | php'
                execute :mv, '/home/....../composer.phar', release_path + 'composer.phar'
            end
        end
    end

    desc 'Récupère les dépendances'
    task :install do
        on roles(:web) do
            within release_path do
                puts "## Récupération des dépendances (a adapté avec la version chez ovh)"
                execute '/usr/local/php8.1/bin/php', 'composer.phar', :install, '--prefer-dist --no-dev -o --no-suggest --no-progress'
            end
        end
    end

    desc 'Permission de Laravel'
    task :permissions do
        on roles(:web) do
            within release_path do
                puts '## Changement des droits'
                execute :chmod, '777', '-R', 'storage'
                execute :chmod, '777', '-R', 'bootstrap/cache'
            end
        end
    end

    desc 'Nettoyage de Laravel'
    task :cleanup do
        on roles(:web) do
            within release_path do
                puts '## Nettoyage'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'cache:clear'
                execute :rm, release_path + 'composer.phar'
                execute :rm, '-rf', '/home/...../.composer'
            end
        end
    end

    desc 'Creation des sitemaps de Laravel et nettoyage'
    task :sitemap do
        on roles(:web) do
            within release_path do
                puts '## Création des sitemaps'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'sitemap:primarygenerate'
                puts '## Création du sitemap par defaut'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'sitemap:citygenerate'
                puts '## Création du sitemap des villes'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'sitemap:newsgenerate'
                puts '## Création du sitemap des dernières news'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'sitemap:oldgenerate '
                puts '## Création du sitemap des vieilles news'
                puts '## view cache'
                execute '/usr/local/php8.1/bin/php', 'artisan', 'view:clear'
            end
        end
    end

end

J'espère que cela t'aidera

Agarmur
Auteur

Un grand merci de votre aide, je vais regarder cela !

Agarmur
Auteur

J'aurais encore une question a ce sujet mais une fois les dossiers crée (current, releases, repo, shared), comment je fais avec le nom de domaine, le nom de domaine doit bien pointer vers le dossiers public mais je me demande du quel current ? ou shared/public ? (prealablement configurer avec capistrano)

Cordialement !

Simplement, tu renvoies ton nom de domaine vers www/current/public !
En fait current est un lien symbolique vers releases/9898988989 (qui se crait au fur et à mesure)

Agarmur
Auteur

D'accord, cette bien cette ligne qui creer le lien symbolique :

append :linked_dirs, "public", "storage/framework/sessions"

La, je vais t'avouer que je ne sais plus trop, mon script date de 7ans ;)
Dans le cadre de mon projet

# Default value for :linked_files is []
append :linked_files, ".env", 'public/.htaccess', 'public/sitemap-city.xml', 'public/sitemap-news.xml', 'public/sitemap-old.xml', 'public/sitemap.xml'

# Default value for linked_dirs is []
append :linked_dirs,  "public/uploads", "public/backups",'storage/framework/cache', 'storage/framework/sessions', 'storage/backups', 'public/newsletter', 'storage/logs', 'storage/app/analytics'