Laravel es un marco de aplicación web popular creado para desarrolladores de PHP. Laravel es bien conocido en la comunidad de PHP por su simplicidad como herramienta para construir aplicaciones grandes y robustas. Laravel también es conocido por su sintaxis expresiva y elegante.
Desde sus inicios, Laravel ha evolucionado hasta convertirse en uno de los marcos de aplicaciones web más populares y poderosos y muchas organizaciones grandes están comenzando a darse cuenta del potencial de este marco y comenzaron a adoptarlo.
En este tutorial, lo guiaremos para configurar Laravel en Ubuntu 22.04.
Comencemos con la configuración.
1 Requisitos previos
- Sistema operativo Ubuntu 22.04
- Versión mínima de PHP 8.0.
- Sería mejor si su servidor tuviera al menos 2 GB de RAM
2 Actualización del sistema
Actualicemos primero nuestro sistema.
sudo apt update -y && apt upgrade -y
3 Instalación de PHP y extensiones de PHP
La versión predeterminada de PHP en el repositorio de Ubuntu 22.04 es PHP 8.1, por lo que podemos continuar con la instalación de PHP sin agregar repositorios.
sudo apt-get install php php-fpm libapache2-mod-php php-dev php-zip php-curl php-pear php-mbstring php-mysql php-gd php-xml curl -y
Verifique la versión de PHP:
php -v
Output:
PHP 8.1.2 (cli) (built: Jul 21 2022 12:10:37) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
4 Instalación y configuración de la base de datos
En esta configuración, vamos a utilizar MariaDB como nuestro sistema de gestión de bases de datos, pero puede elegir cualquier sistema de gestión de bases de datos compatible con Laravel, como SQLite, MySQL, Postgres y SQL Server.
Instalamos MariaDB.
sudo apt install mariadb-server
Habilite e inicie MariaDB.
sudo systemctl enable mariadb --now
Compruebe el estado de MariaDB.
sudo systemctl status mariadb
Output:
● mariadb.service - MariaDB 10.6.7 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-09-03 12:32:57 EDT; 2min 13s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 123075 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 9 (limit: 9456)
Memory: 57.2M
CPU: 425ms
CGroup: /system.slice/mariadb.service
└─123075 /usr/sbin/mariadbd
Protejamos la base de datos MariaDB.
sudo mysql_secure_installation
Siga la guía de implementación del servidor MariaDB:
Securing the MySQL server deployment.
Enter password for user root:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.
Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Ahora reinicie MariaDB.
sudo systemctl restart mariadb
Ahora vamos a crear una base de datos y un usuario de base de datos para nuestra aplicación Laravel.
mysql -u root -p
MariaDB [(none)]> create database laravel;
MariaDB [(none)]> grant all privileges on laravel.* to 'laravel_user'@'localhost' identified by 'your_secure_password';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
5 Instalación de Composer
Composer es un administrador de paquetes de dependencia a nivel de aplicación para PHP que proporciona un formato estándar para administrar las dependencias del software PHP y las bibliotecas requeridas. Se requiere Composer en Laravel para administrar fácilmente el paquete y las dependencias de Laravel.
Instalemos Composer.
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
Verifique la instalación.
composer --version
Output:
Composer version 2.4.1 2022-08-20 11:44:50
6 Instalación de Laravel Framework
Antes de comenzar con la instalación, cambiemos de directorio.
cd /var/www/
Descarga la aplicación Laravel. Al momento de escribir este artículo, la última versión de Laravel es la 9, por lo que podemos descargar Laravel 9 directamente sin especificar la versión.
sudo composer create-project laravel/laravel mylara-app --prefer-dist
Salida si se instaló correctamente:
79 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
INFO No publishable resources for tag [laravel-assets].
No security vulnerability advisories found
> @php artisan key:generate --ansi
INFO Application key set successfully.
Para comprobar la versión, vaya al directorio de Laravel:
cd mylara-app
php artisan --version
output:
Laravel Framework 9.28.0
Nota: si desea instalar una versión específica, puede ejecutar este comando (el ejemplo a continuación instalará la versión 8):
sudo composer create-project laravel/laravel lara8-app “8.*” –prefer-dist
Establezca la propiedad en www-data.
sudo chown -R www-data:www-data /var/www/mylara-app
Configure todos los directorios con el permiso 755.
sudo find /var/www/mylara-app/ -type d -exec chmod 755 {} \;
Configure todos los archivos con el permiso 644.
sudo find /var/www/mylara-app/ -type f -exec chmod 644 {} \;
Verifique la aplicación ejecutando el servidor de desarrollo.
php artisan serve --host=0.0.0.0
Output:
INFO Server running on [http://0.0.0.0:8000].
Press Ctrl+C to stop the server
Debería poder acceder a su servidor de desarrollo de Laravel en http://ipaddress:8000 .
7 Configuración de producción de Laravel
Servidor web Apache :
sudo apt install apache2
Habilite e inicie Apache.
systemctl enable apache2 --now
Cree un servidor virtual.
sudo nano /etc/apache2/sites-available/laravel.conf
Agrega lo siguiente:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/mylara-app/public
ServerName domain.com www.domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/laravel/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Nota:No olvides cambiar el dominio en la directiva ServerName.
Guarde el archivo y salga.
Habilite el host virtual que creamos.
sudo a2ensite laravel.conf
Habilite también Apache mod_rewrite.
sudo a2enmod rewrite
Reinicie el servidor web Apache.
sudo systemctl restart apache2
Servidor web Nginx :
Primero, instalemos Nginx.
sudo apt install nginx -y
Habilite e inicie Nginx.
sudo systemctl enable nginx --now
Crea un bloque de servidor.
sudo nano /etc/nginx/sites-available/laravel.conf
Agrega lo siguiente:
server {
server_name domain.com www.domain.com;
access_log /var/log/nginx/domain.com.access.log;
error_log /var/log/nginx/domain.com.error.log;
root /var/www/mylara-app/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
Guarde el archivo y salga.
Habilitemos el archivo de configuración de Nginx (bloque del servidor).
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
Reinicie Nginx.
sudo systemctl restart nginx
8 Accediendo a tu aplicación Laravel
Una vez que haya configurado correctamente la producción, debería poder acceder a su aplicación Laravel con su dominio en http://domain.com .
9 Conclusión
Ha aprendido a configurar Laravel 9 en Ubuntu 22.04 con el servidor web Nginx o Apache.
Si desea instalar un certificado SSL para proteger su sitio web, puede consultar nuestro artículo sobre Let's Encrypt.