Quay lại

Cách cài đặt và cấu hình Laravel với Nginx trên Centos (LEMP) Chuyên mục PHP và Laravel    2023-05-04    1.4k Lượt xem    96 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Cách cài đặt và cấu hình Laravel với Nginx trên Centos (LEMP)

Giới thiệu

Laravel là một PHP framework mã nguồn mở cung cấp một bộ công cụ và tài nguyên để xây dựng các ứng dụng PHP hiện đại. Với một hệ sinh thái hoàn chỉnh tận dụng các tính năng tích hợp của nó, mức độ phổ biến của Laravel đã tăng lên nhanh chóng trong vài năm qua, với nhiều nhà phát triển sử dụng nó làm khung lựa chọn cho quy trình phát triển.

Trong hướng dẫn này, bạn sẽ cài đặt và định cấu hình ứng dụng Laravel mới trên máy chủ centos, sử dụng Composer để tải xuống và quản lý các phần framework dependencies và Nginx để phục vụ ứng dụng. Khi hoàn tất, bạn sẽ có một ứng dụng demo Laravel đầy đủ chức năng lấy nội dung từ cơ sở dữ liệu MySQL 8.

Yêu cầu

Để hoàn thành hướng dẫn này, trước tiên bạn cần thực hiện các tác vụ sau trên máy chủ centos của mình:

Bước 1 — Cài đặt các mô-đun PHP cần thiết

Trước khi bạn có thể cài đặt Laravel, bạn cần cài đặt một vài mô-đun PHP được yêu cầu bởi framework. Chúng ta sẽ sử dụng yum để cài đặt các mô-đun PHP php-mbstring, php-xmlphp-bcmath. Các phần mở rộng PHP này cung cấp hỗ trợ bổ sung để xử lý mã hóa ký tự, XML và toán học chính xác.

Nếu đây là lần đầu tiên sử dụng yum trong phiên này, trước tiên bạn nên chạy lệnh cập nhật để cập nhật bộ đệm của trình quản lý gói

sudo yum -y update

Bây giờ bạn có thể cài đặt các gói cần thiết với:

sudo yum install php-mbstring php-xml php-bcmath

Hệ thống của bạn hiện đã sẵn sàng để thực hiện cài đặt Laravel thông qua Composer, nhưng trước khi thực hiện, bạn sẽ cần một cơ sở dữ liệu cho ứng dụng của mình.

Bước 2 — Tạo cơ sở dữ liệu cho ứng dụng

Để bắt đầu, hãy đăng nhập vào bảng điều khiển MySQL với tư cách là người dùng cơ sở dữ liệu gốc với:

mysql -u root -p

Nếu bạn có mật khẩu thì nhập mật khẩu vào nhé, còn không thì chỉ cần enter là Ok rồi 

Tiếp sau đó thì tạo một database mới với cmd sau:

create database travels;

Trong trường hợp bạn không muốn sử dụng tài khoản root cho database này thì bạn có thể tạo mới một user bằng cmd sau:

CREATE USER 'travels_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Bây giờ chúng ta cần cấp quyền cho người dùng này đối với cơ sở dữ liệu travels:

GRANT ALL ON travels.* TO 'travels_user'@'%';

Điều này sẽ cung cấp cho người dùng travels_user toàn quyền đối với cơ sở dữ liệu test, đồng thời ngăn người dùng này tạo hoặc sửa đổi các cơ sở dữ liệu khác trên máy chủ của bạn.

Sau đó, thoát khỏi MySQL:

exit

Bây giờ bạn có thể kiểm tra xem người dùng mới có quyền phù hợp hay không bằng cách đăng nhập lại vào bảng điều khiển MySQL, lần này bằng thông tin xác thực người dùng tùy chỉnh:

mysql -u travels_user -p

Lưu ý  -p trong lệnh này, nó sẽ nhắc bạn nhập mật khẩu được sử dụng khi tạo người dùng travels_user. Sau khi đăng nhập vào bảng điều khiển MySQL, hãy xác nhận rằng bạn có quyền truy cập vào cơ sở dữ liệu travels:

SHOW DATABASES;

Điều này sẽ cung cấp cho bạn đầu ra sau:

Output
+--------------------+
| Database           |
+--------------------+
| information_schema |
| travels        |
+--------------------+
2 rows in set (0.01 sec)

Bước 3 — Tạo một ứng dụng Laravel mới

Bây giờ bạn sẽ tạo một ứng dụng Laravel mới bằng cách sử dụng lệnh tạo dự án của composer. Lệnh composer này thường được sử dụng để khởi động các ứng dụng mới dựa trên các frame và hệ thống quản lý nội dung hiện có.

