Linux Lab Dựng Web đơn giản với Apache & mySQL trên CentOS 7

nessi

Internship/Fresher
Feb 25, 2018
68
21
8
HOCHIMINH CITY
securityzone.vn

Lab Dựng Web đơn giản với Apache & mySQL trên CentOS 7





Trong bài viết này, mình sẽ đi qua sơ bộ về phần dựng một Website đơn giản với Web Server Apache và mySQL trên CentOS 7.

Nội dung bài viết sẽ đi qua các phần:

  1. Giới thiệu Web Server Apache và mySQL

  2. Cài đặt CentOS 7 trên VMware Workstation Pro 15

  3. Cài đặt Apache và php7

  4. Cài đặt mySQL

  5. Thêm source code php và tạo Database

  6. Kiểm tra hoạt động của Website và Database

Bây giờ chúng ta sẽ đi chi tiết vào việc tìm hiểu và làm thế nào để cài đặt một website đơn giản với đủ các thành phần trên.


  1. Giới thiệu Web Server Apache và mySQL.
  • Apache là một dịch vụ Web Server miễn phí và nối tiếng nhất trên thế giới. Mặc dù là miễn phí, nhưng Apache có rất nhiều tính năng mạnh mẽ và hỗ trợ những ngôn ngữ lập trình web phổ biến như perl, Python, php.

  • Hiện tại thì Apache có 2 phiên bản:
    • Apache 2.4

    • Apache 2.2
  • MySQL là một trong số các hệ thống quản lý cơ sở dữ liệu lớn nhất trên thế giới về mảng ứng dụng website/server. Nó giúp lưu trữ thông tin dữ liệu và quản lý chúng bằng lệnh SQL trên nhiều nền tảng khác nhau.
2. Cài đặt CentOS 7 Mininmal or Server with GUI trên VMware Workstation Pro 15


  • Chúng ta sẽ download bộ cài đặt ISO từ trang chủ của CentOS, tùy theo nhu cầu sử dụng của mỗi người mà chọn phiên bản phù hợp. Mình chọn DVD ISO vì nó bao gồm các lựa chọn cài đặt CentOS Minimal và Server with GUI. Nếu bạn chỉ cài đặt CentOS Minimal thì nên tải Minimal ISO vì nó rất nhẹ so với bản ISO Full trên. https://www.centos.org/download/

  • Các bước cài đặt cũng rất đơn giản, nên mình sẽ đi nhanh qua.

  • Đầu tiên ta Create New Virtual Machine sử dụng tổ hợp phím Ctrl + N. Sau đó chọn Next để tiếp tục.
 lab install web on centos(1)

  • Tiếp đến ta trỏ đường dẫn tới file ISO cài đặt vừa download.
 lab install web on centos(2)

  • Ta sẽ đặt tên cho VM và nơi lưu trữ của nó.
 lab install web on centos(3)

  • Tiếp đến là chỉ định Size của ổ đĩa ảo kèm với lựa chọn Store virual disk as a single file.
 lab install web on centos(4)

  • Bước còn lại là xem lại các thông số đã cài đặt cho VM Centos 7 và chỉnh thông số theo nhu cầu của chúng ta. Sau đó khởi động máy ảo lên.
 lab install web on centos(5)

 lab install web on centos(6)

  • Bây giờ chúng ta đến bước cài đặt Centos 7. Chọn Install CentOS 7 -> Enter.
 lab install web on centos(7)

  • Chọn ngôn ngữ của hệ điều hành.
 lab install web on centos(8)

  • Tiếp đến là chọn phiên bản cài đặt. Mình xài GUI thì mình sẽ chọn Server with GUI và bên phải là các Add-on cài đặt thêm cho môi trường trên.
 lab install web on centos(9)

 lab install web on centos(10)

  • Tiếp theo ta sẽ cấu hình phân vùng ổ đĩa.
 lab install web on centos(11)

  • Ta tick vào ổ đĩa ảo duy nhất trong phần Local Standard Disks. Bên dưới phần Other Storage Options chọn I will configure partitioning. Sau đó chọn Done ở trên để vào cấu hình phân vùng ổ đĩa đã chọn.
 lab install web on centos(12)

  • Chọn Click here to create them automatically
 lab install web on centos(13)

  • Các phân vùng cơ bản và cần thiết đã được tạo tự động. Chọn Done -> Accept Changes để hoàn thành phân vùng ổ đĩa trên Centos.
 lab install web on centos(14)

 lab install web on centos(15)
Tiếp theo ta sẽ cấu hình Mạng và Hostname của CentOS

 lab install web on centos(16)

 lab install web on centos(17)

  • Bấm Done hoàn thành cấu hình tổng quát cho CentOS.
 lab install web on centos(18)

  • Bước này chúng ta sẽ tạo password cho User root và tạo thêm User cho Centos nếu muốn.
 lab install web on centos(19)

  • Sẽ tạo password cho User root là 1. -> Bấm Done 2 lần để xác nhận đặt Password đơn giản.
 lab install web on centos(20)

  • Đợi một lúc cho quá trình cài đặt ban đầu của CentOS hoàn thành. -> Reboot
 lab install web on centos(21)

  • Sau khi đã reboot, màn hình sẽ chuyển đến giao diện Setup ban đầu. Click chọn License Information -> I accept the license agreement -> Done.
 lab install web on centos(22)

 lab install web on centos(23

  • Cuối cùng chọn FINISH CONFIGURATION để hoàn thành cấu hình.
 lab install web on centos(24)

  • Vậy là mình đã hoàn thành cài đặt CentOS 7 với phiên bản Server with GUI trên VMware Workstation Pro 15.
 lab install web on centos(25)


Theo sườn bài, tiếp đến mình sẽ cài đặt Apache và php để chuẩn bị dựng một Website đơn giản.


3. Cài đặt Apache và php.


3.1. Cài đặt Apache.


  • Cài đặt Apache thông qua lệnh yum, Apache thường có sẵn trên Centos 7.
yum -y install httpd

  • Bây giờ chúng ta sẽ khởi chạy dịch vụ Apache và cấu hình cho Apache khởi chạy cùng hệ thống thông qua 2 câu lệnh.
systemctl start httpd

systemctl enable httpd

  • Kiểm tra trạng thái của firewall
firewall-cmd --state

 lab install web on centos(26)

  • Hiện tại firewall đang chạy, mình cần cấu hình mở Port http(80) và https(443) cho phép truy cập từ bên ngoài đến 2 Port trên.
firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --reload

  • Kiểm thử hoạt động của Apache bằng cách từ trình duyệt truy cập tới địa chỉ http://{ip-vm-centos}/
 lab install web on centos(27)

3.2. Cài đặt php7 trên CentOS 7.


  • Bước này nếu bạn muốn cài đặt php version 7.3 mới, còn không thì bạn chỉ cần gõ lệnh đơn giản:
yum -y install php

  • Tiến hành cài đặt gói phần mềm mở rộng trong kho Remi, và kho Remi lại phụ thuộc vào kho lưu trữ EPEL. Chạy 2 lệnh dưới để kích hoạt EPEL và Remi.
yum install -y epel-release yum-utils

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

  • Kích hoạt kho lữu trữ Remi với PHP7.3
yum-config-manager --enable remi-php73 -y

  • Cài đặt php
yum -y install php

  • Sau đó khởi động lại dịch vụ Apache
systemctl restart httpd

  • Xác minh cài đặt PHP bằng câu lệnh dưới để hiện ra phiên bản cài đặt của PHP

 lab install web on centos(28)

  • Kiểm tra thử hoạt động của php. Tạo 1 file php (index.php) trong /var/www/html/
vi /var/www/html/index.php

  • Bấm phím Insert để chèn thêm đoạn code dưới, sau đó bấm phím Esc -> gõ wq save lại file.
<?php phpinfo(); ?>

 lab install web on centos(29)


4. Cài đặt mySQL


  • Chúng ta cài đặt MySQL thông qua 2 câu lệnh.
yum -y install mariadb

yum -y install mariadb-server

  • Tiếp theo chúng ta sẽ khởi động MySQL và cho phép chạy cùng hệ thống.
systemctl start mariadb

systemctl enable mariadb

 lab install web on centos(30)

  • MySQL mới cài sẽ có User root và password rỗng, có thể thay đổi password cho user root bằng câu lệnh dưới, sau đó gõ Enter.

  • Set root password? [Y/n] -> bấm phím Y, nhập password. Các thứ còn lại để đơn giản mình chỉ bấm Y.
mysql_secure_installation

 lab install web on centos(31)


5. Thêm source code php và tạo Database


  • Tạo Database cho Website:
    • Đăng nhập vào MySQL bằng câu lệnh, sau đó nhập password đã tạo.
mysql -u root -p

 lab install web on centos(32)

  • Copy paste đoạn code tạo database:
CREATE DATABASE IF NOT EXISTS `svuit` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `svuit`; CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL, `password` varchar(30) NOT NULL, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 lab install web on centos(33)

  • Check lại Database svuit vừa tạo, Tables là users.
show columns from users;

 lab install web on centos(34)


  • Trỏ tới đường dẫn chứa website: cd /var/www/html/
  • Để sử dụng được thư việc mysqli_* ,cần cài thêm module php-mysql sau đó khởi động lại Apache
yum install -y php-mysql

systemctl restart httpd

  • Ở đây mình có sẵn source code php để test gồm có:
    • connection.php: Dùng để kết nối tới database svuit
<?php

$server_username = "root";

$server_password = "2"; //password sql vừa tạo ở trên

$server_host = "localhost";

$database = 'svuit'; //tên database

$conn = mysqli_connect($server_host,$server_username,$server_password,$database) or die("không thể kết nối tới database");

mysqli_query($conn,"SET NAMES 'UTF8'");

  • index.php: cấu trúc giao diện Website
<?php

session_start();

if (!isset($_SESSION['username'])) {

header('Location: login.php');

}

?>

<html>

<head>

<title>Trang Chủ</title>

<meta charset="utf-8">

</head>

<body>

Chúc mừng bạn có username là <?php echo $_SESSION['username']; ?> đã đăng nhập thành công !

<br> Contact to me

<br><a href="http://svuit.vn/"> svuit.vn</a>

<br> Phuoc Vu

<br> Tel:033445213

</body>

</html>

  • register.php: ghi dữ liệu đăng kí người dùng vào database svuit
<html>

<head>

<title>svuit - Form đăng ký thành viên</title>

</head>

<body>

<?php

require_once("connection.php");

if (isset($_POST["btn_submit"])) {

$username = $_POST["username"];

$password = $_POST["pass"];

$name = $_POST["name"];

$email = $_POST["email"];

if ($username == "" || $password == "" || $name == "" || $email == "") {

echo "bạn vui lòng nhập đầy đủ thông tin";

}else{

$sql="select * from users where username='$username'";

$kt=mysqli_query($conn, $sql);

if(mysqli_num_rows($kt) > 0){

echo "Tài khoản đã tồn tại";

}else{

$sql = "INSERT INTO users(

username,

password,

name,

email

) VALUES (

'$username',

'$password',

'$name',

'$email'

)";

mysqli_query($conn,$sql);

echo "chúc mừng bạn đã đăng ký thành công";

}

}

}

?>

<form action="register.php" method="post">

<table>

<tr>

<td colspan="2">Form dang ky</td>

</tr>

<tr>

<td>Username :</td>

<td><input type="text" id="username" name="username"></td>

</tr>

<tr>

<td>Password :</td>

<td><input type="password" id="pass" name="pass"></td>

</tr>

<tr>

<td>Ho Ten :</td>

<td><input type="text" id="name" name="name"></td>

</tr>

<tr>

<td>Email :</td>

<td><input type="text" id="email" name="email"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Dang ky"></td>

</tr>

</table>

</form>

</body>

</html>

  • login.php: xử lý thông tin đăng nhập
<?php

session_start();

?>

<html>

<head>

<title>Trang đăng nhập</title>

<meta charset="utf-8">

</head>

<body>

<?php

require_once("connection.php");

if (isset($_POST["btn_submit"])) {

// lấy thông tin người dùng

$username = $_POST["username"];

$password = $_POST["password"];

$username = strip_tags($username);

$username = addslashes($username);

$password = strip_tags($password);

$password = addslashes($password);

if ($username == "" || $password =="") {

echo "username hoặc password bạn không được để trống!";

}else{

$sql = "select * from users where username = '$username' and password = '$password' ";

$query = mysqli_query($conn,$sql);

$num_rows = mysqli_num_rows($query);

if ($num_rows==0) {

echo "tên đăng nhập hoặc mật khẩu không đúng !";

}else{

$_SESSION['username'] = $username;

header('Location: index.php');

}

}

}

?>

<form method="POST" action="login.php">

<fieldset>

<legend>Đăng nhập</legend>

<table>

<tr>

<td>Username</td>

<td><input type="text" name="username" size="30"></td>

</tr>

<tr>

<td>Password</td>

<td><input type="password" name="password" size="30"></td>

</tr>

<tr>

<td colspan="2" align="center"> <input name="btn_submit" type="submit" value="Đăng nhập"></td>

</tr>

</table>

</fieldset>

</form>

</body>

</html>


6. Kiểm tra hoạt động của Website.


  • Đầu tiên mình sẽ vào trang 192.168.1.50/resgister.php/ để đăng kí tài khoản
 lab install web on centos(35)

 lab install web on centos(36)

 lab install web on centos(37)

 lab install web on centos(38)

  • Đã đăng nhập thành công với user vừa tạo. Kiểm tra Database.
 lab install web on centos(39)


Vậy là mình đã hoàn thành Dựng Website đăng nhập đăng kí user cơ bản với Apache, PHP7 và MySql.


Source code PHP: kungfuphp.com
 
Last edited:

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu