Thứ sáu, 20/04/2018 | 00:00 GMT+7

Cách cài đặt và cấu hình LEMP bằng Bộ sưu tập phần mềm trên CentOS 7

Phần mềm LEMP là một group phần mềm nguồn mở thường được cài đặt cùng nhau để cho phép server lưu trữ các trang web động và ứng dụng web. Thuật ngữ này thực sự là một từ viết tắt đại diện cho hệ điều hành L inux, với web server E Nginx (thay thế thành phần Apache của LAMP ). Dữ liệu trang web được lưu trữ trong database M ySQL (sử dụng MariaDB) và nội dung động được xử lý bởi P HP.

Đôi khi, các thành phần LEMP được cài đặt bằng cách sử dụng kho lưu trữ CentOS 7 EPEL . Tuy nhiên, kho này chứa các gói đã lỗi thời. Ví dụ: bạn không thể cài đặt bất kỳ version PHP nào cao hơn 5.4.16 từ EPEL, mặc dù bản phát hành này đã không được hỗ trợ trong một thời gian dài . Để có được version phần mềm mới hơn, bạn nên sử dụng Bộ sưu tập phần mềm, còn gọi là SCL. SCL là tập hợp các tài nguyên dành cho nhà phát triển do RedHat cung cấp, cho phép bạn sử dụng nhiều version phần mềm trên cùng một hệ thống mà không ảnh hưởng đến các gói đã cài đặt trước đó.

Trong hướng dẫn này, bạn sẽ cài đặt LEMP trên server CentOS 7. Hệ điều hành CentOS đảm nhận thành phần Linux. Bạn sẽ cài đặt phần còn lại của nội dung bằng cách sử dụng repository Software Collections và sau đó cấu hình chúng để phân phát một trang web đơn giản.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn nên cài đặt server CentOS 7 theo hướng dẫn cài đặt server ban đầu CentOS 7 , bao gồm cả user không phải root có quyền sudo .

Bước 1 - Bật repository Bộ sưu tập phần mềm

Để có quyền truy cập vào SCL dành cho CentOS, để cài đặt file phát hành CentOS Linux Software Collections:

  • sudo yum install centos-release-scl

Xem danh sách các gói SCL có sẵn bằng lệnh sau:

  • yum --disablerepo='*' --enablerepo='centos-sclo-rh' --enablerepo='centos-sclo-sclo' list available

Để tránh mọi xung đột trên toàn hệ thống, các gói SCL được cài đặt trong folder /opt/rh . Chẳng hạn, điều này cho phép bạn cài đặt Python 3.5 trên máy CentOS 7 mà không cần gỡ bỏ hoặc can thiệp vào Python 2.7.

Tất cả các file cấu hình cho các gói SCL được lưu trữ trong folder tương ứng bên trong folder /etc/opt/rh/ . Các gói SCL cung cấp các tập lệnh shell xác định các biến môi trường cần thiết để sử dụng các ứng dụng đi kèm, chẳng hạn như PATH , LD_LIBRARY_PATHMANPATH . Các tập lệnh này được lưu trữ trong hệ thống file dưới dạng /opt/rh/ package-name /enable .

Đến đây bạn đã sẵn sàng để bắt đầu cài đặt các gói được nêu trong hướng dẫn này.

Bước 2 - Cài đặt Server Web Nginx

Để hiển thị các trang web cho khách truy cập, ta sẽ sử dụng Nginx, một web server hiện đại, hiệu quả.

Cài đặt Nginx bằng lệnh yum sau. Đảm bảo thay thế giá trị được đánh dấu bằng version Nginx bạn muốn cài đặt; version mới nhất sẽ có số cao nhất trong tên gói ( 112 tại thời điểm viết bài này):

  • sudo yum install rh-nginx112

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

  • sudo systemctl start rh-nginx112-nginx

Xác nhận Nginx đang chạy bằng lệnh lệnh systemctl status :

  • sudo systemctl status rh-nginx112-nginx
Output
● rh-nginx112-nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/rh-nginx112-nginx.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2018-03-19 15:15:43 UTC; 1min 17s ago Main PID: 10556 (nginx) CGroup: /system.slice/rh-nginx112-nginx.service ├─10556 nginx: master process /opt/rh/rh-nginx112/root/usr/sbin/nginx ├─10557 nginx: worker process └─10558 nginx: worker process Mar 19 15:15:43 lemp-centos-222 systemd[1]: Starting The nginx HTTP and reverse proxy server... Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: the configuration file /etc/opt/rh/rh-nginx... ok Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: configuration file /etc/opt/rh/rh-nginx112/...ful Mar 19 15:15:43 lemp-centos-222 systemd[1]: Started The nginx HTTP and reverse proxy server. Hint: Some lines were ellipsized, use -l to show in full.

Đến đây, server của bạn có thể dễ bị user lạ truy cập trái phép. Để khắc phục điều này, hãy cài đặt firewall bằng firewalld. Trước tiên, bạn có thể cần cài đặt firewalld, có thể thực hiện bằng lệnh sau:

  • sudo yum install firewalld

Sau đó, bắt đầu dịch vụ firewalld:

  • sudo systemctl start firewalld

Tiếp theo, thêm một số luật firewall để cho phép truy cập SSH vào server của bạn và kết nối HTTP và HTTPS với Nginx:

  • sudo firewall-cmd --permanent --add-service=ssh
  • sudo firewall-cmd --zone=public --permanent --add-service=http
  • sudo firewall-cmd --zone=public --permanent --add-service=https

Cập nhật firewall d để thực hiện các luật firewall mới:

  • sudo firewall-cmd --reload

Tìm hiểu thêm về firewalld trong Cách cài đặt firewall bằng FirewallD trên CentOS 7 .

Với các luật firewall mới này được thêm vào, bạn có thể kiểm tra xem server có đang hoạt động hay không bằng cách truy cập vào domain hoặc địa chỉ IP công cộng của server trong trình duyệt web .

Nếu bạn không có domain được trỏ đến server của bạn và bạn không biết địa chỉ IP công khai của server , bạn có thể tìm thấy nó bằng lệnh thông tin sau vào terminal của bạn:

  • curl -4 icanhazip.com

Nhập địa chỉ IP kết quả vào thanh địa chỉ của trình duyệt web và bạn sẽ thấy trang đích mặc định của Nginx:

http://server_domain_or_IP 

Trang mặc định của Nginx

Nếu bạn thấy trang này, bạn đã cài đặt thành công Nginx. Trước khi tiếp tục, hãy bật Nginx để bắt đầu khởi động bằng lệnh sau:

  • sudo systemctl enable rh-nginx112-nginx

Server Nginx hiện đã được cài đặt và bạn có thể chuyển sang cài đặt phần mềm database MariaDB.

Bước 3 - Cài đặt MariaDB để quản lý dữ liệu trang web

Bây giờ ta đã có một web server , đã đến lúc cài đặt MariaDB, một phần mềm thay thế cho MySQL, để lưu trữ và quản lý dữ liệu cho trang web .

Cài đặt MariaDB bằng lệnh sau. , hãy thay thế giá trị được đánh dấu bằng bất kỳ số version nào bạn muốn cài đặt, số cao nhất là version mới nhất hiện có ( 102 , tại thời điểm viết bài này):

  • sudo yum install rh-mariadb102

Khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ MariaDB bằng lệnh sau:

  • sudo systemctl start rh-mariadb102-mariadb

Cùng với đó, MariaDB đã được cài đặt và chạy. Tuy nhiên, cấu hình của nó vẫn chưa hoàn thiện.

Để bảo mật cài đặt, MariaDB được cài đặt với một tập lệnh bảo mật nhắc bạn sửa đổi một số cài đặt mặc định không an toàn. Chạy tập lệnh bằng lệnh :

  • source /opt/rh/rh-mariadb102/enable
  • mysql_secure_installation

Dấu nhắc sẽ yêu cầu bạn nhập password root hiện tại của bạn. Vì bạn vừa cài đặt MySQL, rất có thể bạn sẽ không có, vì vậy hãy để trống bằng cách nhấn ENTER . Sau đó, dấu nhắc sẽ hỏi bạn có muốn đặt password root hay không. Tiếp tục và nhập Y , và làm theo các hướng dẫn:

. . . 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 authorization.  Set root password? [Y/n] Y New password: password Re-enter new password: password Password updated successfully! Reloading privilege tables..  ... Success! . . . 

Đối với các câu hỏi còn lại, nhấn ENTER qua mỗi dấu nhắc để chấp nhận các giá trị mặc định. Thao tác này sẽ xóa một số user ẩn danh và database thử nghiệm, vô hiệu hóa đăng nhập root từ xa và tải các luật mới này để MariaDB ngay lập tức áp dụng các thay đổi mà ta đã thực hiện.

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

  • sudo systemctl enable rh-mariadb102-mariadb

Đến đây, hệ thống database của bạn đã được cài đặt xong và bạn có thể chuyển sang cài đặt PHP trên server của bạn .

Bước 4 - Cài đặt và cấu hình PHP để xử lý

Đến đây bạn đã cài đặt Nginx để phục vụ các trang của bạn và MariaDB được cài đặt để lưu trữ và quản lý dữ liệu . Tuy nhiên, bạn vẫn chưa cài đặt bất kỳ thứ gì có thể tạo nội dung động. Đây là lúc PHP xuất hiện.

Vì Nginx không chứa PHP processor root như một số web server khác, bạn cần cài đặt php-fpm , viết tắt của “fastCGI process manager”. Sau đó, bạn sẽ cấu hình Nginx để chuyển các yêu cầu PHP tới phần mềm này để xử lý.

Cài đặt module này và cũng lấy một gói trợ giúp cho phép PHP giao tiếp với backend database của bạn. Quá trình cài đặt sẽ kéo các file lõi PHP cần thiết vào. Làm điều này bằng lệnh :

  • sudo yum install rh-php71-php-fpm rh-php71-php-mysqlnd

Các thành phần PHP của bạn hiện đã được cài đặt, nhưng có một thay đổi nhỏ về cấu hình mà bạn nên thực hiện để tăng cường bảo mật cho cài đặt của bạn .

Mở file cấu hình php.ini chính với quyền root :

  • sudo vi /etc/opt/rh/rh-php71/php.ini

Trong file này, hãy tìm tham số đặt cgi.fix_pathinfo . Điều này sẽ được comment bằng dấu chấm phẩy (;) và được đặt thành “1” theo mặc định.

Đây là một cài đặt cực kỳ không an toàn vì nó yêu cầu PHP cố gắng thực thi file gần nhất mà nó có thể tìm thấy nếu không tìm thấy file PHP được yêu cầu. Điều này về cơ bản sẽ cho phép user tạo các yêu cầu PHP theo cách cho phép họ thực thi các tập lệnh mà họ không được phép thực thi.

Thay đổi cả hai điều kiện này bằng cách bỏ comment và đặt nó thành “0” như sau:

71 / php.ini '> / etc / opt / rh / rh-php 71 /php.ini
cgi.fix_pathinfo=0 

Lưu file khi bạn hoàn tất (nhấn ESC , nhập :wq , sau đó nhấn Enter ).

Tiếp theo, mở file cấu hình php-fpm www.conf :

  • sudo vi /etc/opt/rh/rh-php71/php-fpm.d/www.conf

Theo mặc định, file này được cấu hình để hoạt động với server Apache. Vì server của bạn đã cài đặt Nginx trên đó, hãy tìm các dòng đặt usergroup và thay đổi giá trị của họ từ “apache” thành “nginx”:

71 / php-fpm.d / www.conf '> / etc / opt / rh / rh-php 71 /php-fpm.d/www.conf
user = nginx group = nginx 

Sau đó, lưu file .

Tiếp theo, khởi động PHP processor của bạn bằng lệnh :

  • sudo systemctl start rh-php71-php-fpm

Sau đó bật php-fpm để bắt đầu khi server khởi động :

  • sudo systemctl enable rh-php71-php-fpm

Như vậy, bạn đã cài đặt thành công PHP vào server của bạn . Tuy nhiên, nó vẫn phải được cấu hình để hoạt động với phần mềm khác mà bạn đã cài đặt để cho phép server của bạn phân phối chính xác nội dung trang web .

Bước 5 - Cấu hình Nginx để sử dụng PHP processor

Đến đây, bạn đã cài đặt tất cả các thành phần cần thiết của LEMP . Thay đổi cấu hình duy nhất bạn vẫn cần thực hiện là yêu cầu Nginx sử dụng PHP processor của bạn cho nội dung động.

Thay đổi cấu hình này được thực hiện ở cấp độ khối server (các khối server tương tự như các server ảo của Apache). Mở file cấu hình khối server Nginx mặc định bằng lệnh :

  • sudo vi /etc/opt/rh/rh-nginx112/nginx/nginx.conf

