Laravel, como instalar en producción?

Obsdark

Capo
Se incorporó
28 Septiembre 2019
Mensajes
118
Buenas compañeros capanuevinos,

Tengo una duda para su experiencia, alguno de ustedes sabe cómo arreglar esto?

El tema es que estoy instalando un laravel en un ubuntu server de un hosting que tengo.

Pero que hice mal/me falta para que quede bien?

Aparte, a la URL le tengo que poner apellidos para entrar allí, honda:

Laipdelserver/laravel/public

Como le hago para que al entrar a la IP altiro me lleve al public?

Espero sus comentarios.

Detalles técnicos
Laravel en apache, Ubuntu 18 y PHP 7.2
6e49ebeed3b9fffafed03758b01e5ff1.jpg


Enviado desde mi TA-1039 mediante Tapatalk
 

Kitsune

Fanático
Se incorporó
5 Mayo 2006
Mensajes
1.049
en teoria debieses solo publicar el distribuible
/dist o public que te genere composer y/o con la herramienta que estes usando
npm run ??
 
Upvote 0

Obsdark

Capo
Se incorporó
28 Septiembre 2019
Mensajes
118
en teoria debieses solo publicar el distribuible
/dist o public que te genere composer y/o con la herramienta que estes usando
npm run ??
Lo arregle ya

Al parecer tenía malo el archivo referente al 000-default.conf y a un programa que me faltaba para renderizarlo


Gracias igual (Y) (Y)

Enviado desde mi TA-1039 mediante Tapatalk
 
Upvote 0

BrujoChilote

Miembro Regular
Se incorporó
29 Noviembre 2019
Mensajes
33
Si tienes Apache corriendo debes modificar el archivo httpd-conf para poder hacer lo que necesitas.

Por ejemplo si ingresan a juanito.miapp.com ingrese directamente a > public de tu proyecto.

Te aconsejo que utilices algun dominio por mas seguridad ya que solo haces posible la conexion hacia la carpeta public de esta forma.

Saludos
 
Upvote 0

Amenadiel

Ille qui nos omnes servabit
Fundador
OVERLORD
REPORTERO
Se incorporó
15 Enero 2004
Mensajes
18.398
Que bueno que lo solucionaste.
De todos modos, eso que viste pasó por dos cosas:
  1. Tener que poner "laravel/public" es porque tu default.conf establece el document root en el directorio superior (imagino es /var/www).
  2. Ver el código de PHP como texto: es porque en tu default.conf no pusiste que la extensión PHP debe ir al handler correspondiente. (fastcgi o modphp en apache)

Es mala idea acceder directo por la IP de la máquina, porque tu webserver puede servir 500 sitios con la misma IP discriminando por dominio o subdominio, pero tú sólo estás usando el default.

Tomando los puntos 1 y 2, más la buena práctica de usar un vhost, imaginemos que tienes el dominio http://obsdark.dominio.com

En nginx junto al default pondrías (en /etc/nginx/sites-enabled)

PHP:
server {
    listen 80;

    # Sólo respondo a este dominio
    server_name obsdark.dominio.com;

    # Me ahorro poner /laravel/public
    root /var/www/laravel/public;

    index index.html index.htm index.php;

    location / {
        # esto permite el uso de nice urls porque usa index.php como router
        try_files $uri $uri/ /index.php?$query_string;
    }
    # Los php se van a fastcgi, puede ser un sock o un puerto (e.g. 9000)
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

En apache sería

PHP:
<VirtualHost *:80>

    # Sólo respondo a este dominio
    ServerName obsdark.dominio.com

    # Me ahorro poner /laravel/public
    DocumentRoot /var/www/laravel/public
   
    <Directory /var/www/laravel/public>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted

        <FilesMatch \.php$>
           # Los php se van a fastcgi, puede ser un sock o un puerto (e.g. 9000)
           SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock"
        </FilesMatch>
        # habilito niceurls explícitamente. También puedo hacerlo con un .htaccess en el sitio mismo
        RewriteEngine On
        RewriteRule ^(.*)/$ /$1 [L,R=301]
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
       
    </Directory>
</VirtualHost>
 
Upvote 0
Subir