nessi
Administrator
- Joined
- Feb 25, 2018
- Messages
- 67
- Reaction score
- 16
- Points
- 8
- Location
- HOCHIMINH CITY
- Website
- 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:
- Giới thiệu Web Server Apache và mySQL
- Cài đặt CentOS 7 trên VMware Workstation Pro 15
- Cài đặt Apache và php7
- Cài đặt mySQL
- Thêm source code php và tạo Database
- 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.
- 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
- Apache 2.4
- 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.
- 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.
- Tiếp đến ta trỏ đường dẫn tới file ISO cài đặt vừa download.
- Ta sẽ đặt tên cho VM và nơi lưu trữ của nó.
- 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.
- 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.
- Bây giờ chúng ta đến bước cài đặt Centos 7. Chọn Install CentOS 7 -> Enter.
- Chọn ngôn ngữ của hệ điều hành.
- 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.
- Tiếp theo ta sẽ cấu hình phân vùng ổ đĩa.
- 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.
- Chọn Click here to create them automatically
- 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.
Tiếp theo ta sẽ cấu hình Mạng và Hostname của CentOS
- Bấm Done hoàn thành cấu hình tổng quát cho CentOS.
- 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.
- Sẽ tạo password cho User root là 1. -> Bấm Done 2 lần để xác nhận đặt Password đơn giản.
- Đợi một lúc cho quá trình cài đặt ban đầu của CentOS hoàn thành. -> Reboot
- 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.
- Cuối cùng chọn FINISH CONFIGURATION để hoàn thành cấu hình.
- 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.
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
- 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}/
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
php -v
- Kiểm tra thử hoạt động của php. Tạo 1 file php (index.php) trong /var/www/html/
- 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(); ?>
- Kiểm tra lại bằng cách từ trình duyệt vào đường dẫn: http://{ip-vm-centos}/index.php/
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
- 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
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
- 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 ;
- Check lại Database svuit vừa tạo, Tables là users.
show columns from users;
- 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,
) 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
- Kiểm tra user vừa tạo, vào đường dẫn http://192.168.1.50/ (tự động chuyển sang http://192.168.1.50/login.php/)
- Đã đăng nhập thành công với user vừa tạo. Kiểm tra Database.
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: