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

1. LEMP là gì

LEMP là một server chạy Linux, Nginx (đọc là Engine x), MySql và PHP (hoặc Perl/Python). Nó tương tự như LAMP server ngoại trừ việc web server nền tảng được giám sát bằng Nginx thay vì Apache

2. Cài đặt LEMP trên Centos

Vui lòng thay tên miền demo.com bên dưới thành tên miền của mình nhé

2.1 Chuẩn bị cài đặt LEMP

Để cài LEMP thì chắc chắn chúng ta cần một OS mới tinh, chưa cài gì cả. Centos 7 phiên bản 64bit

Tiếp theo chúng ta cần update hệ thống và cài một vài thứ cơ bản. Để làm việc này, các bạn chạy các câu lệnh sau:

yum -y update
yum -y install epel-release
yum install -y wget nano unzip htop nload

2.2 Cài đặt và cấu hình nginx ban đầu

Cài đặt:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
service nginx start
systemctl enable nginx.service

Cấu hình nginx cơ bản:

Các bạn chạy nano /etc/nginx/nginx.conf

Sau đó sửa lại theo mẫu bên dưới

user  nginx;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
worker_processes  2;  #chỗ này là số CPU của bạn

events {
    worker_connections   1024;
    use epoll;
    multi_accept on;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    keepalive_timeout 65;
    keepalive_requests 100000;
    sendfile         on;
    tcp_nopush       on;
    tcp_nodelay      on;
        
    client_body_buffer_size    128k;
    client_max_body_size       128m; # Max upload file size
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
    output_buffers   1 32k;
    postpone_output  1460;
        
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
        
    open_file_cache max=1000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 5;
    open_file_cache_errors off;

    # Bật gzip
    gzip on;
    gzip_vary on;
    gzip_min_length  1000;
    gzip_buffers     4 4k;
    gzip_types       application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon;
    gzip_disable "MSIE [1-6]\.";

    # [ debug | info | notice | warn | error | crit | alert | emerg ] 
    error_log  /var/log/nginx.error_log  warn;
        
    log_format download  '$remote_addr - $remote_user [$time_local]  '
      '"$request" $status $bytes_sent '
      '"$http_referer" "$http_user_agent" '
  		'"$http_range" "$sent_http_content_range"';
        
    map $status $loggable {
        ~^[23]  0;
        default 1;
    } 
        
    include /etc/nginx/conf.d/*.conf;
}

Tiếp theo bấm Ctrl + O để save lại và Ctrl + X để thoát ra

Cuối cùng chạy  service nginx restart để khởi động lại nginx

2.3 Cài đặt mariadb

Để cài đặt MariaDB 10.3 các bạn làm như sau:

nano /etc/yum.repos.d/MariaDB10.repo

Thêm vào nội dung sau:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64/
gpgkey=http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Sau đó bấm Ctrl + O để save lại và Ctrl + X để thoát ra (Thay bằng phím command trên máy Mac nha)

Tiếp theo để cài đặt, chúng tay chạy lệnh yum -y install MariaDB-server MariaDB-client

Khởi chạy và cài đặt ban đầu cho mariadb:

service mariadb start
/usr/bin/mysql_secure_installation

Yêu cầu nhập pass hiện tại: Enter cho qua, chọn y để đặt pass root cho mariadb, những cái tiếp theo chọn y hết
Set khởi động chung hệ thống: systemctl enable mariadb.service

2.4 Cài đặt php 7.3 và cấu hình cơ bản

Đầu tiên, cài đặt thư viện remi để cài php:

sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Cài đặt php 7.3

yum --enablerepo=remi-php73 install php

Cài đặt php extension

yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt php-fpm php-mysqlnd

Khởi chạy: service php-fpm start

Set khởi động chung hệ thống: systemctl enable php-fpm.service

Cấu hình php-fpm:

Để php-fpm chạy khớp với nginx, chúng ta làm như sau: Gõ nano /etc/php-fpm.d/www.conf

Sau đó tìm đến đoạn (dòng 24):

user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

sửa apache thành nginx, sau đó bấm Ctrl + O để save lại và Ctrl + X để thoát ra. Cuối cùng là restart lại php-fpm bằng cách chạy lệnh: service php-fpm restart

Xem thêm: Cấu hình php.ini

2.5 Cài đặt CSF Firewall

Cài đơn giản thôi

yum remove firewalld -y
cd /tmp
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
cd

Cấu hình csf firewall

Để cấu hình, chúng ta chạy nano /etc/csf/csf.conf, tìm đến đoạn  TESTING = "1" , hãy sửa thành TESTING = "0"

sau đó bấm Ctrl + O để save lại và Ctrl + X để thoát ra.

Cuối cùng chạy csf -r để khởi động csf firewall

Như vậy chúng ta đã cài đặt xong LEMP trên Centos 7, giờ hãy mở trình duyệt lên và truy cập bằng IP của bạn, nếu như hình bên dưới là bạn đã cài đặt thành công.

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

3. Cài đặt wordpress

3.1 Tạo thư mục chứa source và upload

Để cài web ta cần tạo thư mục chứa source. Ví dụ domain bạn là demo.com và bạn chứa nó ở /home với thư mục là demo.com

Chúng ta chạy lệnh như sau:

sudo mkdir /home/demo.com

Download source wordpress:

cd /home/demo.com
wget https://wordpress.org/latest.zip
unzip latest.zip && mv wordpress/* . && rm -rf wordpress

3.2 Tạo file cấu hình domain

Chúng ta chạy lệnh: nano /etc/nginx/conf.d/demo.com.conf

rồi thêm file cấu hình như sau (file này dành cho domain không có SSL):

server {
    listen 80;
    server_name demo.com;	
    location / {
        root /home/demo.com;
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        root /home/demo.com;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  PATH_TRANSLATED     $document_root$fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Cuối cùng cũng bấm Ctrl + O để save lại và Ctrl + X để thoát ra và chạy service nginx restart để khởi động lại nginx

Bây giờ bạn có thể test thử website đã nhận chưa. Như hình bên dưới là OK nhé

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

3.3 Cài đặt SSL

Tới năm 2019 thì các web hầu như đều phải có chứng chỉ SSL để tăng cường bảo mật và SEO

Hôm nay mình sẽ hướng dẫn cài SSL Let’s Encrypt (free) trên LEMP.

Yêu cầu: Domain phải trỏ về IP của VPS

Cài đặt như sau:

mkdir /etc/nginx/cert
openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem
yum -y update
yum -y upgrade
yum -y install git
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt
./letsencrypt-auto --help all
./letsencrypt-auto certonly --rsa-key-size 2048

Khi có hiện thông báo chọn webserver, ta bấm số 2 để chọn nginx server –> Lần lượt nhập email và domain cần cài SSL vào
Cuối cùng chạy service nginx start là xong

Khi bạn thấy câu thông báo Congratulations! Your certificate and chain have been saved at … như hình bên dưới là thành công

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

3.4 Điều chỉnh lại file cấu hình domain để chạy SSL

Để điều chỉnh lại file cấu hình, chúng ta chạy nano /etc/nginx/conf.d/demo.com.conf, xóa hết và thay thế bằng đoạn code sau:

server {
    listen 443 ssl http2; 
    server_name demo.com;
    root /home/demo.com;
    access_log  off;
    error_log off;
    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }		
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js|woff2)$ {
            expires 365d;
        }
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    
    ssl_certificate /etc/letsencrypt/live/demo.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/demo.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/demo.com/fullchain.pem; 

    
    ssl_stapling on; 
    ssl_stapling_verify on; 
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 180m;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!CAMELLIA:!DES-CBC3-SHA;
    ssl_buffer_size 1400;
    ssl_session_tickets on;
    add_header Strict-Transport-Security max-age=31536000 always;
    error_log off;
}
server {
    listen 80;
    server_name demo.com www.demo.com;
    rewrite ^(.*) https://demo.com$1 permanent;
}

Cuối cùng cũng bấm Ctrl + O để save lại và Ctrl + X để thoát ra và chạy service nginx restart để khởi động lại nginx

3.5 Tạo database

Để cài được wordpress, cần phái có Database, việc tạo database thực hiện như sau:

Chạy lệnh mysql -u root -p –> rồi nhập pass root đã tạo ở trên

-Tạo database: create database têndatabase;

-Tạo user + pass: create user tênuser@localhost identified by 'PASSWORD';

-Gán quyền cho user: grant all privileges on têndatabase.* to tênuser@localhost identified by 'PASSWORD';

-Apply cái quyền user: flush privileges;

-Thoát: \q

3.6 Cấu hình và cài đặt wordpress

Sau khi đã tạo được database, ta chạy nano /home/demo.com/wp-config.php và sửa lại các thông số sao cho khớp với cái đã tạo ở trên.

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

Sau khi sửa xong, ta bấm Ctrl + O để save lại và Ctrl + X để thoát ra

Cuối cùng chạy chown -R nginx:nginx /home/demo.com/.

Vậy là xong, truy cập vào domain và tiến hành setup như bình thường nhé!

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

Chúc bạn thành công!

 

 

Viết một bình luận