Quay lại

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên CentOS 7 Chuyên mục Devops    2023-05-03    675 Lượt xem    18 Lượt thích    comment-3 Created with Sketch Beta. 1 Bình luận

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên CentOS 7

Hello xin chào tất cả mọi người hôm nay mình sẽ hướng dẫn các bạn cách cài nginx , mysql, php , php-fpm trên centos nhé !

Bước 1 — Cài đặt Nginx

Để hiển thị các trang web cho khách truy cập, chúng ta sẽ sử dụng Nginx, một máy chủ web hiệu suất cao. Để có phiên bản Nginx mới nhất, trước tiên chúng ta sẽ cài đặt kho lưu trữ EPEL, chứa phần mềm bổ sung cho hệ điều hành CentOS 7.

Để thêm kho lưu trữ CentOS 7 EPEL, hãy chạy lệnh sau:

sudo yum install epel-release

Trong trường hợp bạn dùng linux aws thì dùng lệnh sau :

sudo amazon-linux-extras install epel

Bây giờ kho lưu trữ EPEL đã được cài đặt trên máy chủ của bạn, hãy cài đặt Nginx bằng lệnh yum sau:

sudo yum install nginx

Sau khi cài đặt xong, hãy khởi động dịch vụ Nginx với:

sudo systemctl start nginx

Bạn có thể thực hiện kiểm tra tại chỗ ngay lập tức để xác minh rằng mọi thứ diễn ra theo đúng kế hoạch bằng cách truy cập địa chỉ IP công cộng của máy chủ trong trình duyệt web của bạn:

http://server_domain_name_or_IP/

Bạn sẽ thấy trang web CentOS 7 Nginx mặc định, trang này dành cho mục đích thử nghiệm và thông tin. Nó sẽ trông giống như thế này:

Nếu bạn thấy trang này thì máy chủ web của bạn hiện đã được cài đặt chính xác.

Để cho phép Nginx khởi động khi boot, hãy chạy lệnh sau:

sudo systemctl enable nginx

Bước 2 — Cài đặt MariaDB

Chúng ta đã thiết lập và chạy máy chủ web của mình, đã đến lúc cài đặt MariaDB, một bản thay thế bổ sung cho MySQL. MariaDB là một nhánh rẽ do cộng đồng phát triển của hệ thống quản lý cơ sở dữ liệu quan hệ MySQL.

Một lần nữa, chúng ta có thể sử dụng yum để lấy và cài đặt phần mềm của mình:

sudo yum install mariadb-server mariadb

Khi quá trình cài đặt hoàn tất, chúng ta cần khởi động MariaDB bằng lệnh sau:

sudo systemctl start mariadb

Bây giờ cơ sở dữ liệu MariaDB của chúng ta đã chạy. chúng ta muốn chạy security script để xóa một số giá trị mặc định và khóa quyền truy cập vào cơ sở dữ liệu của chúng ta.

sudo mysql_secure_installation

Lời nhắc sẽ hỏi bạn mật khẩu MariaDB gốc hiện tại của bạn. Vì bạn vừa cài đặt MariaDB nên rất có thể bạn sẽ không có MariaDB, vì vậy hãy để trống bằng cách nhấn enter. Sau đó, lời nhắc sẽ hỏi bạn có muốn đặt mật khẩu gốc không. Hãy tiếp tục và nhập Y và làm theo hướng dẫn:

mysql_secure_installation prompts:
Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Đối với các câu hỏi còn lại, bạn nên nhấn phím “ENTER” qua mỗi lời nhắc để chấp nhận các giá trị mặc định. Thao tác này sẽ xóa một số người dùng và cơ sở dữ liệu mẫu, vô hiệu hóa đăng nhập gốc từ xa và tải các quy tắc mới này để MySQL ngay lập tức .

Điều cuối cùng bạn muốn làm là kích hoạt MariaDB để bắt đầu khởi động. Sử dụng lệnh sau:

sudo systemctl enable mariadb

Tại thời điểm này, hệ thống cơ sở dữ liệu của bạn hiện đã được thiết lập

