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.d
củ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-fpm
là apache
, 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.