Hướng dẫn cài LEMP stack trên CentOS 7

1 năm trước

 

Hướng dẫn cài Linux, Nginx, MySQL, PHP (LEMP) stack trên CentOS 7

 

Giới thiệu

Gói phần mềm LEMP stack là một nhóm các phần mềm mã nguồn mở được cài đặt cùng nhau để hỗ trợ server quản lý website động và các ứng dụng liên quan. Cụm từ này viết tắt của các chữ cái đầu trong  Linux - hệ điều hành,  ENginx - web server , MySQL - hệ cơ sở dữ liệu sử dụng MariaDB, và PHP - mảng động.

Trong phần này chúng tôi sẽ hướng dẫn cài đặt LEMP trên CentOS 7 sử dụng hệ điều hành Linux.

 

 Yêu cầu căn bản

Chú ý với SELinux: Nếu không hoạt động trong Nginx , thì nên xem lại nội dung của nó trong file cấu hình Nginx đã chuẩn chưa và thay đổi trạng thái của nó thành  permissive hoặc disabled.

  Bước 1 - Cài Nginx

Để mô phỏng website cho người dùng thì chúng ta cần sử dụng Nginx - một server web hiện đại và khá hiệu quả.

Thêm kho lưu trữ EPEL của CentOS 7 :

sudo yum install epel-release 

Vì dùng lệnh sudo  nên cần có đặc quyền root, vậy nên bạn cần nhập mật khẩu để hệ thống xác minh liệu rằng bạn có quyền sử dụng lệnh này hay không.

Giờ thì cài Nginx sử dụng lệnh yum nhé:

sudo yum install nginx 

Thế là webserver của bạn đã được cài xong.

Sau đó khởi động lại trên VPS:

sudo systemctl start nginx 

Bạn có thể check ngay lập tức để xác minh liệu rằng hệ thống có hoạt động đúng theo mong đợi không bằng cách truy cập địa chỉ IP công khai trên trình duyệt (điền địa chỉ IP bạn có vào phần tô màu đỏ):

Open in a web browser:
http://server_domain_name_or_IP/ 

Bạn sẽ thấy một webpage Nginx của CentOS 7 mặc định như thế này, nó khá đơn giản:

CentOS 7 Nginx Default

Đây là giao diện webserver chuẩn.

Để tiếp tục thì bạn cần hữu hiệu hóa Nginx để nó bắt đầu nạp vào bộ nhớ, sử dụng lệnh sau:

sudo systemctl enable nginx 

Tìm địa chỉ IP công khai

Nếu bạn chưa biết địa chỉ IP công khai của bạn là gì thì có khá nhiều cách để tìm ra, và đây là địa chỉ mà bạn dùng để kết nối với server thông qua SSH.

Đầu tiên sử dụng công cụ iproute2 để tìm địa chỉ IP:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 

Kết quả trả về có thể là một hoặc hai địa chỉ IP , thế nhưng bạn chỉ cần chọn một thôi là được.

Một cách khác là sử dụng bên thứ ba để truy cập một server cụ thể để lấy địa chỉ IP của nó.

curl http://icanhazip.com 

Cả hai cách đều thao tác trên thanh địa chỉ trên trình duyệt của bạn.

 

Bước 2 - Cài MySQL (MariaDB)

Tiếp theo là cài MariaDB, một công cụ thay thế cho MySQL . MariaDB là một nhánh của hệ thống quản lý cơ sở dữ liệu liên quan đến MySQL. Căn bản là nó sẽ điều khiển và cung cấp chức năng truy cập tới hệ cơ sở dữ liệu của site mà có thể lưu trữ thông tin trong đó.

Lại sử dụng lệnh yum để cài phần mềm. Và cài thêm các gói hỗ trợ để chúng có thể kết nối với nhau để đem đến hiệu quả cao cho ứng dụng:

sudo yum install mariadb-server mariadb 

 

Sau đó khởi động lại MariaDB :

sudo systemctl start mariadb 

Giờ thì MySQL đang hoạt động, ta sẽ chạy thêm tập lệnh bảo mật để loại bỏ các mã độc gây ảnh hưởng tới ứng dụng và ngăn chặn khả năng truy cập tới hệ cở sở dữ liệu.

sudo mysql_secure_installation 

Bạn sẽ bị yêu cầu nhập mật khẩu , vì bạn mới chỉ cài MySQL thôi nên chưa có mật khẩu thế nên hãy bỏ qua bước này bằng cách nhấn enter. Sau đó hệ thống sẽ hỏi bạn có muốn cài mật khẩu không, lúc này bạn nhấn "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. New password: password Re-enter new password: password Password updated successfully! Reloading privilege tables.. ... Success! 

Các bước còn lại rất đơn giản , chỉ cần nhấn "ENTER" là xong (cài theo mặc định của hệ thống). Hệ thống sẽ gỡ bỏ người dùng sample và cơ sở dữ liệu, vô hiệu hóa chức năng đăng nhập từ xa, và nạp những thay đổi mới để My SQL hoạt động sao cho phù hợp với những thay đổi mà chúng ta vừa tạo.

Cuối cùng là hữu hiệu hóa MariaDB để bắt đầu nạp vào bộ nhớ:

sudo systemctl enable mariadb 

Hệ cơ sở dữ liệu đã được thiết lập, ta sẽ chuyển sang bước tiếp theo.

 

Bước 3 - Cài PHP

PHP  là công cụ xử lý code để mô phỏng nội dung động . Nó chạy lệnh, kết nối với hệ cơ sở dữ liệu My SQL để lấy thông tin rồi mô phỏng nội dung động trên website .

Lại dùng lệnh yum để cài đặt, bao gồm cả gói php-mysql và php-fpm :

sudo yum install php php-mysql php-fpm 

Cấu hình bộ xử lý PHP

Ta cần thay đổi chút cấu hình để cho hệ thống bảo mật hơn sau khi cài đặt.

Mở file cấu hình chính php-fpm với đặc quyền root:

sudo vi /etc/php.ini 

Tìm thông số cgi.fix_pathinfo. Được ghi chú với dấu (;) và trạng thái ở nấc "1" .

Đây là trạng thái không bảo mật vì nó lệnh cho PHP thao tác với file gần nhất mà nó tìm thấy nếu như nó không tương thích với file đang yêu cầu xử lý. Nó cho phép người dùng tạo yêu cầu truy cập PHP để sửa lệnh trong khi thực tế là không được phép làm thế.

Nên ta sẽ thay giá trị "1" thành "0" :

/etc/php.ini excerpt
cgi.fix_pathinfo=0

Lưu và đóng file khi hoàn thành.

Mở file cấu hình php-fpm tại địa chỉ www.conf:

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

Tìm thông số listen và thay đổi theo mẫu dưới đây:

/etc/php-php.d/www.conf — 1 of 3
listen = /var/run/php-fpm/php-fpm.sock

Tìm dòng có thông tin listen.owner và listen.group và sửa như sau: 

/etc/php-php.d/www.conf — 2 of 3
listen.owner = nobody
listen.group = nobody

Cuối cùng, tìm dòng có thông tin user và group và đổi "apache"thành"nginx":

/etc/php-php.d/www.conf — 3 of 3
user = nginx
group = nginx

Lưu và thoát.

Giờ thì khởi động lại bộ xử lý PHP bằng cách nhập:

sudo systemctl start php-fpm 

Nó sẽ lưu thay đổi.

Tiếp đến là hữu hiệu hóa php-fpm để nạp vào bộ nhớ:

sudo systemctl enable php-fpm 
 

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

Giờ ta chỉ cần thay đổi cấu hình để lệnh cho Nginx sử dụng bộ xử lý PHP thao tác với nội dung động.

Thao tác trên server block level, mở file cấu hình server block Nginx mặc định lên:

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

File sẽ như thế này ( những ghi chú đã bị lược bỏ):

/etc/nginx/conf.d/default.conf — original
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}}

Các thông số cần thay đổi.

  • Đầu tiên là thêm index.php để cho phép file chỉ số PHP hoạt động khi truy cập vào một danh mục được yêu cầu.
  • Chỉnh sửa mục server_name để trỏ tới tên miền hoặc địa chỉ IP.
  • Với những dòng lệnh ở trạng thái ghi chú mà có chức năng xác định các thủ tục xử lí lỗi thì ta nên hữu hiệu hóa chức năng của chúng.
  •  Thêm mục try_files để đảm bảo Nginx không cho phép những nguồn không đáng tin truy cập tới bộ xử lý PHP .

Thay đổi thông tin trong vùng chữ màu đỏ sao cho phù hợp với cài đăt của bạn. Nếu muốn thì có thể copy và paste cả đoạn rồi đổi giá trị server_name thành tên miền hoặc địa chỉ IP phù hợp:

/etc/nginx/conf.d/default.conf — updated
server {
listen 80;
server_name server_domain_name_or_IP;
# note that these lines are originally from the "location /" block
root /usr/share/nginx/html; index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404; }error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}location ~ \.php$ {try_files $uri =404;fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

Lưu và đóng file khi hoàn thành.

Khởi động lại Nginx để lưu thay đổi:

sudo systemctl restart nginx 
 

Bước 5 - Kiểm tra bộ xử lý  PHP trên Web Server

Để kiểm tra , ta cần tạo một tập lệnh PHP đơn giản.

Gọi tập lệnh info.php. Để Apache tìm và thao tác chính xác thì ta cần lưu vào danh mục cụ thể là "web root".

Trên CentOS 7, vị trí lưu /usr/share/nginx/html/. Ta có thể tạo một file ở vị trí đó:

sudo vi /usr/share/nginx/html/info.php 

Nó sẽ mở ra một file trống. Ta sẽ nhập code PHP vào đó:

Test PHP Script

Lưu và đóng file khi hoàn thành.

Sử dụng mật khẩu để truy cập địa chỉ IP trên trình duyệt để kiểm tra xem nó có hoạt động đúng như mong đợi không.

Địa chỉ IP cần truy cập là( vùng chữ màu đỏ là nhập địa chỉ IP của bạn):

Open in a web browser:
http://your_server_IP_address/info.php 

Trang hiển thị:

CentOS 7 default PHP info

Nó sẽ đưa ra thông tin về server dựa trên nền tảng PHP, điều này tiện cho việc sửa lỗi cũng như kiểm tra xem liệu nó có hoạt động đúng như cài đặt hay không.

Tiếp theo là nên bỏ file vừa tạo vì rất có thể nó sẽ làm lộ thông tin server tới người dùng không đáng tin:

sudo rm /usr/share/nginx/html/info.php 

Bạn có thể tạo lại một trang hoàn toàn mới nếu cần kiểm tra thông tin lần nữa.

 

Kết luận

Giờ thì bạn đã cài đặt thành công gói LEMP stack rồi , thế nên sẽ rất dễ dàng cho bạn để cài các công cụ khác sau này .Vì căn bản là bạn đã cài một platform cho phép bạn có thể cài hầu hết các website cũng như các ứng dụng web trên server của bạn .

curl http://icanhazip.com