not - laravel azure website
¿Cómo instalar Laravel 4 en una subcarpeta de host web sin exponer públicamente/app/folder? (9)
Me preguntaba si alguno de ustedes sabe de una forma de instalar Laravel 4 en una subcarpeta SUBDIRECTORY / host web sin exponer la carpeta / app / y otros archivos sensibles a la parte de acceso público del host.
La idea es que podría acceder a http://mydomain.com/mylaravel/ para poder usar Laravel, pero al mismo tiempo quiero evitar que alguien haga algo como ir a http://mydomain.com/app/ o http://mydomain.com/mylaravel/app/ y básicamente puedo ver mis archivos de configuración y otro código.
¡Gente gente! ¡No hay necesidad de complicar demasiado las cosas!
(Para otras carpetas públicas, como htdocs
o www
simplemente reemplace public_html
a continuación con la suya).
- Coloque todas las cosas de Laravel en la carpeta de nivel superior (para que la carpeta de la
app
esté al lado de la carpetapublic_html
) - Mueva todos los archivos de
public
apublic_html
(asegúrese de mover también los archivos ocultos, como.htaccess
). - Eliminar la carpeta
public
ahora vacía En el cambio
bootstrap/path.php
''public'' => __DIR__.''/../public'',
a''public'' => __DIR__.''/../public_html'',
- Hecho.
Así que descubrí cómo hacer esto. Voy a explicar con un ejemplo.
Supongamos que es un dominio, http://dominio.com . Aquí hay un ejemplo de la estructura que podría estar usando:
domain.com/ (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/ (where your html files and such go)
| |-- [some other folders...]
| |-- yourlaravel4/
/public_html/
es la raíz de la parte de acceso público de sus archivos de alojamiento web. Desea crear una subcarpeta en /public_html/
(en este caso /public_html/yourlaravel4/
). En esta subcarpeta, almacenará todos los contenidos del public/
carpeta de Laravel 4.
Ahora, para el resto de los archivos. Tienes que ir a la raíz de tus archivos de alojamiento web, es decir, quieres estar en domain.com/
level, por lo tanto, puedes ver public_html/
y algunas otras carpetas. Entonces, necesitamos crear una carpeta aquí, donde se almacenarán los archivos base de Laravel 4. En este caso, es domain.com/yourlaravel4_base/
. Dentro de yourlaravel4_base/
tenemos que almacenar todos los archivos y carpetas que existen en el directorio base de Laravel 4. Eso sería app/
, bootstrap/
, vendor/
, server.php
, etc. Todo EXCEPTO la carpeta /public/
, cuyo contenido ya has almacenado en public_html/yourlaravel4/
.
Finalmente, necesitamos editar 2 archivos: /bootstrap/paths.php
de Laravel y /public/index.php
.
En el archivo paths.php
, reemplace:
''app'' => __DIR__.''/../app'',
con:
''app'' => __DIR__.''/../../yourlaravel4_base/app'',
En el archivo paths.php
, reemplace:
''public'' => __DIR__.''/../public'',
con:
''public'' => __DIR__,
En el archivo paths.php
, reemplace:
''base'' => __DIR__.''/..'',
con:
''base'' => __DIR__.''/../../yourlaravel4_base'',
En paths.php
, reemplace:
''storage'' => __DIR__.''/../app/storage'',
con:
''storage'' => __DIR__.''/../../yourlaravel4_base/app/storage'',
En index.php
, reemplace:
require __DIR__.''/../bootstrap/autoload.php'';
con:
require __DIR__.''/../../yourlaravel4_base/bootstrap/autoload.php'';
En index.php
, reemplace:
$app = require_once __DIR__.''/../bootstrap/start.php'';
con:
$app = require_once __DIR__.''/../../yourlaravel4_base/bootstrap/start.php'';
Subir cambios Ahora debería poder tener instalado Laravel 4 en una subcarpeta en su sitio web sin exponer realmente la app/
carpeta y otros archivos confidenciales. :)
Asegúrate de verificar tus permisos. Implementé lo siguiente aunque no lo recomiendo.
Usé SSH e hice algo como:
rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING
ln -s project_folder/public/ public_html // where the format is ln -s target name
Después, recibiría un mensaje como "Vaya, parece que algo salió mal" (o un error según la configuración de depuración). Para solucionar esto, solo tuve que cambiar mis permisos a 755 para mis carpetas . referencia: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel
En general, voy a volver atrás y probar la forma original con los permisos modificados ya que considero que esta ruta es menos segura y más dependiente de mi servicio al cliente de hosting.
***** Nota ***** Este comando obviamente elimina su carpeta public_html (también llamada a veces pública o www). Debe tener una copia de seguridad de todos los archivos porque lo está eliminando. Además, deberá estar preparado para pasar por el servicio de atención al cliente para restaurarlo. Muchos servicios de hosting no le permiten simplemente recrear la carpeta por su cuenta.
La respuesta de Emmanuel no funciona para mí, pero hice algunos cambios para que funcione. aunque utilicé mi raíz web para ser la fuente de un proyecto. ahí está ; Tengo la carpeta htdocs como carpeta raíz pero es posible que tenga otra, como public_html, www o más. puedes reemplazar fácilmente mis htdocs con el que tienes.
bien
mi dircetorio
root/ htdocs .htaccess .override
primero resolví todas las dependencias de laravel en mi servidor local en Windows con el compositor. después de eso hice empacar todo el paquete en laravel4.zip. en mi htdocs creo una carpeta laravel y cargué y descomprimí el archivo zip en ella.
htdocs/ laravel/ app bootstrap public vendors ...
así que después de haber descomprimido el archivo, moví todo en la carpeta pública a la carpeta htdocs
htdocs/ laravel packages .htaccess favicon.ico index.php robots.txt
ahora tenemos que reescribir algunos pathes en htdocs / index.php y htdocs / laravel / bootstrap / paths.php
pero vamos a abrir htdocs / laravel / bootstrap / paths.php. tu verias
''app'' => __DIR__.''/../app'',
Qué significa eso . significa que estamos parados en htdocs / laravel / bootstrap / path. y allí necesitamos salir de esta carpeta para abrir la carpeta y luego ir a la carpeta de aplicaciones. Okay . esta es la estructura del laravel para el enrutamiento. si lo haces bien, puedes hacer correr tu laravel.
encontrar
''public'' => __DIR__.''/../public'',
y cambiarlo a
''public'' => __DIR__.''/../../htdocs'',
(simple ha) con uno (../) de estos podemos subir una carpeta. entonces ahora estamos en la carpeta laravel. pero tenemos que estar en htdocs. entonces tenemos que escribir otro (../) para llegar allí.
abra htdocs / index.php y encuentre
require __DIR__.''/../bootstrap/autoload.php'';
cambiarlo a
require ''laravel/bootstrap/autoload.php'';
require es una función php incorporada así que vamos a tratarlo como un simple php. Realmente no necesitamos un estilo laravel para recuperar el archivo autoload.php. así que simplemente quítalo y elige el estilo clásico
encontrar
$app = require_once __DIR__.''/../bootstrap/start.php'';
cambiarlo a
$app = require_once ''laravel/bootstrap/start.php'';
Puede usar un alias: sin hankey-pankey con directorios generalizados en su sistema.
Especifique en su httpd.conf o panel de administración:
/mylaravel/ /path/to/laravel/public
Además, especifique la URL en su aplicación Laravel.php
Línea 29
''url'' => ''http://yourdomain.com/mylaravel/'',
Eventualmente configure RewriteBase en su /public/.htaccess
RewriteBase /mylaravel/
¡Funciona como un encanto y mantiene su estructura de directorios limpia y al grano!
Si está intentando ejecutar Laravel 5.1 en un espacio de alojamiento compartido y todas las respuestas anteriores parecen ser un poco diferentes de los archivos / carpetas de Laravel reales o está buscando cómo poner su laravel 5 / 5.1 en un subdirectorio en su espacio de alojamiento compartido para que pueda acceder de esta manera:
http://mywebsite.com/mylaravel/
Así que esta respuesta es para ti, antes que nada asegúrate de conocer
Requisitos de Laravel 5.1:
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
aquí dos tutoriales fáciles para usted:
Si está utilizando el asistente addondomain o subdomaind en su panel, el asistente le preguntará por la raíz del documento. por ejemplo, quiero agregar droidman.com, el asistente debe sugerirme con la creación de la carpeta droidman.com. en este paso, indique al asistente que cree la carpeta droidman.com/public. luego coloque su aplicación en la carpeta droidman.com. su host mirará la carpeta pública;). problema resuelto
Si está utilizando un servidor apache, la forma más sencilla de hacerlo es almacenar su aplicación Laravel fuera de la raíz de www (o en una carpeta protegida en www root) y luego vincular simbólicamente la subcarpeta deseada para apuntarla a la carpeta pública en laravel
Por ejemplo, coloco mis instalaciones de Laravel en:
/usr/local/share/myLaravel
Luego, en su carpeta pública www, cree un enlace simbólico de la siguiente manera:
ln -s /usr/local/share/myLaravel/public mylaravel
Tendrá que hacer algunos ajustes en su instalación, como colocar su Base de Reescritura en / mylaravel / y asegurarse de que sus archivos de configuración permitan anulaciones en la ubicación base, pero esto es más simple que modificar todo.
Si simplemente desea configurar Laravel Project en un alojamiento compartido y tiene acceso a cPanel, puede seguir los pasos que he seguido y que funcionó bien.
Paso 1: crea un archivo zip o tar de tu aplicación Laravel completa en tu máquina local.
Paso 2: ve a Cpanel. Suba el archivo zip / tar al directorio public_html y luego extráigalo. (También puede crear una carpeta separada para su aplicación laravel. Como deseo subir más de una aplicación Laravel, he creado un directorio separado para cada una, como se muestra en la imagen de abajo).
Paso 3: Ahora ve a ''Addon Domain'' y cambia la raíz del documento de tu dominio especificado. Apunte el dominio a la carpeta pública.
Ahora compruebe su dominio redirigirá al archivo public / index.php. No hay necesidad de cambiar ningún camino.