web-dev-qa-db-fra.com

Déployer Laravel 5 en utilisant uniquement FTP dans un hébergement partagé

J'ai besoin de déployer un projet laravel 5 sur un hôte client.

Le plan de mon client est l'hébergement de base: Linux + MySql sans cpanel ou similaire (c'est-à-dire sans panneau d'administration).

J'ai accès uniquement via ftp et uniquement à un dossier nommé www.mycustomerweb.com. Cela signifie que je ne peux pas créer de répertoire au même niveau que le dossier www.mycustomerweb.com. Seulement à l'intérieur (je pense que cela s'appelle l'hébergement partagé).

Il y a un an, j'ai déployé un projet réalisé avec Laravel 4 de cette façon:

  1. s'est débarrassé du dossier public en déplaçant son contenu vers le dossier racine et en mettant à jour index.php et bootstrap.php
  2. projet complet terminé dans localhost (avec Xampp)
  3. téléchargé tous les fichiers sur www.myclientweb.com via ftp.

Mes questions sont:

  1. Ai-je tout fait correctement avec laravel 4? Puis-je être tombé dans des problèmes de sécurité (je veux dire, le site est-il sûr)?

  2. Comment déployer un projet laravel 5 sur le même site? Dans Laravel 5 je ne peux pas me débarrasser du dossier public comme je l'ai fait avec Laravel 4.

En ce moment, j'ai mis en place une nouvelle installation de Laravel 5 sur localhost, puis j'ai téléchargé tous les fichiers dans le dossier www.myclientweb.com via ftp:

Ce n'est sûrement pas la bonne façon ...

J'ai eu une longue recherche sur le Web et Stackoverflow sans succès.

Appréciez vraiment toute aide.

Merci d'avoir lu.

18
Andrew F.

Il n'y a pas de différence entre L4 et L5, faites donc la même chose que vous avez fait pour L4.

2
Karwan Jacksi
  1. Je crée un nouveau dossier nommé "protégé"
  2. Déplacer tout sauf le dossier "public" dans le dossier "protégé"
  3. Déplacer tout dans le dossier "public" vers la racine
  4. Modifier index.php dans le dossier racine (à partir du dossier public),

éditer require __DIR__.'/../bootstrap/autoload.php'; en require __DIR__.'/protected/bootstrap/autoload.php';

éditez également $app = require_once __DIR__.'/../bootstrap/app.php'; en $app = require_once __DIR__.'/protected/bootstrap/app.php';

10
Agung Kessawa

MISE À JOUR
C'est un processus risqué. En l'utilisant, vous accordez aux utilisateurs malveillants les autorisations de rechercher des bogues. comme, http: //project-url/storage/logs/laravel.log est toujours ouvert.


Réponse précédente:
Ceux qui vérifient à peine les commentaires, @Andrew F. a déjà donné la réponse.
mais il a manqué quelques autres fichiers comme composer et package.
La réponse formatée est:

  1. déplacer tous les fichiers publics dans le dossier parent.
  2. mettre à jour les chemins dans index.php.
  3. ajoutez la ligne suivante au .htaccess:
    RewriteRule ^ (server\.php | gulpfile\.js |\.env | composer. * | Package. *) - [F, L, NC]
8
ssi-anik

Si vous essayez d'exécuter Laravel 5.1 dans un espace d'hébergement partagé ou si vous essayez de placer votre laravel 5/5.1 dans un sous-répertoire de votre hébergement partagé) afin que vous puissiez y accéder comme ceci:

http://mywebsite.com/mylaravel/

Donc, cette réponse est pour vous, tout d'abord assurez-vous de rencontrer

Configuration requise pour Laravel 5.1:

- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL

Voici deux tutoriels pour vous:

Lien 1

Lien 2

2

Dans Apache, vous pouvez réaliser ceci quelque chose comme

    RewriteEngine on
    RewriteBase /

  # Rewrites all URLS without blog in them
    RewriteCond %{REQUEST_URI} !^/blog/

  # Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
    RewriteCond %{HTTP_Host} ^(www\.)?example\.

  # Rewrite all those to insert /folder
    RewriteRule ^(.*)$ /blog/$1 [L]
0
HARENDRA SINGH