Lời mở đầu

Xin chào anh em hôm nay mình sẽ giới thiệu anh em cách cài đặt Nginx với PHP 7, PHP-FPM và MySQL trên hệ điều hành Centos. Trước hết giới thiệu qua với anh em:

Nginx đây là 1 hệ thống server HTTP mã nguồn mở đang được rất nhiều người sử dụng nó hoàn toàn miễn phí, hiệu suất hoạt động cao, ổn định, tổ hợp chức năng đa dạng, dễ dàng cấu hình, thiết lập và sử dụng ít tài nguyên hệ thống. Tìm hiểu thêm Nginx là gì ?

PHP7 là một phiên bản của ngôn ngữ PHP được giới thiệu vào ngày 3 tháng 9 năm 2015, đây là phiên bản mới nhất và được trông đợi nhất bởi có nhiều sự thay đổi về cú pháp, bổ sung các thư viện hiện đại giúp ngôn ngữ PHP trở nên đa dạng hơn và hơn hết nó mang lại hiệu xuất nhanh hơn theo như công bố là gấp hai lần so với phiên bản trước đó.

PHP-FPM (FastCGI Process Manager) kết hợp với Nginx nó đang là mô hình webserver rất phổ biến hiện nay và dần thay thế cho Apache, tốc độ xử lý PHP script của Nginx + PHP-FPM nhanh hơn Apache + Fcgi gấp nhiều lần.

MySQl là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.

Tiến hành cài đặt

Giới thiệu thế đủ rồi giờ bắt đầu thôi , mình sẽ hướng dẫn anh em cài lần lượt các phần mềm theo thứ tự như trên mục mở đầu nhé!

Phần 1: Cài đặt NGINX

Để cài đặt được trước hết anh em cần cài kho thư viện phần mềm cho hệ điều hành Centos

EPEL Repository

# Dành cho Hệ điều hành CentOS 7 64 Bit
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm
rpm -ivh epel-release-7-10.noarch.rpm

# Dành cho Hệ điều hành CentOS 6 64 Bit
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Hoặc anh em có thể chạy lệnh này

yum install epel-release

Tiến hành cài đặt NGINX anh em chạy lệnh

sudo yum install nginx

Centos sẽ tiến hành cài đặt Nginx mất chừng khoảng vài chục giây, nếu có bước hỏi anh em cứ gõ Y và ấn Enter để nó chạy tiếp. Sau khi chạy xong chúng ta tiến hành khởi động NGINX lên để xem nó đã được cài đặt thành công hay chưa:

# Dành cho Hệ điều hành CentOS 7 64 Bit
sudo systemctl start nginx

# Dành cho Hệ điều hành CentOS 6 64 Bit
sudo /etc/init.d/nginx start
hoặc
service nginx start

Kiểm tra anh em ra trình duyệt gõ thẳng ip vps hoặc server của anh em nếu ra như này có nghĩa là anh em đã thành công:

huong-dan-cai-dat-nginx-voi-php-7-php-fpm-va-mysql-tren-centos-huong-dan-cai-dat-nginx-voi-php-7-php-fpm-va-mysql-tren-centos-1

Phần 2: Cài đặt PHP7

Anh em tiến hành chạy lệnh

sudo yum install php70w 

Hệ điều hành Centos sẽ tiến hành cài đặt PHP7 và cũng như cài đặt NGINX nếu có bước hỏi anh em cứ gõ Y và ấn Enter để nó chạy tiếp.

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

Anh em gõ lệnh sau

php-v
PHP 7.0.0 (cli) (built: Dec  2 2015 20:42:32) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

Nếu màn hình hiện ra như trên có nghĩa là bạn đã cài đặt thành công PHP7, giờ chúng ta sẽ tìm các modules

sudo yum search php70w

Màn hình sẽ hiện lên các modules anh em có thể cài đặt vào PHP7

php70w.x86_64 : PHP scripting language for creating dynamic web sites
php70w-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php70w-cli.x86_64 : Command-line interface for PHP
php70w-common.x86_64 : Common files for PHP
php70w-dba.x86_64 : A database abstraction layer module for PHP applications
php70w-devel.x86_64 : Files needed for building PHP extensions
php70w-embedded.x86_64 : PHP library for embedding in applications
php70w-enchant.x86_64 : Enchant spelling extension for PHP applications
php70w-fpm.x86_64 : PHP FastCGI Process Manager
php70w-gd.x86_64 : A module for PHP applications for using the gd graphics library
php70w-imap.x86_64 : A module for PHP applications that use IMAP
php70w-interbase.x86_64 : A module for PHP applications that use Interbase/Firebird databases
php70w-intl.x86_64 : Internationalization extension for PHP applications
php70w-ldap.x86_64 : A module for PHP applications that use LDAP
php70w-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php70w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php70w-mysql.x86_64 : A module for PHP applications that use MySQL databases
php70w-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php70w-odbc.x86_64 : A module for PHP applications that use ODBC databases
php70w-opcache.x86_64 : An opcode cache Zend extension
php70w-pdo.x86_64 : A database access abstraction module for PHP applications
php70w-pdo_dblib.x86_64 : MSSQL database module for PHP
php70w-pear.noarch : PHP Extension and Application Repository framework
php70w-pgsql.x86_64 : A PostgreSQL database module for PHP
php70w-phpdbg.x86_64 : Interactive PHP debugger
php70w-process.x86_64 : Modules for PHP script using system process interfaces
php70w-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php70w-recode.x86_64 : A module for PHP applications for using the recode library
php70w-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php70w-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php70w-tidy.x86_64 : Standard PHP module provides tidy library support
php70w-xml.x86_64 : A module for PHP applications which use XML
php70w-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC

Cài Đặt Modules anh em muốn cài đặt modules nào chỉ cần gõ sudo yum install tên_modules là dc.

Sau đâu mình sẽ viết sẵn một số modules cần thiết để chạy hầu hết các Framework PHP lớn hiện nay như Laravel Framework

sudo yum install php70w-common php70w-xml php70w-soap php70w-xmlrpc php70w-mysql
sudo yum install php70w-mbstring php70w-gd php70w-mcrypt

Ngoài ra với các site có lượng traffic lớn anh em nên cài thêm Modules Opcache để tăng hiệu suất của PHP7

sudo yum install php70w-opcache

Phần 3: Cài đặt PHP-FPM

PHP-FPM là một Modules của PHP nên để cài đặt đơn giản chúng ta chỉ cần gõ lệnh

sudo yum install php70w-fpm

Để khởi động PHP-FPM chúng ta gõ lệnh

# Dành cho Hệ điều hành CentOS 7 64 Bit
sudo systemctl start php-fpm

# Dành cho Hệ điều hành CentOS 6 64 Bit
service php-fpm start

Phần 4: Cài đặt MySQL

rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 
sudo yum -y install mysql-server

Hệ điều hành Centos sẽ tiến hành cài đặt MySQL và cũng như cài đặt NGINX nếu có bước hỏi anh em cứ gõ Y và ấn Enter để nó chạy tiếp. Để khởi động MySQL chúng ta gõ lệnh

# Dành cho Hệ điều hành CentOS 7 64 Bit
sudo systemctl start mysqld

# Dành cho Hệ điều hành CentOS 6 64 Bit
service mysqld start

Để đảm bảo an toàn cho MySQL chúng ta cần tiến hành một số thiết lập ban đầu như đặt pass root, chúng ta gõ lệnh:

mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current password for the root user. If you’ve just installed MySQL, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.

Enter current password for root (enter for none): <– nhấn ENTER

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation.

Set root password? [Y/n] <– Gõ Y và nhấn ENTER

New password: <– Nhập mật khẩu tài khoản root

Re-enter new password: <– Nhập lại mật khẩu tài khoản root

Password updated successfully!

Reloading privilege tables..

… Success!

Như vậy là anh em đã đặt pass root thành công các bước tiếp theo anh em cứ nhấn Enter

Phần 5: Cấu hình Nginx, PHP7 và chạy thử file PHP

Vậy là chúng ta đã tiến hành cài đặt hết xong các phần mềm để có thể chạy được một source php rồi. Bây giờ mình sẽ hướng dẫn anh em config Nginx và PHP để chạy thử một file php nhé.

5.1 Cấu hình tạo Vhost trên Nginx

cd /etc/nginx/conf.d/

Di chuyển tới thư mục root mặc định của Nginx sau đó tiến hành tạo file tên là test.conf bằng cách gõ

vi test.conf

Đây là trình soạn thảo của hệ điều hành Centos cũng như notepad của Windows chúng ta nhấn i và paste vào trong file này nội dung sau đó anh em ấn esc và gõ :wq để lưu lại và thoát ra.

server {
        listen   80;

        root /home/www/test;
        index index.php index.html index.htm;
        server_name  test.hoclaptrinh.vn www.test.hoclaptrinh;
        location / {
            #try_files $uri $uri/ /index.html;
            #rewrite ^/(.*)/$ /?page=$1 last;
            #rewrite ^(.*[^/])$ $1/ permanent;
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ .php$ {
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        # block access to .htaccess files
        location ~ /\.ht {
            deny all;
        }
}

Sau đó anh em cần khởi động lại Nginx để file vhost này có tác dụng. Tiếp đến anh em cần tạo thư mục root cho domain test lúc nãy tại /home/www/test

5.2 Cấu hình PHP-FPM

Đường dẫn cấu hình PHP-FPM mặc định ở trong /etc/php-fpm.d mặc định user và groups nó đang là apache, anh em cần sửa lại thành gì đó ở đây mình sửa thành www-data. Phần socket anh em để là listen = 127.0.0.1:9000 như config ở file vhost nginx.

Bây giờ chúng ta sẽ thực hiện chạy thử nghiệm file php với hàm phpinfo() xem NGINX và PHP đã hoạt động chưa nhé:

cd /home/www/test/

Di chuyển tới thư mục root của vhost anh em vừa tạo sau đó tiến hành tạo file tên là phpinfo.php bằng cách gõ

vi phpinfo.php

Đây là trình soạn thảo của hệ điều hành Centos cũng như notepad của Windows chúng ta nhấn i và viết vào trong file này hàm

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>

Sau đó anh em ấn esc và gõ :wq để lưu lại và thoát ra.

Chú ý: vì ở trên phần config PHPFPM anh em đã sửa user và group thành www-data nên anh em nhớ tạo user tên là như thế và chown nó vào thư mục để file php ( /home/www/test ) nhé.

Bây h chúng ta ra trình duyệt gõ test.hoclaptrinh.vn/phpinfo.php và test thử nhé !

huong-dan-cai-dat-nginx-voi-php-7-php-fpm-va-mysql-tren-centos-huong-dan-cai-dat-nginx-voi-php-7-php-fpm-va-mysql-tren-centos-2

Hiện như này là thành công rồi. Bây giờ anh em có thể upload source PHP lên và chạy rồi. Chúc anh em thành công có vấn đề gì cứ comment phía dưới nhé !

Viết câu trả lời

Drop Images