Xuyên suốt hướng dẫn này, chúng ta sẽ sử dụng travels làm ứng dụng ví dụ, nhưng bạn có thể tự do thay đổi ứng dụng này thành ứng dụng khác. Ứng dụng travels sẽ hiển thị danh sách các vị trí được lấy từ máy chủ MySQL cục bộ, nhằm thể hiện cấu hình cơ bản của Laravel và xác nhận rằng bạn có thể kết nối với cơ sở dữ liệu.

Trước tiên, hãy chuyển đến thư mục chính của người dùng của bạn:

cd ~

Lệnh sau sẽ tạo một thư mục travels mới, chứa ứng dụng Laravel dựa trên cài đặt mặc định:

composer create-project --prefer-dist laravel/laravel travels

Sau khi cài đặt xong thì các bạn tạo 1 user để phục vụ cho việc deploy CI sau này nhé ! chuyển sang chế độ root để cho đỡ phải gõ sudo nè 

sudo su -

Sau đó tạo 1 user là www-user , sau này chỉ có user này mới được deploy thôi , nếu trong một team mà đưa tài khoản root cho member thì cũng sẽ vào đc các dự án khác trên cùng 1 server thì cũng k bảo mật tẹo nào đúng không 

useradd www-user

để user trên có quyền truy cập vào project thì chúng ta sẽ add nó vào group của nginx nữa nhé

chown -Rf www-user:nginx your_project

Việc còn lại chỉ là cấu hình .env của bạn thôi , sau khi cấu hình .env xong thì các bạn chuyển qua bước tiếp theo là cấu hình Nginx cho dự án của mình nhé

Bước 5 — Thiết lập Nginx

Chúng ta đã cài đặt Laravel trên một thư mục cục bộ trong thư mục chính của người dùng và mặc dù điều này hoạt động tốt cho các môi trường phát triển cục bộ, nhưng đây không phải là một phương pháp được khuyến nghị cho các máy chủ web mở với internet công cộng. Chúng ta sẽ chuyển thư mục ứng dụng sang /var/www, đây là vị trí thông thường cho các ứng dụng web chạy trên Nginx.

Đầu tiên, sử dụng lệnh mv để di chuyển thư mục ứng dụng với tất cả nội dung của nó sang

 /var/www/travellist:

sudo mv ~/travellist /var/www/travellist

Bây giờ chúng ta cần cấp cho người dùng máy chủ web quyền truy cập ghi vào các thư mục lưu trữ và bộ đệm, nơi Laravel lưu trữ các tệp do ứng dụng tạo:

sudo chown -R www-data.www-data /var/www/travellist/storage
sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache

Các tệp ứng dụng hiện đã có thứ tự, nhưng chúng tôi vẫn cần định cấu hình Nginx để phân phát nội dung. Để làm điều này, chúng tôi sẽ tạo một tệp cấu hình máy chủ ảo mới tại /etc/nginx/sites-available:

sudo nano /etc/nginx/sites-available/travellist

Tệp cấu hình sau chứa các cài đặt được đề xuất cho các ứng dụng Laravel trên Nginx:

server {
    listen 80;
    server_name server_domain_or_IP;
    root /var/www/travellist/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Sao chép nội dung này vào tệp /etc/nginx/sites-available/travellist của bạn và nếu cần, hãy điều chỉnh các giá trị được đánh dấu để phù hợp với cấu hình của riêng bạn. Lưu và đóng tệp khi bạn chỉnh sửa xong.

Để kích hoạt tệp cấu hình máy chủ ảo mới, hãy tạo một symbolic link tới travellist trong sites-enabled:

sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/

Để xác nhận rằng cấu hình không chứa bất kỳ lỗi cú pháp nào, bạn có thể sử dụng:

sudo nginx -t

Bạn sẽ thấy đầu ra như thế này:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Để áp dụng các thay đổi, hãy tải lại Nginx bằng:

sudo systemctl reload nginx

Bây giờ, hãy truy cập trình duyệt của bạn và truy cập ứng dụng bằng tên miền hoặc địa chỉ IP của máy chủ, như được xác định bởi chỉ thị server_name trong tệp cấu hình của bạn

http://server_domain_or_IP

Bạn sẽ thấy một trang như thế này:

Điều đó xác nhận máy chủ Nginx của bạn được cấu hình đúng để phục vụ Laravel. Ok vậy là xong rồi bh nhiệm vụ của bạn là đi xây dựng dự án của bạn thôi

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday