Cài đặt Nginx, MySQL, PHP (LEMP) trên Centos 7

LEMP stack là một nhóm các phần mềm mã nguồn mở thường được cài đặt cùng nhau để cho phép các ứng dụng web PHP có thể hoạt động được trên các server.
* L - Linux
* E - Nginx
* M - MySQL
* P - PHP
Hôm nay mình sẽ hướng dẫn các bạn các bước để có thể setup LEMP stack trên server Centos 7.

Truy cập vào server

Thực hiện truy cập vào server bằng ssh trên terminal

ssh user@ip_server  

Update package cũng như các thông tin về servion của các pakge mới nhất cho server

sudo yum update  

Cài đặt Nginx

Cài đặt CentOS 7 EPEL repository cho server

sudo yum install epel-release  

Cài đặt Nginx cho server

sudo yum install nginx  

Sau khi cài đặt xong cần start Nginx để Nginx có thể bắt đầu hoạt động

sudo systemctl start nginx  

Nhận được thông báo start thành công, để chắc chắn chúng ta có thể kiểm tra status của Nginx

sudo systemctl status nginx  

Cuối cùng là enable để Nginx có thể start khi boot để trong 1 số trường hợp chúng ta cần reset server thì Nginx có thể tự động start

sudo systemctl enable nginx  

Cài đặt MySQL

Trướng khi cài đặt MySQL chúng ta cài đặt thêm package wget

yum install wget  

Hiện tại MySQL có khá nhiều version 5.6, 5.7, 8.0. Chúng ta có thể chọn version phù hợp với project để cài đặt. Truy cập danh sách MySQL Yum Repository để tìm version tương ứng

https://dev.mysql.com/downloads/repo/yum/  

Chúng ta sẽ thấy được url để download, ví dụ ở đây mình muốn cài đặt MySQL version 5.7 thì url là https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Thực hiện download về server

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm  

Check md5 của file bạn download về và so sánh với trên web để đảm bảo file bạn download về toàn vẹn

md5sum mysql57-community-release-el7-9.noarch.rpm  

Thêm package mysql-server vào yum repositories

sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm  

Cài đặt package mysql-server

sudo yum install mysql-server  

Start MySQL trên server

sudo systemctl start mysqld  

Kiểm tra lại xem status của MySQL

sudo systemctl status mysqld  

Sau khi cài đặt thành công, chúng ta cần set lại password mới cho user root

sudo mysql_secure_installation  

Bạn chỉ việc nhập password mới cho user root và sau đó thử connect đến MySQL để kiểm tra xem password mới đã hoạt động hay chưa

mysql -u root -p  

Bạn có thể tạo user mới và database cho các dự án tương ứng.

Cài đặt PHP

Để cài đặt php 5.4

yum -y install php  

Nếu các bạn muốn cài đặt PHP các version từ 7.0 trở lên thì cần phải add package PHP 7. vào CentOS repo

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
rpm -Uvh remi-release-7.rpm  

Enable php7x repository cho CentOS repo. Ở đây mình sẽ cài đặt version mới nhất của php là 7.2. Còn nếu các bạn muốn cài 7.1 hoặc 7.0 thì thay remi-php72 tương ứng bằng remi-php71 hoặc remi-php70

yum install yum-utils -y  
yum-config-manager --enable remi-php72  

Cài đặt php và các package cơ bản đi kèm

yum --enablerepo=remi,remi-php71 install php-fpm php-common  

Nếu dự án của bạn cần cài thêm các extension thì bạn chỉ cần thêm tiếp các module vào phía sau. Ở đây là các module phổ thông mà minh thường cài đặt trong các dự án

yum --enablerepo=remi,remi-php72 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml  

Và sau khi cài đặt xong chúng ta kiểm tra kết quả thôi

php -v  

Confin Nginx kết hợp cùng PHP

Tạo 1 file mới trong thư mục conf.dcủa nginx. Chúng ta có thể đặt tên file theo tên dự án quan trọng phần extension phải là .conf vì như thế thì Nginx mới có thể include được các file mới vào.

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

Thêm các config tương ứng

server {  
    listen   80;
    server_name  SERVER_IP_OR_DOMAIN;

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

Các bạn có thay các thông tin tương ứng như IP hay Domain phù hợp. Update lại đường dẫn root tới thư mục chứa code tương ứng của các bạn trên server và lưu file. Kiểm tra lại xem các config có vấn đề gì ko ?

sudo nginx -t  

Chúng ta cần khởi động lại Nginx để cập nhật các config mới

sudo service nginx restart  

Thay đổi lại config của php-fpm một chút

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

User mặc định run php-fpmapache, chúng ta cần đổi sang user nginx. Trong trường hợp Nginx của bạn đang start bằng 1 user khác thì cần thay apache bằng user đó. Update lại file config như sau :

user = apache => user = nginx

group = apache => group = nginx

listen.owner = nobody => listen.owner = nginx

listen.group = nobody => listen.group = nginx

;listen = 127.0.0.1:9000 => listen = /var/run/php-fpm/php-fpm.sock

Sau khi lưu lại, chúng ta cần restart lại php-fpm để cập nhập config mới

systemctl start php-fpm.service

\\add vào boot
systemctl enable php-fpm.service  

Tất cả công việc để setup LEMP stack trên Centos 7 đến đây thì cuối cùng cũng đã hoàn thành. Nếu có bất kì câu hỏi gì hãy comment ở phía dưới nhé. Chúc các bạn 1 ngày làm việc hiệu quả. Hẹn gặp lại.

Related article