Hướng dẫn cài đặt và cấu hình Laravel trên Ubuntu 24.04 chi tiết nhất

Hướng dẫn cài đặt và cấu hình Laravel trên Ubuntu 24.04 chi tiết nhất

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.

  1. 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;
  1. 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';
  2. Cấp toàn bộ quyền truy cập cho user laravelapp đối với cơ sở dữ liệu laravelapp.
    > GRANT ALL PRIVILEGES ON laravelapp.* TO laravelapp@localhost;
  3. Làm mới bảng phân quyền của MySQL để áp dụng các thay đổi.
    > FLUSH PRIVILEGES;
  4. 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.

  1. Cập nhật chỉ mục gói của máy chủ.
    $ sudo apt update
  2. 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
  3. 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
  4. 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 fileinfombstring 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.

  1. 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.

  2. 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}
  3. Chuyển đến thư mục dự án laravelapp.
    $ cd /var/www/laravelapp/
  4. 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ành mysql.
    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.

  1. Kích hoạt module rewrite của Apache mod_rewrite để Laravel có thể xử lý URL sạch.
    $ sudo a2enmod rewrite
  2. 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
  3. 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.

  4. Kích hoạt cấu hình virtual host cho Laravel.
    $ sudo a2ensite laravelapp.conf
  5. 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
  6. 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ệ.

  7. 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ủ.

  1. 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:

    Thiet ke chua co ten 69

Kết luận

Bạn đã triển khai thành công Laravel trên Ubuntu 24.04 và khởi tạo một dự án mặc định trên máy chủ. Giờ đây, bạn có thể bắt đầu xây dựng ứng dụng bằng cách tạo mới các Model, View, và Controller trong thư mục dự án Laravel. Hãy tận dụng Blade Template Engine để tối ưu giao diện và linh hoạt tùy chỉnh các tính năng động nhằm nâng cao trải nghiệm người dùng trên ứng dụng web của bạn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *