Apache PHP MySql Server

Phần này tìm hiểu cách cài đặt CentOS 7 trên VirtualBox nhằm có một Server CentOS 7 ảo như thật để tìm hiểu, cũng như cài đặt mạng, các thành phần phần mềm để có một Webserver (có các dịch vụ Apache, MySql, Php), cũng như có thể kết nối ssh tới nó. Ở đây sẽ dùng máy trạm Windows 10 để chạy VirtualBox

Chuẩn bị VirtualBox, CentOS 7

Trước tiên cần tải về VirtualBox sau đó chạy bộ cài để cài đặt nó giống nhiều phần mềm khác trên Windows - Tải VirtualBox

Tải file (ISO) của CentOS 7 tại: Tải CentOS 7 ISO, để sử dụng làm Server với giao diện dòng lệnh, chọn DVD ISO, trong các list ISO có thể chọn CentOS-7-x86_64-DVD-1804.iso (chọn các host ở Việt Nam tải cho nhanh)

Tạo máy ảo để cài CentOs

Bước 1

Chạy Oracle VM VirtualBox Manager đã cài đặt ở trên. Chọn New trên thanh công cụ, hộp thoại hiện thị hãy điền các thông tin muốn tạo máy ảo (đặt tên là CentOS, chọn Type = Linux, chọn Version = RedHat) như hình:

cai dat centos

Bước 2

Từ hộp thoại trên, chọn Create a virtual hard disk now, rồi nhấn Create. Hộp thoại tạo ra để bạn thiết lập đĩa ảo cho máy. Có thể cấu hình các mục như hình, rồi bấm Create

tao virtualbox

Bước 3

Từ danh sách các máy áo trong VirtualBox, nhấn phải chuột vào máy ảo mới tạo ra và chọn Setting để thiết lập thêm.

tao virtualbox

Chọn Display thiết lập bộ nhớ cho màn hình, cũng chọn Enable 3D Acceleration

tao virtualbox

Tại mục Storage chọn Controller: IDE > Empty (đây là ổ DVD ảo), sau đó bấm vào biểu tượng ổ đĩa và chọn gắn file ISO CentOS đã tải về ở trên vào.

tao virtualbox

Như vậy đến đây đã tạo ra được một hệ thống phần cứng ảo (CPU, RAM, DISK, CD ...) trong đó đã nhét sẵn DVD chứa bộ cài CentOS, giờ chỉ việc chạy máy ảo để cài đặt CentOS

Cài đặt CentOS

Chọn máy ảo và nhấn vào Start, máy ảo sẽ khởi động và tự động boot từ DVD CentOS được gắn vào.

tao virtualbox

Chờ một chút, sẽ tới màn hình tùy chọn đầu tiên để cài đặt.

tao virtualbox

Ở màn hình này bạn có thể chọn English rồi nhấn Continue, ở màn hình tiếp theo chờ một chút nó kiểm tra các mục như màn hình.

tao virtualbox

Chú ý ở mục này cần phải chọn ngay muc INSTALLATION DESTINATION nhằm chọn ổ đĩa để cài CentOS, khi chọn mục này hộp thoại như sau:

tao virtualbox

Đánh dấu, chọn ổ đĩa cứng cần cài đặt sau đó nhấn vào DONE, cuối cùng nhấn Begin installation

Quá trình cài đặt CentOS sẽ bắt đầu

tao virtualbox

Trong quá trình cài đặt đang diễn ra, bạn có thể chọn ROOT PASSWORD để đặt password cho user root (user root là user có quyền cao nhất để quản trị toàn bộ hệ thống server linux này).

Chờ cho quá trình cài đặt kết thúc thì khởi động lại máy ảo, từ đây bạn đã có một máy ảo chạy hệ điều hành CentOS để làm Server nghiên cứu.

tao virtualbox

Sau khi khởi động lại, CentOS yêu cầu đăng nhập hệ thống, bạn nhập user là root và password đã đặt ở trên để login vào hệ thống. Từ đây bạn bắt đầu phiên làm việc với CentOS. Đầu tiên gõ lệnh xem phiên bản CentOS đang sử dụng.

# cat /etc/redhat-release

Cài đặt mạng và cập nhật CentOS 7

Mặc dù đã có máy ảo Cent OS 7, nhưng chưa cấu hình mạng nên chưa truy cập internet được, bước này ta thiết lập mạng cho CentOS và cập nhật CentOS

Đầu tiên kiểm tra card mạng, gõ lệnh sau:

# nmcli d
tao virtualbox

Do chưa được thiết lập bạn sẽ thấy thiết bị có tên enp0s3 có trạng thái là disconnected

Để cấu hình, gõ dòng lệnh sau:

# nmtui

Giao diện xuất hiện bạn điều hướng bằng phím mũi tên lên xuống và phím tab để chọn các mục. Đầu tiên chọn đến Edit a connection rồi nhấn Enter

tao virtualbox

Ở hộp thoại tiếp theo, chọn đến enp0s3, rồi chọn đến Edit ...

tao virtualbox

Ở hộp thoại xuất hiện chọn đánh dấu vào mục: Automatically connect, rồi chọn OK

tao virtualbox

Cuối cùng thoát trình cấu hình ra, (bạn cũng có thể nhập hostname ví dụ mydomain.com bằng tiện ích này) tiến hành khởi động lại card mạng bằng lệnh:

# service network restart

Kiểm tra lại IP của máy ảo

# ip a

[root@mydomain ~]# ip a

1: lo: LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:1e:a8:e7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.6/24 brd 192.168.1.255 scope global noprefixroute dynamic enp0s3
       valid_lft 84530sec preferred_lft 84530sec
    inet6 fe80::f54e:d4a5:aaa0:345d/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@mydomain ~]#

Như vậy đã thiết lập mang xong cho CentOS, ở trường hợp trên đã được cấp phát IP là 192.168.1.6

Gõ lại lệnh sau để cập nhật các bản vá mới nhất của CentOS

# yum -y update

Thiết lập IP tĩnh cho CentOS

Nếu muốn cấp phát IP tĩnh, cố định làm như sau:

Mở file thiết lập mạng ra để chỉnh sửa

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

Cập nhật IP chính các thông số như sau, nếu chưa có thì gõ vào

BOOTPROTO=static
IPADDR=192.168.1.99
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=1.0.0.1
DNS2=1.1.1.1
DNS3=8.8.4.4

Địa chỉ IP tĩnh ở trên (192.168.1.99) bạn gán theo hệ thống mạng. Chỉnh xong khởi động lại mạng service network restart

Cài đặt VirtualBox Guest Additions

VirutalBox có kèm theo một số công cụ tùy chọn thêm để cải tiến việc quản lý máy ảo như cho phép tạo Shared Folder (thư mục trao đổi chung giữa máy host và máy ảo), Drag Drop giữa host và virtual, điều chỉnh đọ phân giải màn hình của virtual ...

Để cài đặt VirtualBox Guest Additions đầu tiên cần nhét đĩa VirtualBox Guest Additions vào theo hình sau:

tao virtualbox

Sau đó trong CentOS gõ các lệnh sau để cài đặt:

Tạo thư mục để ánh xạ đến ổ CD

#  mkdir /media/VBox

Ánh xạ ổ CD

#  mount /dev/cdrom /media/VBox/

Đến đây ổ CD của máy ảo truy cập theo đường dẫn /media/VBox/

Trong ổ đĩa này chữa các file cài đặt của VirtualBox Guest Additions, trước khi cài đặt cập nhật một số gói ứng dụng sau:

#  yum update kernel*

Sau đó khởi động lại

#  reboot

Thêm repo cần thiết

#  rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Cài đặt các gói cần thiết: dkms, kernel-headers ...

#  yum install gcc kernel-devel kernel-headers dkms make bzip2 perl

Thêm biến môi trường

#  KERN_DIR=/usr/src/kernels/`uname -r`/build

Cài đặt Guest Additions

#  cd /media/VBox/
#   ./VBoxLinuxAdditions.run

Sau khi cài đặt xong, khởi động lại bằng reboot và Guest Additions đã có trong hệ thống

Kết nối đến CentOS bằng SSH

Về giao thức kết nối SSH đầu tiên hãy xem chi tiết tại Kết nối SSH

Để kết nối ssh đến máy ảo vừa cài đặt từ dòng lệnh của Windows thực hiện:

#  ssh root@ip

Trong đó root là user, ip là địa chỉ IP của máy ảo. Nếu lỗi không kết nối được thì có thể là cổng 22 chưa mở, mà lưu ý là địa chỉ ip của máy ảo không nhận biết được từ máy host.

Để biến máy ảo như một máy trạm trong hệ thống mạng cùng máy host cách đơn giản nhất là thiết lập như sau:

Mở VirtualBox Manager, chọn máy ảo và vào mục Setting, tìm đến phần Network

Ở hộp thoại này mục Attached to chọn Bridged Adapter, mục Name chọn tên card mạng giống card đang dùng ở máy host.

Khởi động lại card mạng

# service network restart

Kiểm tra IP của máy ảo bằng lệnh

# ip a

Có được IP mới cùng hệ thống với máy host rồi thì hãy kết nối lại SSH theo IP này

Cài đặt Apache, MySQL, PHP

Để cài đặt các thành phần để CentOS hoạt động như một webserver với các thành phần máy chủ web là Apache, cơ sở dữ liệu là MySQL và ngôn ngữ PHP tiến hành như sau. Đầu tiên login vào máy ảo (trực tiếp) hoặc thông qua SSH

Cài đặt Apache

Đầu tiền cần đảm bảo đã thiết lập hostname, bằng cách gõ lệnh hostname, nếu chưa thiết lập xem lại phần thiết lập mạng ở trên.

Chạy lệnh cài Apache

# yum -y update
# yum install httpd

Sau khi cài xong thì hãy chạy Apache

# service httpd start

Để kiểm tra xem chạy OK chưa thì dùng lệnh:

# service httpd status

httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2018-11-03 06:32:09 EDT; 18min ago
Docs: man:httpd(8)
   man:apachectl(8)

Thiết lập để khởi động cùng hệ thống:

# systemctl enable httpd.service

Apache đã hoạt động, tuy nhiên từ trình duyệt truy cập vào địa chỉ IP của máy ảo vẫn không thấy Apache hoạt động trả về trang web vì bị Firewall cản lại. Đến đây kiểm tra xem Firewall đang cho những dịch vụ nào truyền dữ liệu ra ngoài bằng lệnh

# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Ở kết quả trên thì có các dịch vụ cho phép truyền dữ liệu ra ngoài đó là ssh, dhcpv6-client và chưa có Apache (httpd)

Cho thêm Apache được phép truyền dữ liệu ra ngoài bằng lệnh

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent

Sau đó khởi động lại Firewall

# firewall-cmd --reload

Lúc này từ trình duyệt ở máy host, có thể truy cập đến Webserver máy ảo bằng địa chỉ http://ip, ví dụ máy ảo có IP là 192.168.1.6 thì địa chỉ truy cập web lúc này là http://192.168.1.6, kết quả là:

Apache đã hoạt động đúng, file cấu hình của Apache ở file /etc/httpd/conf/httpd.conf. Tại đây thiết lập các loại cấu hình cho Apache, tạo host ... những phần này tìm hiểu về Apache sau

Bỏ trang webcome mặc định của Apache

# rm -f /etc/httpd/conf.d/welcome.conf

Mở file cấu hình Apache ra chỉnh sửa

# vi  /etc/httpd/conf/httpd.conf

Mặc định trong đó có các thiết lập để chạy các file tại /var/www/html

Giờ thiết lập một số thông số sau

# dòng 86 - đổi sang email của bạn
ServerAdmin root@myserver.vn

# dòng 95 - đổi tên server của bạn
ServerName myserver.vn:80

# dòng 151
AllowOverride All

# dòng 164 - tự động đọc index.html hoặc index.php truy cập thư mục
DirectoryIndex index.html index.php


# Thêm vào cuối
KeepAlive On

Cuối cùng khởi động lại Apache service httpd restart

Giờ nếu bạn có một file .html thì khi truy cập địa chỉ http://ip sẽ mở file đó. Hoặc sau khi cài PHP thì nếu có index.php thì truy cập http://ip sẽ chạy PHP

Cài đặt MySQL

Để tải code MySQL về và buil đầu tiên cài đặt tiên ích wget

# yum install wget

Sau đó tải vào địa chỉ sau Repo MySQL tìm tên phiên bản mong muốn

Ví dụ tìm thấy tên mysql57-community-release-el7-9.noarch.rpm là phiên bản phù hợp muốn cài đặt, thì tải về với lệnh sau:

# wget https://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

Cập nhật Repo

# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# yum update

Giờ đã có thể dùng Yum để cài đặt MySQL

# yum install mysql-community-server

Chạy MySQL

# service mysqld start

Thiết lập MySQL tự động chạy

# chkconfig mysqld on

Giờ đã có MySQL trong hệ thống, hãy tham khảo về Quản trị cơ bản MySQL

Password mặc định của root quản trị MySQL tự động sinh ra trong log

# grep 'temporary password' /var/log/mysqld.log

Chạy lệnh sau để đổi sang password mưới và thiết lập một số điều kiện an toàn

# mysql_secure_installation

Như vậy đã hoàn thành cài đặt MySQL

Nếu chọn phiên bản 8.0 làm tương tự: https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm

Chỉnh một số thiết lập để truy cập xem thêm: Quản Trị MySQL Cơ bản

Thiết lập chính để kết nối MySQL

Thiết lập bằng cách chỉnh sửa file /etc/my.cnf, có thể có một vài thứ chỉnh ngay ở đây - các thiết lập khác tìm hiểu sau

Đảm bảo MySQL lắng nghe trên cổng 3306 - bind sang IP4

[mysqld]
port=3306
bind-address = 0.0.0.0

Khởi động lại MySQL

# service mysqld restart

Cài đặt PHP

Ở đây sẽ cài đặt PHP 7.2

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum install yum-utils
# yum-config-manager --enable remi-php72
# yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

Sau khi cài đặt gõ lệnh kiểm tra

Ở đây sẽ cài đặt PHP 7.2

# php -v