Hướng dẫn cách cài đặt LEMP trên Centos 7

Trong bài viết này HOSTVN sẽ hướng dẫn các bạn cách cách cài đặt LEMP trên Centos 7 - Linux Nginx, MariaDB, PHP-FPM, PhpMyAdmin.

Trong bài viết này HOSTVN sẽ hướng dẫn các bạn chi tiết cách cài đặt LEMP trên Centos 7 – Linux Nginx, MariaDB, PHP-FPM, PhpMyAdmin.

Hướng dẫn cách cài đặt LEMP trên Centos 7

LEMP là gì ?

LEMP là chữ viết tắt thường được dùng để chỉ sự sử dụng các phần mềm Linux, Nginx, MySQL/MariaDB và PHP/PHP-FPM để tạo nên một môi trường máy chủ Web giúp triển khai các website trên môi trường Internet.

Cài đặt LEMP trên Centos 7

Nếu chưa biết cách kết nối VPS qua SSH các bạn có thể xem hướng dẫn dưới đây

1. Bước 1: Cài đặt Nginx và cấu hình cơ bản

Để thuận tiện cho việc chỉnh sửa và tạo file các bạn có thể kết nối tới VPS thông qua SFTP theo hướng dẫn sau

1.1. Tắt Selinux

Để tắt Selinux các bạn chạy lệnh sau

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0
1.2. Cài đặt Nginx

Theo mặc định thì khi cài đặt qua repo của CentOS sẽ không phải là phiên bản mới nhất. Để cài đặt phiên bản mới nhất của Nginx chúng ta cần tạo  repo riêng bằng cách tạo file /etc/yum.repos.d/nginx.repo với nội dung sau

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Sau khi tạo repo các bạn chạy lệnh sau để cài đặt Nginx

yum install -y epel-release nginx

Để kiểm tra phiên bản Nginx được cài đặt các bạn có thể dùng lệnh sau

nginx -v

Screenshot_115

Nếu sử dụng Firewalld thì bạn sẽ cần mở port để có thể truy cập website

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
1.3. Cấu hình Nginx cơ bản

Tất cả các file cấu hình của Nginx đều nằm trong thư mục /etc/nginx

Screenshot_116

  • Backup file cấu hình Nginx

Trước khi bắt đầu cấu hình Nginx các bạn nên backup lại file config để có thể khôi phục khi cần thiết

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  • Cấu hình Nginx

Sau khi đã backup file cấu hình các bạn mở file /etc/nginx/nginx.conf và xoá sạch nội dung bên trong và thay thế bằng nội dung sau đây

user  nginx;

worker_processes  auto;
pid /var/run/nginx.pid;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

events {
   worker_connections  10240;
}


http {
   include       /etc/nginx/mime.types;

   default_type  application/octet-stream;
   tcp_nopush on;
   tcp_nodelay on;
   sendfile        on;

   log_format bytes '$bytes_sent $request_length';

   keepalive_timeout  15;
   types_hash_max_size 2048;

   disable_symlinks if_not_owner from=$document_root;

   server_tokens off;

   add_header X-Frame-Options SAMEORIGIN;
   add_header X-XSS-Protection "1; mode=block";
   add_header X-Content-Type-Options nosniff;
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
   
   client_max_body_size 1024m;
   client_body_buffer_size 128k;

   server_names_hash_bucket_size 128;
   server_names_hash_max_size 10240;

   ssl_dhparam /etc/nginx/ssl/dhparams.pem;
   ssl_session_cache   shared:SSL:10m;
   ssl_session_timeout  5m;
   proxy_read_timeout 1800s;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
   ssl_prefer_server_ciphers on;

   index  index.html index.htm index.php;

   gzip on;
   gzip_static on;
   gzip_disable "msie6";
   gzip_http_version 1.1;
   gzip_vary on;
   gzip_comp_level 1;
   gzip_proxied any;
   gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/svg+xml;
   gzip_buffers 16 8k;

   include /etc/nginx/conf.d/*.conf;
}
  • Tạo dhparam

Để tạo dhparam các bạn chạy 2 lệnh sau

mkdir -p /etc/nginx/ssl
openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048
1.4. Khởi động Nginx

Sau khi đã hoàn tất cấu hình Nginx các bạn tiến hành khởi động Nginx

  • Kiểm tra cấu hình nginx

Trước khi khởi động Nginx các bạn có thể kiểm tra xem cấu hình có bị lỗi gì không bằng cách chạy lệnh sau

nginx -t

Screenshot_117

  • Khởi động Nginx
systemctl enable nginx
systemctl start nginx

Screenshot_118

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

MariaDB là một sản phẩm mã nguồn mở tách ra từ mã mở do cộng đồng phát triển của hệ quản trị cơ sở dữ liệu quan hệ MySQL nhằm theo hướng không phải trả phí với GNU GPL. MariaDB được phát triển với sự dẫn dắt của những nhà phát triển ban đầu của MySQL, do lo ngại khi MySQL bị Oracle Corporation mua lại.

MariaDB được định hướng để duy trì khả năng tương thích cao với MySQL, để đảm bảo khả năng hỗ trợ về thư viện đồng thời kết hợp một cách tốt nhất với các API và câu lệnh của MySQL.

Trong hướng dẫn này HOSTVN sẽ hướng dẫn các bạn cài đặt MariaDB thay vì Mysql. Theo mặc định repo của CentOS chỉ có sẵn MariaDB 5. Để cài đặt MariaDB 10 các bạn cần tạo repo riêng.

2.1. Tạo repo cài đặt MariaDB 10

Các bạn tạo file /etc/yum.repos.d/mariadb.repo với nội dung sau

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4.12/rhel7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
2.2. Cài đặt MariaDB

Để cài đặt MariaDB các bạn chạy lệnh sau

yum install MariaDB-server MariaDB-client -y
2.3. Đặt mật khẩu root

Sau khi cài  đặt MariaDB các bạn tiến hành đặt mật khẩu root bằng cách chạy 2 lệnh sau

systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation
Enter current password for root (enter for none): Nhấn phím Enter
Switch to unix_socket authentication [Y/n]: n
Change the root password? [Y/n]: Y
New password: Nhập password root các bạn muốn tạo
Re-enter new password: Nhập lại password root
Remove anonymous users? [Y/n] : Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n] : Y
Reload privilege tables now? [Y/n]: Y

3. Bước 3: Cài đặt PHP-FPM và các Module cần thiết

3.1. Cài đặt PHP-FPM

Để cài đặt PHP-FPM các bạn chạy các lệnh sau

yum -y install yum-utils
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y update

yum-config-manager --enable remi-php73
yum -y install php-fpm php-ldap php-zip php-embedded php-cli php-mysql php-common php-gd php-xml php-mbstring php-mcrypt php-pdo php-soap php-json php-simplexml php-process php-curl php-bcmath php-snmp php-pspell php-gmp php-intl php-imap perl-LWP-Protocol-https php-pear-Net-SMTP php-enchant php-pear php-devel php-zlib php-xmlrpc php-tidy php-mysqlnd php-opcache php-cli php-pecl-zip unzip gcc
3.2. Cấu hình thông số php cơ bản

Tất cả cấu hình php cần thiết sẽ nằm trong file /etc/php.ini. Một số thông số cơ bản bạn có thể sửa như sau

;date.timezone =
expose_php = On
short_open_tag = Off
;max_input_vars = 1000
disable_functions =

Các bạn sửa lại thành như sau:

date.timezone = Asia/Ho_Chi_Minh
expose_php = Off
short_open_tag = On
max_input_vars = 3000
disable_functions = exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname

3.3. Cấu hình PHP-FPM

Tất cả các file cấu hình PHP-FPM sẽ nằm trong thư mục /etc/php-fpm.d. Đầu tiên các bạn backup lại file cấu hình mặc định

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak

Sau đó mở file /etc/php-fpm.d/www.conf xoá toàn bộ nội dung bên trong và thay bằng nội dung sau

[www]
user = nginx 
group = nginx
listen = /var/run/php-fpm.sock;
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 20
pm.max_requests = 500
;slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
security.limit_extensions = .php .php52 .php53 .php54 .php55 .php56 .php60 .php70 .php71 .php73

Tiếp theo các bạn chạy lệnh sau

chown -R nginx:nginx /var/lib/php/*
3.4. Khởi động PHP-FPM

Sau khi cấu hình hoàn tất các bạn chạy 2 lệnh sau để khởi động PHP-FPM

systemctl enable php-fpm
systemctl start php-fpm
3.5. Kiểm tra PHP-FPM

Sau khi đã khởi động PHP-FPM các bạn có thể kiểm tra xem nó có hoạt động hay không. Đầu tiền các bạn mở file /etc/nginx/conf.d/default.conf xoá toàn bộ nội dung bên trong và thay thế bằng nội dung sau:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/localhost.log;
    access_log /var/log/nginx/localhost.bytes bytes;
    error_log /var/log/nginx/localhost.error.log;
    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    location ~ .php$ {
        try_files $uri $uri/ =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Khởi động lại Nginx để load lại cấu hình

systemctl restart nginx

Sau đó các bạn tạo file /usr/share/nginx/html/info.php với nội dung sau:

<?php
phpinfo();

Tiến hành truy cập theo link ip-vps/info.php để kiểm tra.

Screenshot_119 - cài đặt LEMP trên Centos 7

4. Bước 4:  Cài đặt PhpMyAdmin

phpMyAdmin là một công cụ nguồn mở miễn phí được viết bằng PHP để quản trị MySQL thông qua trình duyệt web. Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi; thực hiện báo cáo SQL; hoặc quản lý người dùng và cấp phép truy cập database.

4.1. Cài đặt PhpMyAdmin

Để cài đặt PhpMyAdmin các bạn chạy lần lượt các lệnh sau

cd /usr/share
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip
unzip phpMyAdmin-5.0.2-all-languages.zip
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
rm -rf phpMyAdmin-5.0.2-all-languages.zip
rm -rf /usr/share/phpMyAdmin/setup
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpMyAdmin
  • Lưu ý: Truy cập phpmyadmin.net để lấy link down phiên bản mới nhất
4.2. Cấu hình PhpMyAdmin

File cấu hình của PhpMyadmin là file config.inc.php. Trước tiên các bạn cần chạy lệnh sau

mv /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php

Tiếp theo mở file /usr/share/phpMyAdmin/config.inc.php và chỉnh sửa các thông số sau

– Tìm

$cfg['blowfish_secret'] = '';

thêm một đoạn ký tự bất kỳ vào giữa cặp nháy đơn. Ví dụ:

$cfg['blowfish_secret'] = 'dsa123e12rwDSADs1few12tr3ewg3s2df3sAD';

– Tiếp theo thêm vào cuối file doạn code sau

$cfg['TempDir'] = '/usr/share/phpMyAdmin/tmp/';

Sau đó các bạn cần tạo thư mục tmp cho PhpMyAdmin

mkdir -p /usr/share/phpMyAdmin/tmp
chown -R nginx:nginx /usr/share/phpMyAdmin/tmp
4.3. Cấu hình bảo mật cho PhpMyAdmin
  • Chặn truy cập thư mục

Các bạn mở file /etc/nginx/conf.d/default.conf xoá toàn bộ nội dung và thay thế bằng nội dung sau:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/localhost.log;
    access_log /var/log/nginx/localhost.bytes bytes;
    error_log /var/log/nginx/localhost.error.log;
    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    location ~ .php$ {
        try_files $uri $uri/ =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;

        if (-f $request_filename)
        {
            fastcgi_pass unix:/var/run/php-fpm.sock;
        }
    }
    location ~ ^/phpmyadmin {
        rewrite ^/* /phpMyAdmin last;
    }
    location ~ ^/pma {
        rewrite ^/* /phpMyAdmin last;
    }
    location ^~ /phpMyAdmin/log/ {
        deny all;
    }
    location ^~ /phpMyAdmin/libraries/ {
        deny all;
    }
    location ^~ /phpMyAdmin/templates/ {
        deny all;
    }
    location ^~ /phpMyAdmin/tmp/ {
        deny all;
    }
}

Tiếp theo các bạn chạy lệnh sau:

mv /etc/nginx/conf.d/default.conf /etc/nginx/default.conf

Mở file /etc/nginx/nginx.conf và thêm vào bên trên dòng include /etc/nginx/conf.d/*.conf; đoạn rule sau

include /etc/nginx/default.conf;

Screenshot_146

  • Kích hoạt Google reCAPTCHA

Để kích hoạt Google reCAPTCHA trước tiên các bạn cần đăng ký một API V3 tại link sau: https://www.google.com/recaptcha/intro/v3.html

Screenshot_120 - cài đặt LEMP trên Centos 7

Screenshot_123 - cài đặt LEMP trên Centos 7

Screenshot_122

Sau khi đăng ký thành công bạn sẽ được cung cấp SITE KEYSECRET KEY. Tiếp theo các bạn mở file /usr/share/phpMyAdmin/config.inc.php và thêm 2 dòng sau vào cuối file

$cfg['CaptchaLoginPublicKey'] = 'SITE KEY';
$cfg['CaptchaLoginPrivateKey'] = 'SECRET KEY';

Thay thế SITE KEYSECRET KEY của bạn vào, sau đó truy cập ip-vps/phpmyadmin để kiểm tra

Screenshot_124 - cài đặt LEMP trên Centos 7

5. Bước 5: Cấu hình Vhost

Virtual Host là file cấu hình cho phép nhiều domain cùng chạy trên một máy chủ. Tất cả các file vhost sẽ nằm trong thư mục /etc/nginx/conf.d/. Để tiện quản lý mỗi website nên có một vhost riêng, ví dụ: hostvn.net.conf

Trong ví dụ này sẽ tạo website hostvn.net với vhost tương ứng là /etc/nginx/conf.d/hostvn.net.conf với nội dung sau:

server {
    listen 80;
    server_name www.hostvn.net hostvn.net;
    access_log /home/hostvn.net/logs/access.log;
    error_log /home/hostvn.net/logs/.error.log;
    root /home/hostvn.net/public_html;
    index index.html index.htm index.php;

    location ~ .php$ {
        try_files $uri $uri/ =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        if (-f $request_filename)
        {
            fastcgi_pass unix:/var/run/php-fpm.sock;
        }
    }
}

Tiếp theo các bạn cần tạo thư mục chứa mã nguồn website và thư mục chứa file log bằng các lệnh sau

mkdir -p /home/hostvn.net/public_html
mkdir -p /home/hostvn.net/logs
chown -R nginx:nginx /home/hostvn.net

Khởi động lại Nginx để load cấu hình

systemctl restart nginx

Sau khi cấu hình hoàn tất các bạn trỏ tên miền về vps sau đó tạo file /home/hostvn.net/public_html/index.php với nội dung sau và gõ tên miền của bạn vào thanh địa chỉ của trình duyệt để kiểm tra

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HOSTVN.NET - Hướng dẫn cài đặt LEMP trên CentOS 7</title>
</head>
<body>
	<p><center><?= "HOSTVN.NET - Hướng dẫn cài đặt LEMP trên CentOS 7" ?></center></p>
</body>
</html>

Screenshot_125

6. Bước 6: Cấu hình SSL

Để cấu hình SSL các bạn có thể tham khảo Hướng dẫn cài đặt SSL trên VPS sử dụng Nginx của HOSTVN.

7. Tài liệu tham khảo

8. Kết luận

Qua bài viết này HOSTVN đã hướng dẫn các bạn cách cài đặt LEMP trên CentOS 7. Nếu có bất kỳ ý kiến đóng góp nào các bạn có thể để lại bình luận ở bên dưới. Ngoài ra các bạn có thể xem thêm Hướng dẫn cài đặt CSF Firewall trên CentOS 7.

VPS Server

Hướng dẫn cách cài đặt LAMP trên Centos 7

2020-4-8 14:16:00

Góc chia sẻVPS Server

Redirect www sang non-www và ngược lại trên Nginx

2020-4-11 11:59:03

0 trả lời ATác giả MQuản lý
    Chưa có phản hồi nào
Trung tâm cá nhân
Giỏ hàng
Phiếu mua hàng
Đăng nhập ngay
Tin nhắn Danh sách tin nhắn
Tìm kiếm