Bài viết này sẽ hướng dẫn các bạn triển khai một project LARAVEL lên môi trường CentOS 7,
Yêu cầu:
+ Server OS CentOS 7
+ Đã có một project Laravel

Các bước thực hiện:
1. Cài đặt Apache
2. Cài đặt PHP
3. Cài đặt MariaDB
4. Cài đặt GIT
5. Triển khai Project Laravel
6. Test run site

OK Bắt đầu nhé!

1. Cài đặt Apache

Link hướng dẫn cài đặt: https://blog.sinka.vn/2020/01/15/cach-cai-dat-apache2-tren-centos-7/

2. Cài đặt PHP

Link hướng dẫn cài đặt: https://blog.sinka.vn/2020/01/15/cach-cai-dat-php-tren-centos-7/
Chú ý: Laravel required các extension sau:

PHP >= 7.1.3
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension
BCMath PHP Extension

3. Cài đặt Mariadb

Link hướng dẫn cài đặt: https://blog.sinka.vn/2020/01/15/cach-cai-dat-mariadb-tren-centos-7/

Tạo Database cho project: https://blog.sinka.vn/2020/07/20/mariadb-cach-tao-database-va-user-bang-command-line-tren-centos/
Ví dụ:
– database name: my_database
– database user: user1
– database password: nopassword

4. Cài đặt GIT

Run lệnh:

sudo yum install git

Check cài đặt success:

git --version

5. Triển khai Project Laravel

Giả sử chúng ta sẽ deploy lên folder /home/
Truy cập folder /home bằng lệnh:

cd /home

Clone source code project laravel vào folder, dùng lệnh:

sudo git clone <link git...> mylaravel

Trong đó: mylaravel – là tên folder chứa source code, mà bạn muốn đặt

Cấp quyền cho folder project
Link: https://blog.sinka.vn/2020/01/20/cach-phan-quyen-thu-muc-deploy-wordpress-tren-ubuntu-hoac-centos/

Truy cập folder project bằng lệnh:

cd /home/mylaravel

Copy file .env_example ra .env

sudo cp .env.example .env

Edit file .env và sửa các thông số về database như đã thiết lập ở mục 3

sudo nano .env

Run các lệnh cho laravel:

  • Generate key application (required)
php artisan key:generate
  • Migrate database (required)
php artisan migrate
  • Database seed (optional)
php artisan db:seed
  • Storage: tạo folder lưu trữ upload file (optional)
php artisan storage:link

SCHEDULE: Nếu ứng dụng của bạn có run schedule thì cần config crontab

Truy cập crontab bằng lệnh:

sudo crontab -e

Ấn phím Insert để edit file
Cấu hình schedule cho ứng dụng laravel:

* * * * * cd /home/mylaravel && php artisan schedule:run >> /dev/null 2>&1

Trong đó: /home/mylaravel : chính là path đặt source code

Ấn phím Esc

gõ lệnh sau để thoát khỏi trình edit vim

:wq

Config Apache

  • Tạo vitualhost để trỏ domain về project
nano /etc/httpd/conf.d/mylaravel.conf
<VirtualHost *:80>
 ServerName mylaravel.com
 DocumentRoot /home/mylaravel 
 ServerAlias mylaravel.com
 <Directory /home/mylaravel>   
   Options FollowSymLinks
   AllowOverride All
   Require all granted
 </Directory>
 ErrorLog /home/mylaravel_error.log
 CustomLog /home/mylaravel_requests.log combined
</VirtualHost>

Ấn Ctrl + O , sau đó Ấn Enter để save file

  • Khởi động lại apache
sudo service httpd restart
  • Cấu hình tường lửa
firewall-cmd --add-service=http
firewall-cmd --add-service=https

Config SSL (HTTPS) cho website của bạn
Xem hướng dẫn link: https://blog.sinka.vn/2020/04/22/lam-the-nao-de-thiet-lap-secure-apache-voi-lets-encrypt-cho-centos/

6. Test Run site
http://mylaravel.com
https://mylaravel.com

MỘT SỐ CHÚ Ý:
– Với một số server, cần vào HỆ QUẢN TRỊ mới open được port 80, 443, …
– Với server AWS sau khi cài đặt xong php, và extention của php, cần reboot lại hệ điều hành mới hoạt động

sudo reboot

MỘT SỐ LỖI CÓ THỂ GẶP
– Lỗi storage/logs/laravel.log” could not be opened: failed to open stream: Permission denied
Mặc dù đã cấp quyền cho folder storage nhưng vẫn bị lỗi trên, có thể do SELinux(Security-Enhanced Linux) đã được bật lên. cần set lại mode bằng lệnh

sudo setenforce 0

DONE!