Bỏ ghi chú location ~ \.php$ block (phân đoạn của file xử lý các yêu cầu PHP, được tìm thấy trong khối server ) và nội dung của nó bằng cách xóa ký hiệu bảng Anh (#) khỏi đầu mỗi dòng. Bạn cũng cần cập nhật tùy chọn fastcgi_param thành SCRIPT FILENAME $document_root$fastcgi_script_name . Điều này thông báo cho PHP về vị trí của root tài liệu nơi nó có thể tìm thấy các file để xử lý.

Sau khi áp dụng các thay đổi cần thiết, khối server sẽ giống như sau:

/ etc / nginx / sites-available / default
... server {     listen       80 default_server;     listen       [::]:80 default_server;     server_name  _;     root         /opt/rh/rh-nginx112/root/usr/share/nginx/html;      # Load configuration files for the default server block.     include      /etc/opt/rh/rh-nginx112/nginx/default.d/*.conf;      location / {     }      error_page 404 /404.html;     location = /40x.html {     }      error_page 500 502 503 504  /50x.html;     location = /50x.html {     }      # proxy the PHP scripts to Apache listening on 127.0.0.1:80     #     #location ~ \.php$ {     #    proxy_pass   http://127.0.0.1;     #}      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000     #     location ~ \.php$ {         root           html;         fastcgi_pass   127.0.0.1:9000;         fastcgi_index  index.php;         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;         include        fastcgi_params;     }      # deny access to .htaccess files, if Apache's document root     # concurs with nginx's one     #     #location ~ /\.ht {     #    deny  all;     #} } ... 

Khi bạn đã áp dụng các thay đổi , bạn có thể lưu file và thoát khỏi editor .

Tiếp theo, kiểm tra file cấu hình của bạn để tìm lỗi cú pháp bằng cách chạy các lệnh sau:

  • source /opt/rh/rh-nginx112/enable
  • sudo nginx -t

Nếu có lỗi , hãy quay lại và kiểm tra lại file của bạn trước khi tiếp tục.

Khi file cấu hình của bạn hợp lệ, hãy reload Nginx để áp dụng các thay đổi bạn đã thực hiện:

  • sudo systemctl reload rh-nginx112-nginx

Bây giờ Nginx, PHP và MariaDB đã được cài đặt và cấu hình , tất cả những gì còn lại cần làm là xác nhận cấu hình LEMP có thể phân phối chính xác nội dung cho khách truy cập trang web .

Bước 6 - Tạo file PHP để kiểm tra cấu hình

LEMP của bạn hiện đã được cài đặt hoàn toàn và bạn có thể kiểm tra nó để xác thực rằng Nginx có thể phân phối chính xác các file .php cho PHP processor của bạn hay không. Điều này được thực hiện bằng cách tạo một file PHP thử nghiệm trong root tài liệu của ta .

Mở một file mới có tên là info.php trong folder root :

  • sudo vi /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php

Thêm dòng sau vào file mới. Đây là mã PHP hợp lệ sẽ trả về thông tin về server của bạn:

112 / root / usr / share / nginx / html / info.php '> / opt / rh / rh-nginx 112 /root/usr/share/nginx/html/info.php
<?php phpinfo(); ?> 

Khi bạn hoàn tất, hãy lưu file . Sau đó, truy cập trang này trong trình duyệt web bằng cách truy cập domain hoặc địa chỉ IP công cộng của server của bạn, theo sau là /info.php :

http://server_domain_or_IP/info.php 

Bạn sẽ thấy một trang web được tạo bởi PHP với thông tin về server của bạn:

Thông tin trang PHP

Nếu bạn thấy một trang giống như thế này, bạn đã cài đặt PHP processor với Nginx thành công.

Sau khi xác minh Nginx hiển thị trang chính xác, tốt nhất là xóa file bạn đã tạo vì nó có thể cung cấp cho user lạ một số gợi ý về cấu hình của bạn có thể giúp họ xâm nhập trái phép. Bạn luôn có thể tạo lại file này nếu cần.

Xóa file bằng lệnh :

  • sudo rm /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php

Như vậy, bạn đã xác nhận tất cả các thành phần của LEMP của bạn đã được cài đặt và cấu hình chính xác trên server của bạn.

Kết luận

Đến đây bạn có một LEMP được cấu hình đầy đủ trên server CentOS 7 của bạn . Điều này mang lại cho bạn một nền tảng rất linh hoạt để cung cấp nội dung web cho khách truy cập của bạn.

SCL cũng được sử dụng để cài đặt các version phần mềm khác nhau và chuyển đổi giữa chúng. Bạn có thể xem danh sách tất cả các bộ sưu tập đã cài đặt trên hệ thống bằng lệnh:

  • scl --list

Nếu quan tâm, bạn có thể tìm thêm thông tin về Bộ sưu tập phần mềm trên trang web chính thức .


Tags:

Các tin liên quan

Cách thiết lập khóa SSH trên CentOS 7
2018-04-12
Cách cài đặt và bảo mật Memcached trên CentOS 7
2018-03-06
Cách cài đặt Java trên CentOS và Fedora
2018-02-16
Cách theo dõi cảnh báo Nagios với Alerta trên CentOS 7
2017-09-13
Cách cài đặt MongoDB trên CentOS 7
2017-09-11
Cách cài đặt Nagios 4 và theo dõi server của bạn trên CentOS 7
2017-09-11
Cách cài đặt WordPress với Caddy trên CentOS 7
2017-08-04
Cách cài đặt và sử dụng Webmin trên CentOS 7
2017-07-13
Cách bật SFTP mà không cần quyền truy cập Shell trên CentOS 7
2017-06-01
Cách theo dõi cảnh báo Zabbix với Alerta trên CentOS 7
2017-05-31