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 1 Bình luận
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 user và group. 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.group và listen.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 Y và ENTER.
Để 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)
Bài viết quá hay ! Thank you