Cài đặt LEMP trên CentOS 7 ( NGINX + MariaDB 10.5 + PHP 7.4 )

Admin

Administrator
Staff member
Bài viết
2,755
Điểm tương tác
3
Gold
43G
Ví Bảo Hiểm
0$
bởi Admin 314 lượt xem.
Các bài viết trên mạng dành cho centos 7 hiện tại đã quá cũ nên mình tổng hợp lại 1 bài mới nhất cho 2020. Khi mà các Bash Script như HOCVPS, VPSSIM Free lỗi + các bản PHP, MariaDB quá lỗi thời. Tất nhiên, cái vẹo gì mới xài cũng ngon hơn cái cũ là cái chắc rồi. Trong bài viết này mình sẽ cố gắng cập nhật liên tục để Webserver chạy các bản mới nhất.

Đầu tiên bạn nên tạo SWAP nhé.
- Cách tạo SWAP
Đối với VPS GOOGLE cần đổi pass root + bật quyền login = ssh lên

# sudo su
# passwd

# yum install unzip -y -- nếu là ubuntu thì xài apt-get thay cho yum để cài đặt nhé
# yum install zip -y
# yum install wget -y
# yum install nano -y


1. Bật quyền root Login Pass
# nano /etc/ssh/sshd_config
Chú ý Thuộc tính
Mã:
#PermitRootLogin no -- sửa lại là yes + xóa dấu thăng
#PasswordAuthentication no -- sửa lại là yes + xóa dấu thăng
Sau đó lưu lại bằng cách Ctrl+O > Enter > Ctrl+X. ( Nếu dùng trình vi thay vì nano thì bấm Esc :wq Enter để lưu lại)
# service sshd restart

1.1. Tắt Selinux
Tránh một số vấn đề xung đột xảy ra khi cài đặt và vận hành mình sẽ 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

hoặc:
# nano /etc/sysconfig/selinux
Sửa lại dòng:
SELINUX=enforcing
Thành:
SELINUX=disabled

Sau đó lưu lại bằng cách Ctrl+O > Enter > Ctrl+X và khởi động lại CentOS ( Chạy lên trên cho nhanh đỡ lằng nhằng )

# reboot

Giờ thì login lại bằng SSH đc rồi đấy!!

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

# nano /etc/yum.repos.d/nginx.repo

