Tải bản đầy đủ (.docx) (36 trang)

Tìm hiểu và xây dựng hệ thống hỏi đáp kiến thức CNTT với mã nguồn mở question2answer

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.6 MB, 36 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HỒ CHÍ MINH
KHOA CƠNG NGHỆ THƠNG TIN


ĐỒ ÁN MƠN HỌC

ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG HỆ THỐNG HỎI ĐÁP
KIẾN THỨC CNTT VỚI MÃ NGUỒN MỞ
QUESTION2ANSWER
Giảng viên hướng dẫn: Ths. Phạm Tuấn Khiêm
Sinh viên thực hiện:
Vũ Bảo Ngoc - 2033180103
Nguyễn Thị Lan Hương - 2033180190

Năm học: 2020 – 2021
TP.Hồ Chí Minh, tháng 06 năm 2021


2

LỜI CAM ĐOAN
Chúng em xin cam đoan đây là công trình nghiên cứu của chúng em. Các số liệu, kết
quả nêu trong Đồ án là trung thực và chưa từng được ai cơng bố trong bất kỳ cơng trình
nào khác.
Em xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện Đồ án này đã được cám ơn
và các thơng tin trích dẫn trong Đồ án đã được chỉ rõ nguồn gốc.
Sinh viên thực hiện Đồ án
Vũ Bảo Ngọc
Nguyễn Thị Lan Hương



3

LỜI CẢM ƠN
Trên thực tế khơng có sự thành cơng nào mà không gắn liền với những sự hỗ trợ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt quá trình
từ khi bắt tay vào đề tài tiểu luận cho đến nay, khi hồn thành bài báo cáo, nhóm đã
nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy cô, bạn bè. Đầu tiên, chúng em
xin chân thành cảm ơn Thầy Phạm Tuấn Khiêm, giảng viên Khoa Công Nghệ Thông
Tin trường Đại học Công nghiêp Thực phẩm TP.HCM đã hướng dẫn tận tình, giúp
nhóm nắm được các phương pháp, các bước thực hiện một đề tài đồ án. Đây là lần đầu
tiên nhóm thực hiện đề tài đị án trong lĩnh vực này mặc dù đã cố gắng hết sức nhưng
chưa có nhiều kinh nghiệm do đó khơng thể tránh khỏi sai sót trong q trình trình bày
cũng như báo cáo đề tài. Mong thầy cơ và các bạn góp ý bổ sung thêm giúp nhóm.
Xin chân thành cảm ơn!
Sinh viên thực hiện Đồ án
Vũ Bảo Ngọc
Nguyễn Thị Lan Hương


4

MỤC LỤC


5

DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT
Viết tắt


Tiếng Anh

Tiếng Việt

CNTT

Information Technology

Công nghệ thông tin

PHP

Personal Home Page

Ngôn ngữ lập trình kịch bản

MYSQL

My Structured Query Language

Hệ quản trị cơ sở dữ liệu

Hypertext Markup Language

Ngôn ngữ Đánh dấu Siêu văn

Q2A

Question2Answer


Hỏi đáp 2

Q&A

Questin and Answer

Hỏi và đáp

SQL

Structured Query Language

Cơ sở dữ liệu

XSS

Cross Site Scripting

Tập lệnh trang web chéo

CSRF

Cross Site Request Forgery

Giả mạo yêu cầu trang web chéo

CSS

Cascading Style Sheets


Ngôn ngữ tạo phong cách web

RAM

Random Access Memory

Bộ nhớ tạm

CPU

Central Processing Unit

Bộ xử lý trung tâm

Distributed Denial of Service

Tấn công từ chối dịch vụ phân

SSL

Secure Socket Layer

Lớp socket bảo mật

TLS

Transport Layer Security

Bảo mật tầng vận tải


API

Application Programming Interface

Phương thức trung gian kết nối

HTML
bản

DDoS
tán


6

DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ


7

MỞ ĐẦU
1. Lý do chọn đề tài:
Ngày nay, với sự phát triển vượt bậc của khoa học công nghệ, đặc biệt là lĩnh vực
công nghệ thông tin đã mở ra một bước ngoặc mới cho xã hội hiện nay. Trước nhu cầu
của người dùng ngày một lớn, Mã nguồn mở đã được nhiều doanh nghiệp lựa chọn sử
dụng. Được sử dụng khắp mọi nơi trên thế giới, từ những website cá nhân cho tới
những hệ thống website doanh nghiệp, giáo dục như Question2Answer có tính phức
tạp cao, cung cấp nhiều dịch vụ ứng dụng. Tuy nhiên, Question2Answer có thể dễ dàng
cài đặt, quản lý và có độ tin cây cao. Vì để hiểu rõ hơn về các tính năng của mã nguồn
mở Question2Answer nên chúng em đã chọn đề tài nghiên cứu “Tìm hiểu và xây dựng

hệ thống hỏi đáp kiến thức CNTT với mã nguồn mở Question2Answer”.
2. Đối tượng nghiên cứu:
Phần mềm mã nguồn mở Question2Answer.
3. Phạm vi nghiên cứu:
Thiết lập Website Hệ thống hỏi đáp kiến thức CNTT. Phần mềm hỗ trợ sử dụng mã
nguồn mở Hosting NameCheap. Triển khai bảng điều khiển cPanel được thiết kế để
quản lý các tài khoản lưu trữ riêng biệt trên Hosting Namecheap.
4. Ý nghĩa đề tài:
Xây dựng hệ thống hỏi đáp kiến thức CNTT với mã nguồn mở có ý nghĩa quan
trong trong lĩnh vực tìm hiểu trao dồi kiến thức của các bạn sinh viên Đại học trên nền
tảng mạng Internet. Giúp sinh viên dễ dàng thảo luận những vấn đề về việc học. Ngồi
ra, cịn có thể chia sẻ kinh nghiệm bổ ích thơng qua các bài viết trên diễn đàn học tập.


8

CHƯƠNG 1

GIỚI THIỆU VỀ ĐỀ TÀI
1.1.

1.2.

MỤC ĐÍCH CỦA HỆ THỐNG:
-

Tìm hiểu được khái niệm chung và đặc điểm của mã nguồn mở
Question2Answer. Tìm hiểu và trình bày về các tính năng được mã nguồn mở
Question2Answer cung cấp hỗ trợ.


-

Nghiên cứu để triển khai thực nghiệm với mã nguồn mở khi xây dựng hệ thống
hỏi đáp kiến thức CNTT.
GIỚI THIỆU VỀ QUESTION2ANSWER:

Mã nguồn mở là phần mềm có bộ source code mà bất kì ai cũng có thể download về,
sửa đổi hoặc nâng cấp thêm cho nó những tính năng vượt trội khác.Thơng thường, mã
nguồn mở được phát hành miễn phí và sở hữu bởi các đơn vị, doanh nghiệp lớn về
cơng nghệ, cũng có một số trường hợp các lập trình viên phát triển mã nguồn mở.[1]
Mã nguồn mở được sử dụng trong thiết kế web và phần mềm ứng dụng vì:
• Khả năng quản trị và điều khiển cao.
• Tăng khả năng sáng tạo cho người dùng.
• Độ bảo mật cao.
• Ổn định tốt.
Question2Answer là giải pháp phần mềm Q&A Platforms với chức năng và chi phí
phù hợp cho các doanh nghiệp từ nhỏ và vừa tới các doanh nghiệp lớn.Phần mền
Question2Answer được đánh giá cao bởi cả người dùng lẫn chuyên gia trong lĩnh vực
Knowledge Management Software.[2] Question2Answer là nền tảng Q&A mã nguồn
mở phổ biến được viết bằng PHP & MySQL. Tại thời điểm 2013 này đã có hơn 24.500
trang web sử dụng trên tồn thế giới với 40 ngôn ngữ khác nhau. Tuy nhiên ở Việt Nam
vẫn cịn sơ khai, rất ít nhu cầu sử dụng.
Question2Answer (Q&A) là web cộng đồng trực tuyến của bạn để chia sẻ kiến thức.
Người ta đặt những câu hỏi được câu trả lời mà họ cần. Cộng đồng hoạt động bằng


9

cách bình luận, biểu quyết, thơng báo, điểm và bảng xếp hạng. Một điểm lưu ý chút là:
Q&A có 2 bản. Một là cài đặt riêng bản đóng gói đầy đủ lên máy chủ tương tự như

những phần mềm wordpress, joomla, xenforo,... Hai là nếu bạn muốn tích hợp vào
wordpress đã có thì có thể dùng plugin Q&A của nó.[3]
Question2Answer được cấp phép theo Giấy phép Công cộng GNU phiên bản 2,
hoặc bất kỳ phiên bản GPL mới hơn. Question2Answer đã sử dụng mã nguồn từ
CKEditor, htmLawed, jQuery và PHPMailer.[4]



10

CHƯƠNG 2

PHÂN TÍCH HỆ THỐNG
2.1.

MƠ TRƯỜNG THỰC THI:
2.1.1. Hosting:

Sau q trình tìm hiểu nhóm em đã th tên miền ine/ chạy trên
mơi trường hosting Namecheap.com.
Namecheap có giá th dịch vụ tương đối phù hợp nhưng hỗ trợ nhiều dịch vụ tiện
ích cho người dùng. Trong Namecheap có bảng điều khiển cPanel được thiết kế để
quản lý các tài khoản lưu trữ riêng biệt trên máy chủ. Người dùng có thể:
-

Tải lên và quản lý các tệp trong trang web.

-

Chỉnh sửa bản ghi DNS cho miền.


-

Tạo tài khoản email.

-

Quản lý cài đặt email và bảo vệ SPAM.

-

Kiểm tra thống kê trang web.

-

Quản lý cơ sở dữ liệu và bản sao lưu, v.v.

Ngồi những ưu điểm trên thì hosting Namecheap mắc phải nhược điểm khơng có
location Châu Á do vậy chưa đạt tốc độ tối ưu cho website Tiếng Việt và khả năng và
khả năng bị ảnh hưởng do đứt cáp.
2.1.2. Các u cầu triển khai hệ thống:
Để triển khai mơ hình thực thi hệ thống web ta cần các yêu cầu sau:
-

Thuê Hosting.

-

Tải source code mã nguồn Question2Answer về máy.


-

Cài đặt PHP 5.4 trở lên.

-

Cài đặt MySQL 5.0 trở lên.


11

2.2.

CÁC THÀNH PHẦN HỆ THỐNG:
2.2.1. Quản lý cơ sở dữ liệu:
-

pHpMyadmin:[6]

Trong mục này sẽ là nơi cho bạn quản lý database bao gồm: Backup database,
import database, các bảng/table.
Import dữ liệu cho database:

Hình 2.1: Import dữ liệu cho database.
Phần quản lý sẽ hiện ra như hình trên gồm có: Các database và thanh công cụ chức
năng.
-

Cơ sở dữ liệu MySQL:[7]


Sử dụng giao diện này để tạo, quản lý và xóa cơ sở dữ liệu MySQL và người dùng
cơ sở dữ liệu.
Tên cơ sở dữ liệu có thể chứa tối đa 64 ký tự.
Do phương pháp mà cPanel & WHM sử dụng để lưu trữ tên cơ sở dữ liệu MySQL,
mỗi ký tự gạch dưới yêu cầu hai ký tự có giới hạn đó.


12

Nếu bạn bật tiền tố cơ sở dữ liệu, tên cơ sở dữ liệu có thể chứa tối đa 63 ký tự , bao
gồm tiền tố cơ sở dữ liệu và ký tự gạch dưới. Mỗi dấu gạch dưới bổ sung u cầu hai
ký tự khác trong giới hạn đó.

Hình 2.2: Tạo cơ sở dữ liệu và tài khoản người dùng MySQL.
Để thêm ,xóa, sao chép hoặc chạy các truy vấn và tập lệnh MySQL thì sử dụng tập
lệnh pHpMyadmin của CPanel.
Không sử dụng phpMyAdmin để tạo cơ sở dữ liệu hoặc người dùng cơ sở dữ
liệu. phpMyAdmin không ánh xạ cơ sở dữ liệu , điều này khiến các bản sao lưu và
phục hồi không hoạt động. Nên sử dụng giao diện Trình hướng dẫn cơ sở dữ liệu
MySQL của cPanel để tạo cơ sở dữ liệu và người dùng đầu tiên.Trong cơ sở dữ liệu
MySQL có các chức năng:


Tạo cơ sở dữ liệu.

• Máy chủ MySQL từ xa.
• Sửa đổi cơ sở dữ liệu.
• Kiểm tra cơ sở dữ liệu.
• Sửa chữa cơ sở dữ liệu.
• Cơ sở dữ liệu hiện tại.



13

• Đổi tên cơ sở dữ liệu.
• Xóa cơ sở dữ liệu.
• Thêm người dùng MySQL.
• Thêm người dùng vào cơ sở dữ liệu.
• Những người dùng hiện tại.
2.2.2. Quản lý các tập tin:
-

Quản lý tập tin:[8]

Để quản lý các dữ liệu tập tin và thư mục có trên host sử dụng cPanel, chỉ cần đăng
nhập vào cPanel và tìm đến phần File Manager. Quản trị viên sẽ quản lý dễ dàng, hỗ
trợ các tính năng của thư mục như tạo,upload, nén file, di chuyển, copy. Thư mục chứa
các tập tin file code: *.php,*.json, *.css,…

Hình 2.3: Thư mục các file trong File Manager.


14

-

Disk Usage:

Theo dõi quản lý các file dung lượng trên ổ đĩa. Bảng Disk Usage bên dưới cho biết
dung lượng mà nội dung của thư mục sử dụng, chứ không phải dung lượng mà bản

thân thư mục sử dụng. Các tệp thường chiếm nhiều dung lượng đĩa hơn kích thước
thực của chúng. Điều này có thể gây ra sự khác biệt giữa dữ liệu chúng ta thấy
trong Quản lý tập tin so với thơng tin bạn tìm thấy ở đây.

Hình 2.4: Disk Usage của hệ thống.


15

2.2.3. Quản lý số liệu:
-

Khách (Visitors):

Tại đây, quản trị viên sẽ xem được số liệu thống kê lượng truy cập người dùng vào
website. Các số liệu sẽ giúp quản trị viên đánh giá được sự hiệu quả của web.

Hình 2.5: Số liệu thống kê lượng truy cập người dùng.
-

Quản lý tài ngun (Resoure usage):

Trong q trình sử dụng hosting có lúc hosting bị chập chờn dẫn đến khó truy cập
vào trang web, xuất hiện những hiện tượng như tài nguyên bị cạn hoặc đang bị tấn
công DDoS. Resource usage là nơi để người sở hữu web theo dõi và quản lý các nguồn
tài nguyên trên hosting như RAM, CPU, Băng thơng,…

Hình 2.6: Tài ngun đã sử dụng trong RAM.



16

Hình 2.7: Biểu đồ số liệu hoạt động của CPU.
Ý nghĩa của thơng số hoạt động của CPU:[9]
• CPU Usage: Mức CPU mà hosting sử dụng (Đo bằng %).
• Physical memory usage: Mức RAM hosting đã sử dụng (Đo bằng
GigaByte).
• Input/Output Usage: Lượng băng thông hosting sử dụng (Đo bằng m/s).
• Entry Process: Tiến trình đang xử lý.
• Process: tiến trình đang chạy ngầm.
• Faults: tiến trình bị lỗi.


17

Khơng chỉ có biểu đồ dạng hình học, Resource Usage còn thống kê theo dạng
khung, liệt kê theo từng giờ để ta có thể theo dõi và kiểm tra chính xác hơn.

Hình 2.8: Bảng số liệu mức sử dụng tài nguyên của CPU theo giờ.

Hình 2.9: Biểu đồ số liệu sử dụng băng thông.


18

-

Nhật kí lỗi (Error):

Chức năng hiển thị các mục nhập gần đây nhất trong nhật ký lỗi trang web của bạn

theo thứ tự thời gian ngược lại. Bạn có thể sử dụng thơng tin này để tìm các liên kết bị
hỏng hoặc sự cố với các tệp bị thiếu.

Hình 2.10: Nhật kí lỗi trang web.
2.2.4. Bảo mật (Security):
-

SSL/TLS:

Đây là tất cả các phần của việc sử dụng SSL để bảo mật trang web của bạn. SSL cho
phép bạn bảo mật các trang trên trang web của mình để thơng tin như thơng tin đăng
nhập, số thẻ tín dụng, v.v. được gửi mã hóa thay vì văn bản thuần túy. Điều quan trọng
là phải bảo mật các khu vực đăng nhập, khu vực mua sắm và các trang khác trên trang
web của bạn nơi thơng tin nhạy cảm có thể được gửi qua web.

Hình 2.11: Sử dụng SSL/TLS để bảo mật trang web.


19

-

Quản lý mã thơng báo API:[10]

Tính năng này cho phép bạn tạo, liệt kê, cập nhật và thu hồi mã thông báo API. Máy
chủ nhận ra mã thông báo API và cho phép bạn chạy các hàm API. Các hàm API cho
phép bạn xem và thay đổi dữ liệu tài khoản mà không cần đăng nhập vào giao diện
cPanel. Bạn có thể phát hành mã thơng báo API để cho phép người khác chạy các chức
năng API với dữ liệu tài khoản của bạn. Ví dụ: bạn có thể phát hành mã thông báo API
cho người bán lại. Người bán lại có thể sử dụng mã thơng báo đó để kiểm tra việc sử

dụng đĩa.

Hình 2.12: Quản lý mã thơng báo API.


20

CHƯƠNG 3

TRIỂN KHAI HỆ THỐNG
3.1.

MƠ HÌNH MINH HỌA HOẠT ĐỘNG HỆ THỐNG:
Hình thức hoạt động của phần mềm HoiDap IT (ine/):
-

Máy chủ sẽ cung cấp các tính năng như: sửa chữa, phát triển, chia sẻ các dữ liệu
đến cho các quản trị viên và các users. Hệ thống HoiDap IT có thành phần quan
trọng là các chức năng quản lý câu hỏi, bài viết, người dùng.

-

Máy người dùng: có hai loại là quản trị viên và người dùng là user:
• Đối với người dùng là administrator (quản trị viên) thì sẽ được hệ thống máy
chủ cấp cho một tài khoản admin để có quyền truy cập để chỉnh sửa và tạo ra
1 hệ thống trao đổi kiến thức bằng các câu hỏi và bài viết hữu ích. Các quản
trị viên hầu như tồn quyền hoặc có tối thiểu các quyền như: tạo, thay đổi,
xóa, chèn, chọn, cập nhật, khóa bảng mà hệ thống cung cấp.
• Đối với người dùng là user (người dùng đăng kí) thì được administrator
(quản trị viên) cấp quyền truy cập vào để tham gia trao đổi thảo luận và sáng

tác các bài viết bổ ích dưới sự kiểm duyệt của quản trị viên nhằm tránh vi
phạm đạo đức cộng đồng.

Hình 3.1: Mơ hình minh họa hệ thống HoiDap IT của Question2Answer.


21

3.2.

TÍNH NĂNG HỆ THỐNG:
3.2.1. Tích hợp Wordpress:

HoiDap IT đã tích hợp Wordpress và cơ sở dữ liệu người dùng. Đảm bảo các cookie
xác thực và chuyển hướng tới trang Blog Hoi Dap IT (ine/qa).[4]

Hình 3.2: Giao diện của HoiDap IT khi được tích hợp Wordpress.


22

3.2.2. Thiết lập cơ sở dữ liệu MySQL và User:
Thiết lập một cơ sở dữ liệu là hoidjqsy_HuongNgoc để quản lý dữ liệu người dùng.
Cấp toàn quyền cho người dùng MySql là hoidjqsy_LH.

Hình 3.3: Cấp quyền cho người dùng MSQL.
3.2.3. Tối ưu hệ thống:
HoiDap IT được xây dựng để chạy nhanh chóng và hiệu quả trên các máy chủ web
và cở sở dữ liệu của cá nhân khi có nhiều lưu lượng truy cập. Được thiết kế để giảm
thiểu số lượng truy vấn MySQL được sử dụng trên mỗi trang. Cho phép tách cơ sở dữ

liệu và máy chủ web mà không phải chịu quá nhiều độ trễ. Tuy nhiên, sẽ sử dụng nhiều
truy vấn MySQL thay vì ít truy vấn phức tạp hơn.[4]


23

Hình 3.4: Thiết lập tối ưu hệ thống giảm độ trễ trong file qa-config.php.
3.2.4. Bảo mật hệ thống:
Máy chủ web của HoiDap IT cấu hình một cách chính xác. HoiDap IT sẽ khơng tiết
lộ bất kì thơng tin khơng phù hợp cho khách truy cập trang web HoiDap IT hoặc xâm
phạm dữ liệu cá nhân người dùng. Ngăn chặn việc đưa vào SQL, XSS, CSRF và hình
thành các cuộc tấn cơng giả mạo bằng cách kiểm tra và thốt tất cả đầu vào của người
dùng nếu thích hợp. Thiết lập sao lưu dữ liệu của web HoiDap IT thường xuyên.

Hình 3.5: Bảo mật hệ thống web HoiDap IT.


24

3.2.5. Tùy biến giao diện:
Hỗ trợ nhiều chủ đề và giúp administrator (quản trị viên) dễ dàng tạo một chủ đề
cho trang HoiDap IT. Phiên bản Question2Answer do máy chủ cung cấp đã tích hợp
giữa HTML và PHP khiên nó khơng có trực quan. Vì vậy, quản trị viên chỉ có thể tùy
chỉnh giao diện chỉ bằng cách sử dụng CSS. Trang web HoiDap IT sử dụng giao diện
GreenBlue do chính administrator (quản trị viên) thiết kế ra.

Hình 3.6: Giao diện HoiDap IT sử dụng chủ đề GreenBlue.
Ngoài ra, trang web tích hợp Wordpress là Blog Hoi Dap IT thì được hỗ trợ các tùy
biến giao diện đa dạng, nhưng web đang sử dụng giao diện Rara Academic.


Hình 3.7: Giao diện Rara Academic trên web Blog Hoi Dap IT.


25

3.2.6. Thiết lập Plugin:
Cho phép nền tảng được sửa đổi hoặc mở rộng mà không cần thay đổi cốt lõi Q2A.
Tích hợp plugin với Q2A theo một trong ba cách:[5]
• Modules mở rộng Q2A theo một cách xác định và cụ thể.
• Các lớp sửa đổi đầu ra HTML cho một số phần tử của trang Q2A.
• Overide cho phép sửa đổi hơn 150 chức năng Q2A cốt lõi.

Hình 3.8: Các Plugin được bật trên HoiDap IT.
Riêng về web Blog Hoi Dap IT có các cơng cụ hỗ trợ riêng giao diện hay mã nguồn
mở thường thì có sẵn hoặc tải thêm về.


×