Bước 3 — Cài đặt PHP

PHP là thành phần thiết lập của chúng ta sẽ xử lý code để hiển thị nội dung động. Nó có thể chạy các tập lệnh, kết nối với cơ sở dữ liệu MySQL của chúng ta để lấy thông tin và chuyển nội dung đã xử lý cho máy chủ web của chúng ta để hiển thị.

Phiên bản PHP có sẵn theo mặc định trong các máy chủ CentOS 7 đã lỗi thời và vì lý do đó, chúng ta sẽ cần cài đặt kho lưu trữ gói của bên thứ ba để tải xuống PHP 7+ và cài đặt nó trên máy chủ CentOS 7 của bạn. Remi là một kho lưu trữ gói phổ biến cung cấp các bản phát hành PHP cập nhật nhất cho các máy chủ CentOS.

Trước hết, để cài đặt hoặc nâng cấp PHP version chúng ta cần kiểm tra xem trên server đã được cài đặt PHP hay chưa và tiến hành remove ra để tránh sự xung đột.

Để kiểm tra trên server đã được cài đặt PHP hay chưa ta chạy lệnh:

php -v
[root@centos7 ~]# php -v
PHP 5.6.40 (cli) (built: May 13 2020 09:20:03)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Liệt kê các extension đã được cài đặt:

[root@centos7 ~]# yum list installed | grep php
php.x86_64                   5.6.40-21.el7.remi             @remi-php56   
php-cli.x86_64               5.6.40-21.el7.remi             @remi-php56   
php-common.x86_64            5.6.40-21.el7.remi             @remi-php56   
php-fpm.x86_64               5.6.40-21.el7.remi             @remi-php56   
php-gd.x86_64                5.6.40-21.el7.remi             @remi-php56   
php-mbstring.x86_64          5.6.40-21.el7.remi             @remi-php56   
php-mysqlnd.x86_64           5.6.40-21.el7.remi             @remi-php56   
php-opcache.x86_64           5.6.40-21.el7.remi             @remi-php56   
php-pdo.x86_64               5.6.40-21.el7.remi             @remi-php56   
php-pecl-jsonc.x86_64        1.3.10-2.el7.remi.5.6          @remi-php56   
php-pecl-zip.x86_64          1.19.0-1.el7.remi.5.6          @remi-php56   
php-xml.x86_64               5.6.40-21.el7.remi             @remi-php56   
php-xmlrpc.x86_64            5.6.40-21.el7.remi             @remi-php56 

Như ta thấy trên server đã được cài đặt PHP 5.6, bây giờ chúng ta sẽ tiến hành gỡ bỏ toàn bộ phiên bản cũ của PHP trước đó bằng lệnh:

yum remove php*

Trước khi cài đặt thì chúng ta nên cập nhật hệ thống trước khi bắt đầu cài đặt PHP 8 trên hệ thống Amazon Linux 2.

sudo yum -y update

Thêm kho lưu trữ EPEL và Remi

Các gói và phần phụ thuộc sẽ được yêu cầu trong quá trình cài đặt PHP 8 trên máy chủ Amazon Linux 2 hiện có trong kho EPEL và Remi. Hai kho lưu trữ RPM cần được thêm thủ công bằng cách chạy các lệnh bên dưới trong thiết bị đầu cuối.

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Cập nhật chỉ mục Yum để xác nhận hai kho lưu trữ đang hoạt động.

sudo yum makecache

Cài đặt PHP 8.0 trên Amazon Linux 2

Cài đặt gói yum-utils cung cấp công cụ dòng lệnh yum-config-manager.

sudo yum -y install yum-utils

Cách 1: Cài đặt PHP 8.0 từ OS repositories

Hãy xác nhận rằng topic PHP 8.0 có sẵn trong máy Amazon Linux 2 của chúng ta:

$ sudo  amazon-linux-extras | grep php
 15  php7.2                   available    \
 17  lamp-mariadb10.2-php7.2  available    \
 31  php7.3                   available    \
 42  php7.4                   available    [ =stable ]
 51  php8.0                   available    [ =stable ]

Chúng ta có thể xác nhận topic php8.0 có sẵn. Hãy kích hoạt nó.

sudo yum-config-manager --disable 'remi-php*'
sudo amazon-linux-extras enable php8.0 

Sau khi bật repo, hãy cài đặt PHP 8.0 trên Amazon Linux 2 với các tiện ích mở rộng PHP tiêu chuẩn.

sudo yum clean metadata
sudo yum install php-{pear,cgi,pdo,common,curl,mbstring,gd,mysqlnd,gettext,bcmath,json,xml,fpm,intl,zip}

Kiểm tra phiên bản PHP

$ php --version
PHP 8.0.16 (cli) (built: Mar  1 2022 00:31:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.16, Copyright (c) Zend Technologies

Cài đặt máy chủ web Apache httpd để kiểm tra việc thực thi tập lệnh PHP:

sudo yum -y install httpd
sudo systemctl enable --now httpd

Tạo tập lệnh thông tin PHP bên trong default của apache mặc định:

sudo tee /var/www/html/phpinfo.php<<EOF
<?php phpinfo(); ?>
EOF

Mở trình duyệt web của bạn và nhập http://serverip_or_hostname/phpinfo.php

Cách 2: Cài đặt PHP 8.0 từ kho REMI

Vô hiệu hóa tất cả các kho Remi PHP.

sudo yum-config-manager --disable 'remi-php*'
sudo amazon-linux-extras disable php8.0 

Kích hoạt kho lưu trữ PHP 8 Remi trên Amazon Linux 2:

sudo yum-config-manager --enable remi-php80

Kiểm tra danh sách kho lưu trữ hiện tại được kích hoạt.

$ sudo yum repolist
Loaded plugins: langpacks, priorities, update-motd
245 packages excluded due to repository priority protections
repo id                                                   repo name                                                                                     status
amzn2-core/2/x86_64                                       Amazon Linux 2 core repository                                                                    22,852
amzn2extra-docker/2/x86_64                                Amazon Extras repo for docker                                                                         36
epel/x86_64                                               Extra Packages for Enterprise Linux 7 - x86_64                                                13,291+195
remi-php80                                                Remi's PHP 8.0 RPM repository for Enterprise Linux 7 - x86_64                                     214+47
remi-safe                                                 Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                                       4,038+3
repolist: 40,431

Cài đặt PHP 8.0 trên Amazon Linux 2 bằng lệnh:

sudo yum install php80

Lưu ý rằng phương pháp cài đặt này không ảnh hưởng đến cài đặt PHP mặc định mà bạn có trên máy chủ Amazon Linux 2 của mình. Để sử dụng PHP 8, lệnh không phải là php mà là php80

$ php80 --version
PHP 8.0.17 (cli) (built: Mar 15 2022 08:24:20) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyright (c) Zend Technologies

Cài đặt các phần mở rộng PHP.

sudo yum install php80-<extension>

Ví dụ:

sudo yum install php80-php-fpm php80-php-mysqlnd php80-php-json php80-php-xml php80-php-tidy

Bạn cũng có thể tìm kiếm tất cả các gói phù hợp với php80.

sudo yum search php80

Kiểm tra các phần mở rộng có sẵn.

php80 --modules

Config php-fpm trên Amazon Linux 2

PHP hiện đã được cài đặt thành công trên hệ thống của bạn. Tiếp theo, chúng ta cần thực hiện một số điều chỉnh đối với cấu hình mặc định. Để tạo điều kiện chỉnh sửa tệp trên CentOS, trước tiên chúng ta sẽ cài đặt nano, trình soạn thảo văn bản thân thiện với người dùng hơn vi:

sudo yum install nano

Mở tệp cấu hình /etc/php-fpm.d/www.conf bằng nano hoặc trình chỉnh sửa bạn chọn:

sudo nano /etc/php-fpm.d/www.conf

Bây giờ hãy tìm chỉ thị của usergroup. Nếu bạn đang sử dụng nano, bạn có thể nhấn CTRL+W để tìm kiếm các thuật ngữ này bên trong tệp đang mở.

…
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
…

Bạn sẽ nhận thấy rằng cả biến user và group đều được đặt thành apache. Chúng ta cần thay đổi những thứ này thành nginx:

…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…

Tiếp theo, xác định vị trí listen. Theo mặc định, php-fpm sẽ lắng nghe trên một máy chủ cụ thể và cổng qua TCP. Chúng ta muốn thay đổi cài đặt này để nó lắng nghe trên tệp socket local, vì điều này cải thiện hiệu suất tổng thể của máy chủ. Thay đổi dòng chứa lệnh listen như sau:

listen = /var/run/php-fpm/php-fpm.sock;

Cuối cùng, chúng ta sẽ cần thay đổi cài đặt chủ sở hữu và nhóm cho socket file mà chúng ta vừa xác định trong lệnh listen. Xác định vị trí các lệnh listen.owner, listen.grouplisten.mode. Những dòng này được đặt theo mặc định. Bỏ comment chúng bằng cách xóa phần trước ; ký ở đầu dòng. Sau đó, thay đổi chủ sở hữu và nhóm thành nginx:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Lưu và đóng tệp khi bạn chỉnh sửa xong. Nếu bạn đang sử dụng nano, hãy làm như vậy bằng cách nhấn CTRL + X, sau đó nhấn YENTER.

Để bật và khởi động dịch vụ php-fpm, hãy chạy:

sudo systemctl start php-fpm

Môi trường PHP của bạn hiện đã sẵn sàng. Tiếp theo, chúng ta sẽ định cấu hình Nginx để nó gửi tất cả các yêu cầu cho các tập lệnh PHP để php-fpm xử lý.

Bước 4 - Cấu hình Nginx để xử lý các trang PHP

Bây giờ, chúng ta đã cài đặt tất cả các thành phần cần thiết. Thay đổi cấu hình duy nhất mà chúng ta vẫn cần thực hiện là yêu cầu Nginx sử dụng bộ xử lý PHP của chúng ta cho nội dung động.

Nginx có một thư mục chuyên dụng nơi chúng ta có thể xác định mỗi trang web được lưu trữ dưới dạng một tệp cấu hình riêng biệt, sử dụng khối máy chủ. Điều này tương tự với các máy chủ ảo của Apache.

Tuy nhiên, với cài đặt mặc định, thư mục này trống. Chúng ta sẽ tạo một tệp mới để phục vụ làm trang web PHP mặc định trên máy chủ này, tệp này sẽ ghi đè khối máy chủ mặc định được xác định trong tệp /etc/nginx/nginx.conf.

Đầu tiên, mở một tệp mới trong thư mục /etc/nginx/conf.d:

sudo nano /etc/nginx/conf.d/default.conf

Sao chép khối định nghĩa máy chủ PHP sau vào tệp cấu hình của bạn và đừng quên thay thế lệnh server_name để nó trỏ đến tên miền hoặc địa chỉ IP của máy chủ của bạn:

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root /var/www/html;

    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-fpm/php-fpm.sock;
        #fastcgi_pass unix:/var/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, khởi động lại Nginx để áp dụng các thay đổi:

sudo systemctl restart nginx

Máy chủ web của bạn hiện đã được thiết lập đầy đủ rồi.

5.Kết luận

Trong hướng dẫn này, bạn đã xây dựng một nền tảng linh hoạt để phục vụ các trang web và ứng dụng PHP cho khách truy cập của mình, sử dụng Nginx làm máy chủ web và phiên bản phát hành PHP mới nhất. Bạn đã thiết lập Nginx để xử lý các yêu cầu PHP thông qua php-fpm và bạn cũng đã thiết lập cơ sở dữ liệu MariaDB để lưu trữ dữ liệu trang web của mình.

Bình luận (1)

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

Michael Gough   Nguyen Văn Linh

Bài viết quá hay ! Thank you

Bài viết liên quan

Learning English Everyday