Skip to content

Instantly share code, notes, and snippets.

@aduartem
Last active May 21, 2022 19:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aduartem/1071139788f153f2341dbf4648b113c3 to your computer and use it in GitHub Desktop.
Save aduartem/1071139788f153f2341dbf4648b113c3 to your computer and use it in GitHub Desktop.
Laravel 5.x, PHP 7.1 y Laravel 5.x en Ubuntu 18.04 LTS

Laravel 5.x, PHP 7.1 y Laravel 5.x en Ubuntu 18.04 LTS

Primero que todo actualizar los repositorios

$ sudo apt update

Instalar Apache2 Web Server

$ sudo apt install apache2

Comandos Apache2

$ sudo systemctl stop apache2
$ sudo systemctl start apache2
$ sudo systemctl reload apache2
$ sudo systemctl enable apache2

Instalar PHP 7.1 y módulos básicos

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php

Actualizamos los repositorios

$ sudo apt update
$ sudo apt install php7.1 libapache2-mod-php7.1 php7.1-mcrypt php7.1-cli php7.1-mbstring php7.1-xml php7.1-zip php7.1-mysql php7.1-gd php7.1-imagick

Configurar Apache2 y PHP

Abrir el archivo php.ini

$ sudo vim /etc/php/7.1/apache2/php.ini

Ejemplo configuración:

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Santiago

Verificar que el archivo /etc/apache2/mods-available/dir.conf contenga index.php

$ cat /etc/apache2/mods-available/dir.conf

output:

<IfModule mod_dir.c>
     DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Para que los cambios hagan efecto, reiniciar Apache2:

$ sudo systemctl restart apache2

Test PHP

$ sudo vim /var/www/html/phpinfo.php

Agregar la siguiente línea y guardar el archivo:

<?php phpinfo( ); ?>

Chequear que la página se este resolviendo correctamente desde http://localhost/phpinfo.php

Instalar Composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Como super usuario mover el archivo descargado a /usr/local/bin y renombrarlo "composer"

Instalar Laravel

Ejecutar por línea de comandos lo siguiente:

$ composer global require "laravel/installer"

Agregar al PATH el directorio bin del vendor:

Para Ubuntu 14.04

$HOME/.composer/vendor/bin

Últimas distribuciones GNU / Linux:

$HOME/.config/composer/vendor/bin

Mac OS:

$HOME/.composer/vendor/bin

Agregando variable de entorno en distribuciones GNU/Linux:

Imprimimos la variable $PATH para revisar las variables seteadas:

$ echo $PATH

output:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Crear/Editar archivo .profile

$ vim ~/.profile

Añadir lo siguiente al final del archivo y guardamos los cambios realizados:

export PATH=$PATH:$HOME/.config/composer/vendor/bin

Cerramos la terminal o corremos el comando source e imprimimos la variable $PATH para verificar que reconozca la nueva variable de entorno:

$ source .profile
$ echo $PATH

output:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/andres/.config/composer/vendor/bin

Agregando variable de entorno en Mac OS:

Imprimimos la variable $PATH para revisar las variables seteadas:

$ echo $PATH

output Mac OS:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Crear/Editar archivo .bash_profile

$ vim ~/.bash_profile

Añadir lo siguiente al final del archivo y guardamos los cambios realizados:

export PATH=$PATH:$HOME/.composer/vendor/bin

Cerramos la terminal o corremos el comando source e imprimimos la variable $PATH para verificar que reconozca la nueva variable de entorno:

$ source .bash_profile
$ echo $PATH

output:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/andres/.composer/vendor/bin

Verificar instalación

Al ejecutar el siguiente comando:

$ laravel

Podemos ver que Laravel quedo correctamente instalado de forma global:

Laravel Installer 2.0.1

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help  Displays help for a command
  list  Lists commands
  new   Create a new Laravel application.

Crear un proyecto con el comando laravel

A continuación vamos a crear un proyecto laravel dentro de una nueva carpeta llamada workspace.

Creamos la carpeta workspace dentro de la carpeta de nuestro usuario y nos cambiamos de carpeta:

