Avís
Aquest article és antic i és possible que part de la informació estigui desactualitzada o ja no sigui vàlida actualment.
Si tens cap dubte o necessites confirmar algun detall, et recomanem contactar amb el nostre equip de suport per rebre informació actualitzada i assistència personalitzada.
Laravel és un entorn de treball PHP gratuït, de codi obert i el més popular, que et permet desenvolupar aplicacions web escalables i flexibles fàcilment. És un entorn de treball PHP senzill, flexible i lleuger, i té una sintaxi llegible per desenvolupar aplicacions modernes i potents des de zero.
Laravel és la millor opció si busques dissenyar una aplicació de pròxima generació.
En aquest tutorial, mostrarem com desplegar una aplicació web utilitzant l'entorn de treball Laravel i NGINX com a servidor web al servidor Ubuntu 22.04.
Prerequisits
- Un servidor amb Ubuntu 22.04 en funcionament amb un mínim de 2 GB de RAM i 10 GB de disc.
- Una contrasenya de root configurada al teu servidor Cloud.
Comencem
Abans de començar, et recomanem que actualitzis els paquets a l'última versió. Pots fer-ho executant l'ordre següent:
# apt-get update && apt-get upgrade -yDesprés, hauràs d'instal·lar alguns paquets necessaris al teu sistema. Pots instal·lar-los tots executant l'ordre següent:
# apt-get install apt-transport-https ca-certificates curl software-properties-common -yUn cop tots els paquets estiguin instal·lats, pots passar al pas següent.
Instal·la Docker i Docker Compose
A continuació, hauràs d'instal·lar Docker i Docker Compose al teu servidor. Per defecte, l'última versió de Docker no està disponible al repositori per defecte de Ubuntu 22.04, de manera que hauràs d'afegir el repositori amb aquesta finalitat.
Primer, descarrega i afegeix la clau GPG utilitzant l'ordre següent:
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgDesprés, afegeix el repositori Docker amb l'ordre següent:
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.listUn cop afegit el repositori, actualitza el teu sistema i instal·la Docker i Docker Compose executant l'ordre següent:
# apt-get update && apt install docker-ce docker-compose -yUn cop s'hagi completat la instal·lació, pots comprovar l'estat del servei de Docker amb l'ordre següent:
# systemctl status docker --no-pagerDescarrega Laravel i instal·la les dependències
A continuació, hauràs de descarregar l'entorn de treball de Laravel i instal·lar les dependències necessàries amb la imatge de Docker PHP composer.
Primer, descarrega l'última versió de Laravel amb l'ordre següent:
# git clone https://github.com/laravel/laravel.git laravelA continuació, instal·la les dependències necessàries amb l'ordre següent:
# cd laravel && docker run --rm -v $(pwd):/app composer installHauries de veure el resultat següent en acabar la instal·lació:
@php artisan package:discover --ansi
INFO Discovering packages.
laravel/sail .......................................................... DONE
laravel/tinker ........................................................ DONE
nesbot/carbon ......................................................... DONE
nunomaduro/collision .................................................. DONE
nunomaduro/termwind ................................................... DONE
spatie/laravel-ignition ............................................... DONE
85 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].
L'ordre anterior crearà un contenidor temporal i copiarà el contingut del teu directori ~/laravel al contenidor.
Dockerització de Laravel
A continuació, hauràs de crear un fitxer nou docker-compose.yml i un fitxer Docker per al teu projecte Laravel.
Primer, crea un fitxer docker-compose dins del teu directori ~/laravel:
# nano ~/laravel/docker-compose.ymlAfegeix les línies següents:
version: '3'
services:
# Servei PHP
app:
build:
context: .
dockerfile: Dockerfile
image: php:8.2-fpm-bookworm
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
# Servei NGINX
webserver:
image: nginx:alpine
container_name: webserver
restart: unless-stopped
tty: true
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www
- ./nginx/conf.d/:/etc/nginx/conf.d/
networks:
- app-network
# Servei MySQL
db:
image: mysql:latest
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_PASSWORD: oSFrJiZ1y67nbA41L0pdzOtA5R
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- dbdata:/var/lib/mysql/
- ./mysql/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
#Xarxes Docker
networks:
app-network:
driver: bridge
#Volums
volumes:
dbdata:
driver: local
Desa i tanca el fitxer quan hagis acabat. Després, crea un fitxer Docker per crear i personalitzar imatges amb tot el programari necessari per a la teva aplicació dins del directori ~/laravel:
# nano ~/laravel/Dockerfile Afegeix les línies següents:
FROM php:8.2-fpm-bookworm
# Copia composer.lock i composer.json
COPY composer.lock composer.json /var/www/
# Estableix el directori de treball
WORKDIR /var/www
RUN apt-get update && apt-get install -y \
build-essential \
wget \
lsb-release \
gnupg \
curl
# Afegeix el repositori MySQL
RUN curl -s https://dev.mysql.com/downloads/repo/apt/ | grep mysql-apt-config \
| grep href | awk -F '=' '{gsub(/&p/, "", $4); print "https://dev.mysql.com/get/"$4}' \
| xargs wget -O mysql-apt-config.deb \
&& dpkg -i mysql-apt-config.deb && apt update
# Instal·la les dependències
RUN apt-get update && apt-get install -y \
mariadb-client \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
nano
# Neteja la memòria cau
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# Instal·la les extensions
RUN install-php-extensions gd pdo_mysql mysqli mbstring zip exif pcntl
# Instal·la composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Afegeix un usuari per a l'aplicació laravel
RUN groupadd -g 1000 nginx
RUN useradd -u 101 -ms /bin/bash -g nginx nginx
# Copia el contingut del directori de l'aplicació existent
# COPY . /var/www
# Copia els permisos del directori de l'aplicació existent
# COPY --chown=www:www . /var/www
# Canvia l'usuari actual a www
USER nginx
# Exposa el port 9000 i inicia el servidor php-fpm
EXPOSE 9000
CMD ["php-fpm"]
Desa i tanca el fitxer quan hagis acabat.
Configura PHP, MySQL i NGINX per a Laravel
A continuació, hauràs de crear un directori PHP dins del teu directori ~/laravel i crear el local.ini dins del directori ~/laravel/php:
# mkdir ~/laravel/php ; nano ~/laravel/php/local.iniAfegeix les línies següents:
upload_max_filesize=40M
post_max_size=40MDesa i tanca el fitxer quan hagis acabat. Després hauràs de crear el directori nginx/conf.d dins del teu directori ~/laravel i crear un fitxer app.conf per a la configuració de Nginx:
# mkdir -p ~/laravel/nginx/conf.d ; nano ~/laravel/nginx/conf.d/app.confAfegeix les línies següents:
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
Desa i tanca el fitxer quan hagis acabat. Posteriorment, crea el directori MySQL dins del teu directori ~/laravel i crea el fitxer my.cnf amb els paràmetres necessaris:
# mkdir ~/laravel/mysql ; nano ~/laravel/mysql/my.cnf Afegeix les línies següents:
[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/general.log
Desplega Laravel amb els serveis Nginx i MySQL
En aquest punt hem definit tots els serveis al fitxer docker-compose i hem creat un fitxer de configuració per a cada servei. Després, crea una còpia del fitxer per defecte .env.example amb l'ordre següent:
# cp .env.example .envAra executa l'ordre següent per descarregar totes les imatges necessàries i construir serveis de contenidor basats en la configuració 'docker-compose.yml' amb l'ordre següent:
# docker-compose up -dUn cop s'hagi completat el procés, pots comprovar els contenidors actius amb l'ordre següent:
# docker psHauries de veure el resultat següent:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07ac3fc0fbfa nginx:alpine "/docker-entrypoint.…" 2 minutes ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp webserver
a50984eff65e php:8.2-fpm-bookworm "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 9000/tcp app
7857e21e6d26 mysql:latest "docker-entrypoint.s…" 2 minutes ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp db
Configura el contenidor de Laravel
Després, hauràs de modificar el fitxer .env amb el contenidor app per a Laravel.
Pots editar fàcilment qualsevol fitxer dins del contenidor amb l'ordre "docker-compose exec". Primer, obre el fitxer .env dins del contenidor app amb l'ordre següent:
# docker-compose exec app nano .envCanvia les línies següents:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=oSFrJiZ1y67nbA41L0pdzOtA5R
Desa i tanca el fitxer. Ara genera la clau d'aplicació de Laravel i neteja la memòria cau amb l'ordre següent:
# docker-compose exec app php artisan key:generate && docker-compose exec app php artisan config:cacheDesprés, migra la base de dades utilitzant l'ordre següent:
# docker-compose exec app php artisan migrateAccedeix a la interfície web de Laravel
En aquest punt, has dockeritzat Laravel amb NGINX i MySQL. Ara, obre el teu navegador web i escriu l'URL http://TU-servidor-ip. Se't redirigirà al tauler de control de Laravel per defecte:
Enhorabona! Has dockeritzat una aplicació web utilitzant l'entorn de treball de Laravel i NGINX com a servidor web en un servidor Cloud amb Ubuntu 22.04.
Recorda, si tens consultes sobre aquesta o qualsevol altra qüestió relacionada amb els teus servidors a Clouding, no dubtis a escriure a soporte@clouding.io Som al teu costat per a tot el que necessitis, consulta'ns!