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á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
Và 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.
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é
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
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.
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é!
Chúc bạn thành công!