$ mkdir ~/workspace
$ cd ~/workspace

Ahora creamos el proyecto laravel:

$ laravel new blog

Crear un proyecto vía composer

Crear un proyecto Laravel para PHP 7.1

$ composer create-project --prefer-dist laravel/laravel blog

Crear un proyecto Laravel para PHP 5.6

composer create-project laravel/laravel blog "5.1.*"

Levantar servidor de desarrollo local

$ php artisan serve

Crear Virtual Host en Apache

1.- Crear link simbólico del proyecto laravel en /var/www

Asumiendo que creamos el proyecto blog en ~/workspace, crearemos un link simbólico en el directorio /var/www:

$ cd /var/www
$ sudo ln -s ~/workspace/blog .

2.- Habilitar mod_rewrite

$ sudo a2enmod rewrite

3.- Crear el archivo para configurar el virtual host.

Crear el archivo blog.cl.conf en /etc/apache2/sites-available/ y agregar lo siguiente:

<VirtualHost *:80>
        ServerAdmin nombrecorreo@gmail.com
        ServerName blog.cl
        ServerAlias www.blog.cl
        DocumentRoot /var/www/blog/public/

        <Directory /var/www/blog/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/blog.cl/error.log
        CustomLog ${APACHE_LOG_DIR}/blog.cl/access.log combined
</VirtualHost>

4.- Editar el archivo /etc/hosts y agregar la siguiente línea:

$ sudo vim /etc/hosts
127.0.0.1 blog.cl

5.- Crear carpeta blog.cl en /var/log/apache2/

$ sudo mkdir /var/log/apache2/blog.cl
$ cd /var/log/apache2
$ sudo touch error.log access.log

6.- Habilitar el virtualhost:

$ sudo a2ensite blog.cl.conf

7.- Reiniciar el apache

$ sudo systemctl reload apache

8.- Dar propietario y grupo www-data a las carpetas bootstrap y storage (Esto sólo aplica si utilizamos apache ó nginx):

$ sudo chown -Rvf www-data:www-data bootstrap storage

Laravel - Línea de comandos

Artisan

Listar todos los comandos habilitados

$ php artisan list

Ver versión

$ php artisan --version

Crear un controlador

Primero que todo debemos ubicarnos en el directorio del proyecto.

$ php artisan make:controller EjemploController

Salida:

Controller created successfully.

Este comando creará un controlador en el directorio app/Http/Controllers/

Crear componente Seeder

$ php artisan make:seeder UserTableSeeder

Realizar migración y ejecutar los seeders

$ php artisan migrate --seed

Rollback de seeders

Esto va a eliminar las tablas, luego las va a volver a crear y finalmente va a crear el seeder de usuario:

$ php artisan migrate:refresh --seed

Ejecutar seeders

$ php artisan db:seed

Sistema de Autenticación Laravel

Laravel 5.2 tiene dos clases listas para migrar, estas son: CreateUsersTable y CreatePasswordResetsTable y se encuentran en database/migrations/

Definiremos los datos de conexión en el archivo de configuración .env

Ejemplo:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=dev

Ahora reiniciamos el servidor web

ctrl + c
$ php artisan serve

y limpiamos la configuración en cache

$ php artisan config:clear

Para migrar las tablas ejecutaremos el siguiente comando:

$ php artisan migrate

Ahora crearemos las vistas de autenticación que provee laravel

$ php artisan make:auth
Created View: /Users/andres/Sites/blog/resources/views/auth/login.blade.php
Created View: /Users/andres/Sites/blog/resources/views/auth/register.blade.php
Created View: /Users/andres/Sites/blog/resources/views/auth/passwords/email.blade.php
Created View: /Users/andres/Sites/blog/resources/views/auth/passwords/reset.blade.php
Created View: /Users/andres/Sites/blog/resources/views/auth/emails/password.blade.php
Created View: /Users/andres/Sites/blog/resources/views/layouts/app.blade.php
Created View: /Users/andres/Sites/blog/resources/views/home.blade.php
Created View: /Users/andres/Sites/blog/resources/views/welcome.blade.php
Installed HomeController.
Updated Routes File.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment