Lời mở đầu
Chào mừng các bạn đến với bài viết mới của blog! Hôm nay chúng ta sẽ tìm hiểu cách cài đặt Nginx với PHP 7, PHP-FPM, và MySQL trên hệ điều hành CentOS. Trước khi bắt đầu, hãy cùng nhau điểm qua một số thông tin cơ bản:
Nginx: Đây là một hệ thống server HTTP mã nguồn mở, được nhiều người sử dụng với những đặc điểm như miễn phí, hiệu suất cao, ổn định, đa dạng về chức năng, dễ cấu hình, và sử dụng ít tài nguyên hệ thống.
PHP 7: Là phiên bản mới nhất của ngôn ngữ lập trình PHP, ra mắt vào ngày 3 tháng 9 năm 2015. Nó mang lại nhiều thay đổi về cú pháp, bổ sung thư viện hiện đại, và tăng hiệu suất đáng kể, với công bố gấp đôi so với phiên bản trước đó.
PHP-FPM (FastCGI Process Manager): Là một thành phần kết hợp với Nginx, tạo nên mô hình webserver ngày càng phổ biến, thay thế cho Apache. Tốc độ xử lý PHP script của Nginx + PHP-FPM nhanh hơn nhiều so với Apache + Fcgi.
MySQL: Là hệ quản trị cơ sở dữ liệu nguồn mở phổ biến nhất thế giới. Được ưa chuộng trong quá trình phát triển ứng dụng vì tính linh hoạt và miễn phí.
Bài viết dưới đây sẽ hướng dẫn chi tiết cách cài đặt và tích hợp chúng trên CentOS. Hãy cùng nhau khám phá!
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 có thể thực hiện quá trình cài đặt Nginx chỉ trong vài chục giây. Trong quá trình này, nếu xuất hiện bất kỳ bước nào yêu cầu xác nhận, bạn chỉ cần nhập “Y” và nhấn Enter để tiếp tục quá trình. Khi quá trình cài đặt hoàn tất, chúng ta sẽ khởi động dịch vụ Nginx để kiểm tra xem nó đã được cài đặt thành công hay chưa. Dưới đây là các lệnh tương ứng cho hệ điều hành CentOS 7 (64 bit) và CentOS 6 (64 bit):
Đối với CentOS 7:
sudo systemctl start nginx
Đối với CentOS 6:
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:
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-vPHP 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 modulessudo yum search php70w
Màn hình sẽ hiện lên các modules anh em có thể cài đặt vào PHP7php70w.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 Frameworksudo 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 PHP7sudo yum install php70w-opcache
Phần 3: Cài đặt PHP-FPM
Vì 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é !
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é !