2017-04-18 1 views
0

J'ai développé une application en laravel 5.2. J'utilisais l'hôte virtuel sur local et en pointant publice/index.php facilement.Déploiement de l'application Laravel 5.2 en production

Mais sur la production pourquoi nous avons besoin d'utiliser le put index.php & tout le contenu du dossier public. Est-ce la meilleure pratique à déployer en production?

J'ai copié tout le contenu du dossier du projet et du dossier public copié à la racine (public_html) du serveur.

J'ai modifié l'index.php en conséquence et son fonctionnement correct.

require __DIR__.'/project/bootstrap/autoload.php'; 


$app = require_once __DIR__.'/project/bootstrap/app.php'; 

problème est quand j'utiliser l'outil de déploiement automatique, il pousse le code entier dans le dossier du projet. Chaque fois que je déplace des assets par ssh de projet/public/assets vers root/assets manuellement. Je suis également confronté à un problème, l'enregistrement de l'image de profil dans le dossier des actifs. Mais il sauvegarde l'image dans le projet/public/asset au lieu de cela dans root/assets. Je suis vraiment confus sur cette question aussi.

me conseillez S'il vous plaît me recommander les meilleures pratiques, où dois-je garder ce dossier public et la façon de gérer le déploiement automatique. Pouvons-nous garder index.php en public et pointer directement index.php ici. De cette façon, le déploiement automatique fonctionne correctement. Problème dans les commandes après le déploiement J'utilise DeployHQ.com pour déployer mon code. Il exécute les commandes ssh, mais malheureusement ma commande ne fonctionne pas car le fichier artisan est dans le dossier racine/abc/project. Je ne sais pas où ce shell exécute les commandes. ou Comment pointer directement le dossier du projet pour exécuter ces commandes.

Bitbucket webhook return 422 code d'erreur J'utilise bitbucket webhook sur un événement d'approbation. Je lui ai donné l'URL de déploiement et le déploiement automatique est activé. Hook a également déclenché, mais il n'a déployé aucune chose, il affiche le code d'erreur 422 et l'erreur "Impossible de décoder le déploiement".

+0

Vous rencontrez trop de problèmes s'il vous plaît affiner à spécifique. 'index.php' en public devrait être là et ne pas être changé son seul but est de charger laravel et rien de plus. L'accès au dossier public devrait être autorisé .. vous pourriez avoir de mauvaises permissions sur d'autres répertoires. Vous pouvez également utiliser la classe de stockage pour placer les fichiers dans le répertoire de stockage et les servir uniquement via les itinéraires que vous utilisez pour limiter/contrôler l'accès.Vous devriez vraiment lire le guide, il explique en détail tout pour le déploiement de l'application laravel, utilisez également la documentation du service que vous utilisez. – Gntem

+0

quel type d'hébergement héberge votre serveur de production? – umefarooq

+0

Avoir un hébergement sur un serveur dédié. – ghulamjafar

Répondre

0

Le fichier index.php doit se trouver dans le dossier public. Tout le reste ne devrait pas. Votre serveur Web doit être configuré pour pointer vers ce répertoire.

Le fichier index.php amorce le cadre Laravel. Les fichiers de structure doivent s'asseoir dans un répertoire en dehors du dossier accessible au public. Cela se trouve généralement dans le répertoire au-dessus du dossier public /.

Vous ne devez pas contourner votre outil de déploiement. Il devrait être configuré pour maintenir cette structure de répertoire. Une fois qu'il n'y a pas de confusion quant à l'endroit où les fichiers doivent être poussés, vous pouvez commencer à résoudre vos autres problèmes de déploiement liés au chemin. Pour éviter de futures douleurs, je vous recommande de configurer votre environnement de développement le plus près possible de la production.

+0

si ma structure est public_html/abcd, Donc abcd est un dossier accessible au public. Où devrais-je créer un dossier qui ne serait pas accessbile publiquement? – ghulamjafar

+0

Par convention public_html/devrait être votre dossier publiquement accessible contenant index.php. Par défaut, Laravel nomme ce dossier "public" - mais dans votre cas, il s'appelle "public_html" et vous devez configurer votre serveur pour le désigner comme votre racine de document. Les fichiers de structure Laravel doivent contenir un répertoire au-dessus de ce dossier public. – JasonBoss