với nội dung sau:
Mã:
[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
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

sau khi xong chúng ta sẽ khởi động NGINX:
# systemctl start nginx.service

Và cho NGINX khởi động cùng CentOS:
# systemctl enable nginx.service

1.3. Mở port CentOS 7
Mặc định CentOS 7 sử dụng FirewallD làm firewall thay cho Iptables trên CentOS 6. FirewallD quản lý các tác vụ firewall bằng cách sử dụng “zones” và “services”.

Đầu tiên chúng ta cần check xem FirewallD có đang chạy hay không:

# systemctl status firewalld
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

Nếu có dòng “active (running)” nghĩa là FirewallD đang hoạt động. Tiếp theo cần check xem FirewallD đang chạy ở zone nào?
# firewall-cmd --get-active-zones

Và kiểm tra xem các service nào được phép chạy qua FirewallD?
# firewall-cmd --zone=public --list-all
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

Ở đây chúng ta thấy thiếu 2 service http, https tương ứng các port 80, 443 để truy cập vào web. Chúng ta sẽ add thêm vào:

# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https
# firewall-cmd --zone=public --add-service=https --permanent

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent
# firewall-cmd --reload


Vậy là xong, giờ chúng ta mở trình duyệt web lên và nhập vào xem được chưa.
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

thấy trang giống vầy là ok rồi.

1.4. 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
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


  • 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:
Mã:
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


# nginx -t

Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

>>> Lệnh Khởi động Nginx
# systemctl enable nginx
# systemctl start nginx

Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


Xong. giờ qua phần Cài đặt MariaDB

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 Hidepress.com 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.5 (Phiên bảnhiện tại là tháng6/2020)
Các bạn tạo file /etc/yum.repos.d/MariaDB.repo
# nano /etc/yum.repos.d/MariaDB.repo
với nội dung sau:

Mã:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/rhel7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Note: Có thể kiểm tra phiên bản MariaDB tại đây:

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 3 lệnh sau

# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation


Mã:
-----------------------------------------

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

-----------------------------------------
Ở lần đầu tiên chạy lệnh này, password root của MariaDB không có chúng ta chỉ cần “enter”. Tiếp theo chọn Y để cài đặt pass cho root và nhập mật khẩu 2 lần giống nhau, các bạn nhớ lưu lại mật khẩu này. Với các câu hỏi còn lại các bạn chỉ cần chọn Y để bảo mật cho hệ quản trị cơ sở dữ liệu.

Cuối cùng nhớ cho MariaDB khởi động cùng CentOS với lệnh:
# systemctl enable mariadb

Như vậy là chúng ta đã hoàn tất cài đặt MariaDB 10.x trên CentOS 7. Ở bài viết tiếp theo mình sẽ hướng dẫn cài đặt PHP 7.x cho web server.

3. Cài đặt PHP 7.x trên CentOS 7 và các Module cần thiết
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


PHP 7 được thiết kế lại cho tốc độ xử lý nhanh hơn so với các phiên bản cũ. Hiện tại bản mới nhất là PHP 7.4 nên mình sẽ cài 7.4

Trước tiên chúng cài đặt remi repo là kho chứa php
# yum install -y
# rpm -Uvh


Tiếp theo cài đặt gói yum-untils:
# yum -y install yum-utils
# yum -y update


Và kích hoạt remi-php74 (bản mới nhất ở thời điểm hiện tại) bằng lệnh:
# yum-config-manager --enable remi-php74
# 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



Cấu hình PHP trên CentOS7
3.2. Cấu hình thông số php cơ bản


Bạn sửa tập tin php.ini lại thành như dưới hoặc tải file php.ini vào ( /etc/php.ini ) :

Mã:
cgi.fix_pathinfo=0
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
Mã:
-------------------------- có thể ko cần
Tiếp theo mở file /etc/php-fpm.d/www.conf
Tìm:
user = apache
group = apache
Thay bằng:
user = nginx
group = nginx

Tìm:
listen = 127.0.0.1:9000
Thay bằng:
listen = /var/run/php-fpm/php-fpm.sock

Tìm:
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
Sửa thành (bỏ dấu chấm phẩy ở đầu để kích hoạt):
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
-------------------------- có thể ko cần
Khởi động php
# systemctl start php-fpm.service
Cho php khởi động cùng CentOS 7
# systemctl enable php-fpm.service


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

Mã:
[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 .php72 .php73 .php74
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:

# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

Mã:
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;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
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:

# nano /usr/share/nginx/html/info.php

PHP:
<?php
   phpinfo();
?>
Lưu lại và truy cập theo link ip-vps/info.php để kiểm tra.xem ok chưa.
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


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 5.0.2
Để cài đặt PhpMyAdmin các bạn chạy lần lượt 7 lệnh sau

# cd /usr/share
# wget
# 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 để đổi tên:
# 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'] = 'Dg3dh5FILHJClvsrljkvFGlktr3ewg3s2df3sAD';

– 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:
Mã:
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;
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

  • 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:

Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.

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
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


Nếu ko ko vào đc ip-vps/phpmyadmin thì khỏi động lại VPS thử nhé
# reboot

User Pass login là: root | pass nãy đặt ở bước 2.3

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ụ: hidepress.com.conf

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

# nano /etc/nginx/conf.d/hidepress.com.conf

Mã:
server {
    listen 80;
    server_name www.hidepress.com hidepress.com;
    access_log /home/hidepress.com/logs/access.log;
    error_log /home/hidepress.com/logs/.error.log;
    root /home/hidepress.com/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;
        }
    }

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
}
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/hidepress.com/public_html
# mkdir -p /home/hidepress.com/logs
# touch /home/hidepress.com/logs/error.log
# chown -R nginx:nginx /home/hidepress.com
# chown -R nginx:nginx /home/hidepress.com/public_html


Khởi động lại Nginx để load cấu hình
# systemctl restart nginx
# nginx -t
# nginx -s reload



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/hidepress.com/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

# nano /home/hidepress.com/public_html/index.php

HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cài đặt LEMP trên CentOS 7</title>
</head>
<body>
    <p><center><?= "Cài đặt LEMP trên CentOS 7 - hidepress.com" ?></center></p>
</body>
</html>
6. Cấu hình SSL
Sau khi đã có CRT và CA, Private Key quý khách đăng nhập vào VPS qua SFTP bằng Winscp với tài khoản root và di chuyển tới thư mục chưa các file cấu hình của NGINX (Thường là /etc/nginx)
1. Tạo thư mục chưa các file chứng chỉ SSL
# mkdir -p /etc/nginx/ssl

2. Tạo file private key
Bên trong thư mục ssl tạo tiếp file chứa nội dung Private key. Trong hướng dẫn này ví dụ sẽ tạo file hidepress-prikey.key
# nano /etc/nginx/ssl/hidepress-prikey.key
dán vào - lưu lại.

Tiếp tục tạo file thứ 2 chứa nội dung CRT và CA
# nano /etc/nginx/ssl/hidepress-cert.crt
dán vào - lưu lại.

3. Cấu hình file vhost

Sau khi đã tạo các file chứng chỉ SSL thành công, cần cấu hình lại file vhost của website. File này thường nằm trong thư mục /etc/nginx/conf.d và có tên dạng domain.com.conf sửa lại nội dung của file Vhost để có thể nhận chứng chỉ SSL và tự động redirect website sang dạng https.
Các nội dung được thêm vào file vhost như sau:
Mã:
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/hidepress.com/hidepress-cert.crt;
ssl_certificate_key /etc/nginx/ssl/hidepress.com/hidepress-prikey.key;
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


