[LAMP – II] Hướng dẫn cài đặt MariaDB Server & PHP trên CentOS 7

Tiếp tục, đây là bài tiếp theo trong loạt bài về cài LAMP trên Linux bài này mình sẽ hướng dẫn cách làm thế nào cấu hình Database (DB) và PHP tạo web server hoàn chỉnh.

Sau bài này bạn có thể tự mình triển khai các web site nhỏ bằng wordpress hay các mã nguồn viết bằng ngôn ngữ PHP khác trên CentOS 6/7 Server, nội dung bài này không áp dụng cho máy chủ cài CentOS 5 nhé.

Tham khảo Phần I: Cấu hình apache tạo virtualhost trên CentOS 7

Bài hướng dẫn sẽ tuần tự theo các bước.

1. Cài đặt MariaDB/MySQL trên CentOS 7

Tại sao lại dùng MariaDB ? Đến bản CentOS 7 hệ quản trị cơ sở dữ liệu (CSDL) MySQL đã được thay thế bằng MariaDB đây là bản MySQL đã được tối ưu có hiệu suất cao hơn, nhưng cú pháp câu lệnh không thay đổi như giống như bạn dùng MySQL vậy

Trước khi cài đặt DB cho Web Server bạn kiểm tra gói cài đặt MariaDB trong kho  (repository) của CentOS7 đã sẵn sàng hay chưa bằng lệnh.

yum search mariadb

Kiểm tra gói cài đặt MariaDB
Kiểm tra version của MariaDB

yum info mariadb

Output như bên dưới

Kiểm tra phiên bản MariaDB
Như vậy Database Server đang có là MariaDB 5.5.44 đây là bản ổn định được phát hành 11/6/2015, bạn nào cần phiên bản mới hơn thì vào trang chủ MariaDB tải về nhé.

Bạn chạy lệnh cài MariaDB:

yum install mariadb-server

Cho phép MariaDB boot cùng server

systemctl enable mariadb.service

Lệnh Start MariaDB

systemctl start mariadb.service

Nếu gặp lỗi, Job for mariadb.service failed because the control process exited with error code. See “systemctl status mariadb.service” and “journalctl -xe” for details.

Là do trước đó VPS của bạn đã cài MySQL và các thư viện vẫn đang được dùng cho MySQL.

 

Làm theo các bước sau để sửa lỗi.

  • Gỡ bỏ cài đặt mariadb-server.
  • Xóa thư viện của MySQL đi /var/lib/mysql.
  • Cài đặt lại Mariadb-server.

Kiểm tra MariaDB hoạt động hay chưa, lệnh.

netstat -tulpn

Kết quả như hình là thành công.

Kiểm tra việc cài đặt Mariadb Server
Để chi tiết hơn dùng cat /var/log/mariadb/mariadb.log xem thêm các thông tin về mariadb.

Giờ đã có hệ quản trị cơ sở dữ liệu, bạn chạy thêm lệnh  để thay đổi cấu hình mặc định giúp bảo mật cơ sở dữ liệu tốt hơn.

mysql_secure_installation

Một thông báo hiện ra, đầu tiên bạn cần thay đổi mật khẩu root của DB. Do chưa đặt mật khẩu cho root bạn ấn Enter, đây là tài khoản root dùng cho CSDL khác với root của hệ điều hành nhé.

Enter current password for root (enter for none):

Nhập Y để đặt mật khẩu cho user root.

Set root password? [Y/n]

Hỏi bạn có xóa user anonymous không, chọn Y để đồng ý.

Remove anonymous users? [Y/n]

Không cho root đăng nhập từ xa, chọn Y.

Disallow root login remotely? [Y/n]

Xóa DB test, chọn Y.

Remove test database and access to it? [Y/n]

Chọn Y để nạp lại các quyền và thông tin thay đổi trên hệ quản trị cơ sở dữ liệu.

Reload privilege tables now? [Y/n]

2. Tạo Database bằng dòng lệnh.

Để an toàn khi triển khai một website mới, bạn nên tạo cho mỗi website một DB và một user quản lý riêng cho DB đó, tránh dùng user root vì ai có được user root là có toàn quyền với tất cả cớ sở dữ liệu.

Đăng nhập DB bằng lệnh.

mysql -u root -p123456

Câu lệnh trên  sẽ đăng nhập vào MariaDB bằng tài khoản root với mật khẩu được tạo ở bước trên là 123456, giữa -p và mật khẩu 123456 được viết liền không có khoảng trắng. Hoặc dùng câu lệnh mysql -u root -p để nhập mật khẩu vào sau.

Lệnh tạo database

create database testdb;
grant all on testdb.* to 'testuser'@localhost identified by '123456';

Hai câu lệnh sẽ tạo DB tên là testdb và một user tên là testuser, user này có mật khẩu là 123456 và có toàn quyền trên database testdb. Nếu muốn tạo user bằng lệnh riêng mà không muốn gộp vào như trên bạn dùng thêm lệnh:

create user 'testuser'@localhost identified by 'password';

Kiểm tra lại các bước đã làm xem đã tạo được CSDL và User quản trị hay chưa dùng 2 lệnh:

show databases;
select user,host,password from mysql.user;

3. Cài đặt PHP 5.4 trên LAMP Server

PHP là ngôn ngữ kịch bản được dùng nhiều nhất hiện nay, nếu muốn chạy làm website bằng wordpres bạn buộc phải dùng PHP. Mặc định trên CentOS 7 đã có sẵn các gói cài PHP 5.4, nếu muốn cài PHP 5.6, PHP 7 bạn add thêm repo để có bản mới hợn.

Kiểm tra phiên bản PHP sẽ được cài đặt

yum info php

Kiểm tra phiên bản PHP trên CentOS

Lệnh cài PHP

yum install php php-mysql

Lệnh trên sẽ cài đặt PHP 5.4 và gói hỗ trợ cớ sở dữ liệu MariaDB/MySQL.

Tối ưu PHP cho VPS

Với cấu hình VPS SSD 1GB RAM bạn có tham khảo thông số cấu hình PHP bên dưới. Tìm đến file cấu hình PHP tại /etc/php.ini thêm và sửa các thông số sau.

max_execution_time = 30
memory_limit = 128M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On
error_log = /var/log/php/error.log

Bạn chú ý giá trị memory_limit đây là bộ nhớ dành cho PHP, nếu thường xuyên import database lớn bạn sẽ gắp phải lỗi không đủ bộ nhớ, khi đó bạn cần thay đổi lại thông số này cho phù hợp.

Còn lại là các thông số về thời gian thực thi mã PHP và khai báo log lỗi trả về cho tối ưu, setting này sẽ hạn chế ghi một sô log không cần thiết vì cái gì mà cũng ghi log thì sẽ làm server chậm thêm thôi.

Tiếp theo bạn tạo thư mục chứa log PHP

mkdir /var/log/php
chown apache /var/log/php

Nhóm tất cả log hệ thống vào /var/log cho dễ quản lý, chuyển quyền sở hữu folder cho apache là tài khoản vận hành webserver.

Khởi động lại httpd, lệnh.

systemctl restart httpd.service

Kiểm tra Web Server chạy lần cuối xem đã thực thi được PHP Scripts hay không. Tạo file info.php vào /var/www/thuysys.com/public_html

<?php phpinfo(); ?>

Cuối cùng mở trình duyệt từ client nhập vào

http://ip_public_VPS/info.php

Kết quả thành công như bên dưới.

Kiểm tra PHP

Nhận được kết quả như trên là việc triển khai PHP trên máy chủ đã thành công.

4. Kết lại.

Đến đây, các thành phần chính trên server Apache, Virtualhost, MariaDB 5, PHP đã được cài đặt và cấu hình xong bạn đã có thể cài Website WordPress và  các web PHP cho mình rôi.

Bài tới mình sẽ “cầm tay chỉ việc” chi tiết hơn trong Phần III:

Trong thời gian chờ đợi bạn xem thêm cách cài web wordpress trên localhost để có sự so sánh.

Leave a Reply