Hướng dẫn cài đặt LEMP ( NGINX, PHP-FPM, MARIADB) và tạo VirtualHost trên centos 7

I.Chuẩn bi 

Cài đặt kho epel và remi ,Tham khảo link sau Click Here

Cập nhật hệ thống 

# yum update -y

Trong CentOS 7.0 sử dụng Firewall-cmd, vì vậy ta sẽ tùy chỉnh nó bằng lệnh như sau.

Ví dụ ta mở công 80 và 3306

# firewall-cmd --permanent --zone=public --add-port=80/tcp

# firewall-cmd --permanent --zone=public --add-port=3306/tcp

Khởi động lại filewall 

# firewall-cmd --reload 

II.Tiến hành 

Bước 1: Tạo kho để cài đặt nginx

Nếu bạn muốn dùng phiên bản nginx 1.10. thì phải tạo kho cài đặt , còn dùng bản nginx 1.0, thì không cần làm bước này

Tạo file nginx.repo

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

Trong file nginx.repo ta tạo nội dung sau

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/

gpgcheck=0

enabled=1

Cho hệ thống update 

# yum update -y

Bước 2: cài đặt nginx và php-fpm

Dùng lệnh sau để cài đặt nginx   

# yum install nginx -y 

Khởi động nginx

# systemctl start nginx 

Để nginx chạy cùng hệ thống

# systemctl enable nginx

Kiểm tra phiên bản của nginx

# nginx -v

Dùng lệnh sau để cài đặt php-fpm và php-mysql để php làm việc với cơ sở dữ liệu

# yum install php php-mysql php-fpm 

Có thể cài thêm một số modun php cần thiết 

# yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel

# yum -y install php-pecl-apc

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

Truy cập vào file php.ini

# nano /etc/php.ini

Tìm dòng cgi.fix_pathinfo bỏ dấu ghi chú và thêm số 0 vào ,để cho php làm việc chính xác và phù hợp hơn với hệ thống

cgi.fix_pathinfo = 0

Sau đó ta truy cập vào file www.conf

#  nano /etc/php-fpm.d/www.conf

Tìm các dòng sau và thay đổi

Thiết lập use và group làm việc cho nginx

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

Tìm dòng listen và thay đổi như sau

; Note: This value is mandatory.
listen = /var/run/php-fpm/php-fpm.sock

Tiếp tục ta sửa như sau

listen.owner = nginx
listen.group = nginx

;listen.mode = 0660

Khởi động php-fpm

#  systemctl start php-fpm

Đến đây sau khi thiết lập cho php lắng nghe sock ta phải cấp quyền cho nó

# chmod -R 666 /var/run/php-fpm/php-fpm.sock

#  chown nginx:nginx /var/run/php-fpm/php-fpm.sock

Khởi động lại php và cho khởi động cùng hệ thống

#  systemctl restart php-fpm
#  systemctl status php-fpm
#  systemctl enable php-fpm

Cấu hình nginx để làm việc với php

Tạo 1 file backup file cấu hình chính của nginx

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

# nano /etc/nginx/conf.d/default.conf

có nội dung như sau

server {
    listen       80;
    server_name localhost;

    # 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;
    }
}

Sửa file /nginx.conf

# nano /etc/nginx/nginx.conf

Thêm dòng vàng sau vào 

access_log  /var/log/nginx/access.log  main;
index index.php  index.html index.htm;

Khởi động lại nginx

# systemctl restart nginx

Kiểm tra xem nginx và php đã làm việc với nhau chưa bằng cách tạo 1 file info.php

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

<?php
phpinfo();
?>

Truy cập vào Web địa chỉ http://ip-vps/info.php  để xem kết quả

Xem xong chúng ta xóa file này đi để bảo mật 

# rm -rf /usr/share/nginx/html/info.php

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

Thêm kho MariaDB repo

Nếu bạn dùng mariaDB 5 thì cứ cài như bình thường 

Để cài đặt MariaDB 10 ,bạn cần thêm một repository sau vào hệ thống bằng cách chạy lệnh sau 

# wget -O /etc/yum.repos.d/MariaDB.repo http://mariadb.if-not-true-then-false.com/centos/$(rpm -E %centos)/$(uname -i)/10

Sau đó hãy xóa cache của yum đi

# yum clean all

update lại hệ thống để yum để nó cập nhật package của MariaDB

# yum update -y

Nếu bạn không làm 2 bước trên nó sẽ báo lỗi như sau 

Transaction Check Error:

file /usr/share/mysql/ukrainian/errmsg.sys from install of MariaDB-server-10.0.25-1.el6.x86_64 conflicts with file from package mysql-libs-5.5.50-1.el6.remi.x86_64

Error Summary


Xem thêm link tham khao nâng cấp mariaDB từ 5. lên mariaDB 10. click here

Cài đặt MariaDB 5.5

# yum install -y MariaDB MariaDB-server

Khởi động MariaDB

# systemctl start mariadb

Cho MariaDB khởi động cùng hệ thống

# systemctl enable mariadb

Đặt mật khẩu cho tài khoản root MariaDB:

# mysql_secure_installation

Sẽ hiện ra các câu sau

câu 1 : Enter current password for root (enter for none)<Nhập mật khẩu hiện tại cho root (nhập cho không có)> : cứ enter là xong

câu 2 : Set root password? [Y/n]<Đặt mật khẩu gốc> chọn Y và nhập mật khẩu 

câu 3 : Remove anonymous users? [Y/n]<xóa người dùng vô danh> chọn Y

câu 4 : Disallow root login remotely? [Y/n]<Không cho phép đăng nhập root từ xa> chọn Y 

câu 5 : Remove test database and access to it? [Y/n]<xóa cơ sở dữ liệu kiểm tra và truy cập vào nó> chọn Y

câu 6 : Reload privilege tables now? [Y/n]<khởi động lại> Chọn Y

Để đăng nhập vào mariaDB

# mysql -u root -p

Một số câu lệnh của mariaDB

Hiển thị toàn bộ databases:

MariaDB [(none)]> SHOW DATABASES;

Tạo database:

MariaDB [(none)]> CREATE DATABASE tên cở sở dữu liệu;

Sử dụng một database:

MariaDB [(none)]> USE tên cở sở dữu liệu;

Xóa một database:

MariaDB [(none)]> DROP DATABASE tên cở sở dữu liệu;

Bước 4: Tạo VirtualHost 

Giả sử ta có domain là maxserver.net

Ta sẽ tạo một số file như sau

Tạo 1 thư mục chứa các file log

# mkdir -p /home/nginx/maxserver.net/log

Tạo 1 file ghi các lỗi

# touch /home/nginx/maxserver.net/log/error.log

Tạo thư mục chứa code của web

# mkdir -p /home/nginx/maxserver.net/public_html

Gán use và group và phân quyền

# chown -R nginx:nginx /home/nginx

# chmod -R 755 /home/nginx/

Tạo 1 file cấu hình riêng cho domain

# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/maxserver.net.conf

Chỉnh sửa file maxserver.net.conf

# nano /etc/nginx/conf.d/maxserver.net.conf

sửa dòng sau 

server_name  localhost;

Sửa thành

server_name www.maxserver.net maxserver.net;

Thêm dòng vàng sau

 error_log    /home/nginx/xobic.com/log/error.log error;

Tìm tất cả các dòng đường dẫn sau:

root   /usr/share/nginx/html;

Và sửa thành

root  /home/nginx/maxserver.net/public_html;

Khởi động lại nginx 

# systemctl restart  nginx.service

Test virtualhost bằng cách tạo 1 file 

# nano /home/nginx/maxserver.net/public_html/index.html

Vội dung như sau

<html>
  <head>
    <title>maxserver</title>
  </head>
  <body>
    <h1>Chuc mot ngay tot lanh, ban da tao virtualhost thanh cong</h1>
  </body>
</html>

Và truy cập vào http://ip-vps/index.html và xem kết quả