Lưu ý cần sửa lại đường dẫn và tên các file chứng chỉ đúng với đường dẫn và tên file quý khách đã tạo ở bước trước.

Sau khi sửa và lưu file Vhost quý khách khởi động lại Nginx để thay đổi có hiệu lực

# service nginx restart

Mở port 443 ra:
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload


hoặc sử dụng iptables để chèn trước http (num = 5):
iptables -I IN_public_allow 5 -p tcp --dport 443 -j ACCEPT
service iptables save
service iptables reload

-----------------

Nếu cài plugin SSL mà login admin ko được thì xóa cache redis đi nha.
  • redis-cli
  • FLUSHALL – clear all databases
  • SELECT # – select database under index #
  • FLUSHDB – empty currently selected database
  • KEYS * – list all keys from currently selected
Login lại xem đc rồi là ok rồi đó.


7. Tài liệu tham khảo
8. Bảo mật VPS

- Cài đặt Fail2ban bảo vệ VPS/Server khỏi tấn công dò mật khẩu SSH
- SSH Root login và giới hạn truy cập SSH
- Cài đặt Rclone để backup VPS Linux - Code lên Google Drive

9. Chmod

Kiểm tra xem Selinux đã được tắt chưa:
(Nếu chưa tắt thì phải tắt đi nhá.)
# getenforce

Sau do chmod lại bằng lệnh dưới:

# chown -R nginx:nginx /home/hidepress.com/public_html

Chạy lệnh trên để khác phục các lỗi do chmod như:
  • - Không thể nâng cấp , update được các Plugin, addon, themes
    • - Không thể upload ảnh lên khi viết bài
    • - Không thể cài đặt code và được thông báo lỗi chmod
    • - Không thể cài đặt code do code không quyền edit file, tạo file mới trên VPS…
    • - ...
Hoặc lệnh dưới:
# cd /path/to/wordpress/ -- thay lại nha, ko phải copy dán vào đâu
# find . -type d -exec chmod 755 {} \;
# find . -type f -exec chmod 644 {} \;

10. Xử lý lỗi 404 not found – Nginx WordPress
Dể xử lý lỗi này trên nginx, bạn cần có quyền truy cập ssh vào server hoặc các quyền tương đương để sửa lại file cấu hình của Vhost Nginx.

File cấu hình nginx mặc định thường ở tại vị trí sau: /etc/nginx/conf.d/domain.conf
Bạn truy cập đến block server của vhost và tạo thêm cấu hình sau:
Mã:
location / {
try_files $uri $uri/ /index.php?$args ;
}
Bạn phải Đăng Nhập / Đăng Ký để xem hình ảnh đính kèm.


Sau đó kiểm tra lại cú pháp xem có lỗi nào xuất hiện không, nếu không có lỗi bạn có thể tiến hành reload lại nginx để nhận vhost mới:
# nginx -t

Reload Nginx
# nginx -s reload

11. Redis
- Cài đặt Redis trên CentOS 7/6
- Bảo mật Redis
 

Đính kèm

Admin

Administrator
Staff member
Bài viết
2,755
Điểm tương tác
3
Gold
43G
Ví Bảo Hiểm
0$
bởi Admin 314 lượt xem.
Fix lỗi phân quyền website
Nếu trên wordpress gặp lỗi không update hay không upload plugin được thì chạy lệnh dưới nhé.

chown -R nginx:nginx /home/hidepress.com/public_html
 

Admin

Administrator
Staff member
Bài viết
2,755
Điểm tương tác
3
Gold
43G
Ví Bảo Hiểm
0$
bởi Admin 314 lượt xem.
Tương tự, để thêm 1 website khác vào thì lặp lại bước 5 như các dưới

# nano /etc/nginx/conf.d/domaincuaban.com.conf

Bash:
server {
    listen 80;
    server_name www.domaincuaban.com domaincuaban.com;
    access_log /home/domaincuaban.com/logs/access.log;
    error_log /home/domaincuaban.com/logs/.error.log;
    root /home/domaincuaban.com/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;
        }
    }

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
}

# mkdir -p /home/domaincuaban.com/public_html
# mkdir -p /home/domaincuaban.com/logs
# touch /home/domaincuaban.com/logs/error.log
# chown -R nginx:nginx /home/domaincuaban.com

# chown -R nginx:nginx /home/domaincuaban.com/public_html

# systemctl restart nginx
# nginx -t
# nginx -s reload



# nano /home/domaincuaban.com/public_html/index.php


Mã:
<html>
    <body>
        <p><center>Code ở đây</center></p>
    </body>
</html>
 

Thống kê diễn đàn

Chủ đề
4,549
Bài viết
4,552
Thành viên
201
Thành viên mới nhất
Keke
Bên trên