Laravel là một framework PHP mạnh mẽ, tuân theo mô hình lập trình hướng đối tượng, giúp phát triển ứng dụng web từ đơn giản đến phức tạp một cách hiệu quả. Với cú pháp hiện đại, Laravel tối ưu hóa năng suất lập trình, hoạt động theo cơ chế thông dịch thay vì biên dịch, đồng thời hỗ trợ tích hợp linh hoạt với nhiều framework khác, đáp ứng nhu cầu đa dạng của các dự án web.
DataOnline sẽ hướng dẫn bạn cách thiết lập Laravel trên Ubuntu 24.04 và cấu hình máy chủ để chạy các ứng dụng Laravel.
Yêu cầu
Trước khi bắt đầu, bạn cần:
- Có quyền truy cập vào một instance Ubuntu 24.04.
- Tạo một bản ghi A cho domain trỏ tới địa chỉ IP của máy chủ. Ví dụ:
laravelapp.example.com
Tạo cơ sở dữ liệu MySQL cho Laravel
Laravel hỗ trợ nhiều engine cơ sở dữ liệu mà bạn có thể cấu hình và tích hợp để lưu trữ dữ liệu ứng dụng. Hãy làm theo các bước dưới đây để tạo một cơ sở dữ liệu MySQL chuyên dụng mới để sử dụng với Laravel trên máy chủ của bạn.
- Xác nhận rằng máy chủ cơ sở dữ liệu MySQL đang hoạt động.
$ sudo systemctl status mysql
Output:
● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Wed 2024-12-04 13:03:09 UTC; 19s ago Process: 2843 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 2857 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 2269) Memory: 361.6M (peak: 377.9M) CPU: 646ms CGroup: /system.slice/mysql.service └─2857 /usr/sbin/mysqld
2. Đăng nhập vào máy chủ cơ sở dữ liệu MySQL.
$ sudo mariadb
3. Tạo một cơ sở dữ liệu mới có tên laravelapp
cho dự án Laravel của bạn.
> CREATE DATABASE laravelapp;
- Tạo một user mới có tên
laravelapp
với mật khẩu mạnh để sử dụng cho ứng dụng Laravel. Thay thếpassword
bằng mật khẩu mạnh mà bạn chọn.> CREATE USER laravelapp@localhost IDENTIFIED BY 'password';
- Cấp toàn bộ quyền truy cập cho user
laravelapp
đối với cơ sở dữ liệularavelapp
.> GRANT ALL PRIVILEGES ON laravelapp.* TO laravelapp@localhost;
- Làm mới bảng phân quyền của MySQL để áp dụng các thay đổi.
> FLUSH PRIVILEGES;
- Thoát khỏi giao diện dòng lệnh MySQL.
> EXIT;
Cài đặt Composer và các PHP Extension cần thiết
Laravel yêu cầu trình quản lý dependency Composer và các extension PHP cụ thể để chạy và cung cấp các ứng dụng web động trên máy chủ. Làm theo các bước dưới đây để cài đặt Composer và tất cả các extension PHP cần thiết trên máy chủ của bạn.
- Cập nhật chỉ mục gói của máy chủ.
$ sudo apt update
- Cài đặt Composer và tất cả các extension cần thiết.
$ sudo apt install composer php php-curl php-bcmath php-json php-mysql php-mbstring php-xml php-tokenizer php-zip git -y
- Xem phiên bản PHP đã được cài đặt.
$ php -v
Output
PHP 8.3.6 (cli) (built: Sep 30 2024 15:17:17) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.6, Copyright (c) Zend Technologies with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
- Xem phiên bản Composer đã được cài đặt.
$ sudo -u www-data composer -v
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.7.1 2024-02-09 15:26:28 Usage: command [options] [arguments]
5. Xem trạng thái dịch vụ Apache và xác nhận rằng nó đang hoạt động. 14. Console Copy:
$ sudo systemctl status apache2
Output
enabled ● apache2.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled) Active: active (running) since Tue 2024-11-19 14:28:27 UTC; 5min ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 20426 (apache2) Tasks: 6 (limit: 4607) Memory: 13.9M (peak: 14.1M) CPU: 71ms CGroup: /system.slice/apache2.service ├─20426 /usr/sbin/apache2 -k start └─20434 /usr/sbin/apache2 -k start
6. Tạo một file info.php
mới trong thư mục gốc web mặc định /var/www/html
để hiển thị tất cả các thông tin cấu hình của PHP. 17.
$ sudo nano /var/www/html/info.php
7. Thêm hàm phpinfo()
vào file.
<?php phpinfo(); ?>
Lưu và đóng file.
8. Cho phép kết nối HTTP qua cấu hình firewall mặc định.
$ sudo ufw allow 80/tcp
9. Tải lại UFW để áp dụng các thay đổi firewall.
$ sudo ufw reload
10. Khởi động lại máy chủ Apache để áp dụng các thay đổi cho ứng dụng PHP của bạn.
$ sudo systemctl restart apache2
11. Truy cập địa chỉ IP của máy chủ của bạn sử dụng đường dẫn /info.php
trong trình duyệt web như Chrome.
http://SERVER-IP/info.php
Kiểm tra tất cả các extension đã được cài đặt trên máy chủ và xác nhận rằng fileinfo
, mbstring
và openssl
xuất hiện trên trang thông tin PHP.
Cài đặt Laravel trên Ubuntu 24.04
Thực hiện theo các bước dưới đây để tạo các thư mục dự án cần thiết và tạo một dự án Laravel mới sử dụng Composer với tất cả các gói dependency cần thiết.
- Tạo tất cả các thư mục dự án cần thiết trong thư mục
/var/www/
.$ sudo mkdir -p /var/www/{.cache,.config,laravelapp}
Lệnh trên tạo thư mục
/var/www/.cache
để lưu trữ các file cache của Composer, thư mục/var/www/.config
để lưu các file cấu hình cho Composer, và thư mục/var/www/laravelapp
làm thư mục dự án Laravel chính. - Cấp quyền sở hữu cho user và group
www-data
đối với tất cả các file trong thư mục dự án Laravel.$ sudo chown -R www-data:www-data /var/www/{.cache,.config,laravelapp}
- Chuyển đến thư mục dự án
laravelapp
.$ cd /var/www/laravelapp/
- Tạo một dự án mới sử dụng Composer và mẫu ứng dụng Laravel mặc định.
$ sudo -u www-data composer create-project laravel/laravel .
Output
Creating a "laravel/laravel" project at "./my_laravel_project" Installing laravel/laravel (v10.2.0) - Installing laravel/laravel (v10.2.0): Extracting archive Created project in /var/www/html/my_laravel_project
5. Dự án đã được tạo tại /var/www/html/my_laravel_project
. 15. Mở file .env
bằng trình soạn thảo như nano để thiết lập thông tin kết nối cơ sở dữ liệu cho Laravel. 16. Console Copy:
$ sudo nano .env
6. Tìm dòng chỉ thị DB_CONNECTION
.
DB_CONNECTION=sqlite
- Thay đổi giá trị mặc định từ
sqlite
thànhmysql
.DB_CONNECTION=mysql
Đồng thời, bỏ chú thích các dòng
DB_
và thay thế giá trị mặc định bằng thông tin cơ sở dữ liệu thực tế cho Laravel của bạn.APP_URL=http://laravelapp.example.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravelapp DB_USERNAME=laravelapp DB_PASSWORD=password
Lưu và đóng file.
7. Chạy script di chuyển cơ sở dữ liệu để tạo cấu trúc cơ sở dữ liệu mặc định cho dự án Laravel của bạn.
$ sudo -u www-data php artisan migrate
Output
INFO Preparing database. Creating migration table .................................................................................... 5.68ms DONE INFO Running migrations. 0001_01_01_000000_create_users_table ........................................................................ 15.56ms DONE 0001_01_01_000001_create_cache_table ......................................................................... 4.07ms DONE 0001_01_01_000002_create_jobs_table ......................................................................... 12.17ms DONE
Tạo cấu hình Apache Virtual Host cho Laravel
Apache phục vụ các file ứng dụng web thông qua các cấu hình virtual host nằm trong thư mục /etc/apache2
. Làm theo các bước dưới đây để tạo một cấu hình virtual host mới cho Apache nhằm phục vụ các file dự án Laravel thông qua domain laravelapp.example.com
.
- Kích hoạt module rewrite của Apache
mod_rewrite
để Laravel có thể xử lý URL sạch.$ sudo a2enmod rewrite
- Tạo một file cấu hình virtual host mới có tên
laravelapp.conf
.$ sudo nano /etc/apache2/sites-available/laravelapp.conf
- Thêm nội dung sau vào file. Thay thế
laravelapp.example.com
bằng domain thực của bạn.<VirtualHost *:80> ServerAdmin admin@example.com ServerName laravelapp.example.com DocumentRoot /var/www/laravelapp/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/laravelapp> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Lưu và đóng file.
Cấu hình virtual host trên sẽ lắng nghe các yêu cầu kết nối trên cổng HTTP 80 và phục vụ các file ứng dụng web Laravel từ thư mục
/var/www/laravelapp
. - Kích hoạt cấu hình virtual host cho Laravel.
$ sudo a2ensite laravelapp.conf
- Vô hiệu hóa cấu hình virtual host mặc định của Apache để tránh xung đột cổng.
$ sudo a2dissite 000-default.conf
- Kiểm tra cấu hình Apache xem có lỗi nào không.
$ sudo apachectl configtest
Output
Enabling site laravelapp. To activate the new configuration, you need to run: systemctl reload apache2 Syntax OK
Nếu bạn thấy “Syntax OK”, cấu hình đã hợp lệ.
- Khởi động lại dịch vụ Apache để áp dụng các thay đổi cấu hình. 21.
$ sudo systemctl restart apache2
Truy cập Laravel
Thực hiện theo các bước dưới đây để truy cập ứng dụng Laravel của bạn thông qua domain laravelapp.example.com
trên máy chủ.
- Truy cập ứng dụng Laravel của bạn bằng domain trong trình duyệt web như Chrome. Thay thế
laravelapp.example.com
bằng domain thực của bạn.http://laravelapp.example.com
Output: