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:
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
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.
Chọn Display
thiết lập bộ nhớ cho màn hình, cũng chọn Enable 3D Acceleration
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.
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.
Chờ một chút, sẽ tới màn hình tùy chọn đầu tiên để cài đặt.
Ở 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.
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:
Đá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
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.
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
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
Ở hộp thoại tiếp theo, chọn đến enp0s3
, rồi chọn đến Edit ...
Ở hộp thoại xuất hiện chọn đánh dấu vào mục: Automatically connect
, rồi chọn OK
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:
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