สำหรับทดลองใช้งาน Application version เก่าๆบ้าง
การจะใช้ version เก่าๆก็ต้องติด php รุ่นเก่าๆด้วย – ในทางกลับกันถ้าจะต้องลง laravel ใหม่ๆ ก็ต้องปรับเป็น php version ใหม่ๆ ด้วย
ใช้ Docker ในการติดตั้ง จะได้ไม่กวนตัว system หลัก

docker-compose.yml
services:
# PHP + Apache Service
php-apache:
build: ./apache_php
ports:
- "8080:80"
volumes:
- ./www:/var/www/html
networks:
- lamp-network
depends_on:
- mysql
# MySQL Service
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: my_database
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./mysql_data:/var/lib/mysql
networks:
- lamp-network
networks:
lamp-network:
driver: bridge
Dockerfile
Build php 7.4
+ ติดตั้ง composer
+ ติดตั้ง node / npm
+ ติดตั้ง php-mysql extension สำหรับ mysql interface
FROM php:7.4-apache
# ติดตั้ง System Dependencies
RUN apt-get update && apt-get install -y \
zip unzip git curl gnupg
# ติดตั้ง Node.js (ตัวอย่างนี้คือเวอร์ชัน 16 ซึ่งเสถียรสำหรับโปรเจกต์ยุค PHP 7.4)
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y nodejs
# ติดตั้ง PHP Extensions
RUN docker-php-ext-install mysqli pdo pdo_mysql
# ติดตั้ง Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN a2enmod rewrite
index.php
<?php phpinfo(); ?>
สั่ง Rebuild: docker-compose up -d --build
docker-compose exec php-apache bash
ก่อนติดตั้ง laravel จะต้องลบไฟล์ index.php ให้เป็นห้องว่างเปล่าก่อน
composer create-project –prefer-dist laravel/laravel:^8.0 .

docker-compose exec php-apache npm install
docker-compose exec php-apache npm run dev
กรณีที่ติดตั้งเสร็จ ต้อง set permission ด้วย ไม่งั้นมันจะ error ว่าเขียน logs ในห้อง storage ไม่ได้
chown -R www-data:www-data storage bootstrap/cache
ถ้าทำครบแล้ว เปิดไปที่ http://localhost:8080/public/index.php ก็น่าจะเจอหน้าแรกของ laravel เลย
ถ้าไม่ต้องการใส่ /public/ เหมือนว่าจะต้องไปเซ็ต DocumentRoot ไปที่ public เลย – แต่ ณ ตอนนี้ยังไม่ได้ทำ