Tóm tắt Trong bài báo cáo luận văn này, em trình bày việc tiếp cận hệ thống quản lý hội thảo Myreview, cài đặt, triển khai trên server trong bài em sẽ cài trên Ubuntu, việt hóa hệ thống
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌCNGÀNH MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
Cần Thơ, 05/2015
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌCNGÀNH MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
Cần Thơ, 05/2015
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 4
NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN
Trang 5
LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành đến quý thầy/cô khoa CNTT đã cho em cơ hội thực hiện bài nghiên cứu này và thầy Đỗ Thanh Nghị đã giúp đỡ , hỗ trợ cho em rất nhiều trong quá trình nghiên cứu và triển khai hệ thống này
Qua bài nghiên cứu này, em đã tự tìm hiểu thêm về một lĩnh vực mới là Zend Framework, các tổ chức và hoạt động của Zend Framework; hiểu biết thêm về php template giúp cho việc trình bày và hỗ trợ đa ngôn ngữ dễ dàng hơn Bài nghiên cứu này làm việc trên môi trường Unix nên em có cơ hội tìm hiểu một
số vấn đề liên quan đến LAMP - Web server trên Linux, tìm hiểu được các tiện ích mà Linux hỗ trợ, từ đó em đã vận dụng tốt vào bài nghiên cứu này Đó
là về phần hiểu biết thêm về cấu trúc của một hệ thống, còn về tổ chức quản lý hội thảo Myreview, đã cho em biết thêm về các chức năng quản lý mà trước giờ hệ thống quản lý truyền thống phải tốn khá nhiều thời gian, từ đó mà em
có thể xây dựng, triển khai, hoàn thiện cũng như nâng cấp đổi mới để phù hợp với nhu cầu trong tương lai
Trang 6MỤC LỤC
LỜI CẢM ƠN 5
MỤC LỤC 6
DANH MỤC HÌNH 8
Tóm tắt 9
Abstract 9
GIỚI THIỆU 10
I Đặt vấn đề 10
a) Qui trình tổ chức hội thảo truyền thống 10
b) Lý do chọn đề tài 10
c) Tóm tắt lịch sử giải quyết 10
d) Mục tiêu nghiên cứu 11
e) Đối tượng và phạm vi 11
f) Nội dung nghiên cứu và những đóng góp 12
g) Tổng quan quyển luận văn 13
CHƯƠNG 1 – MÔ TẢ BÀI TOÁN 14
1.1 Khái quát về đề tài nghiên cứu Myreview 14
1.2 Phân tích vấn đề trong hệ thống và chọn lựa giải pháp 15
CHƯƠNG 2 – THIẾT KẾ VÀ CÀI ĐẶT 18
2.1 Cài đặt môi trường triển khai hệ thống Myreview 18
2.1.1 Cấu hình Apache 18
2.1.2 Cấu hình PHP: 19
2.1.3 Thiết lập Host ảo 19
2.1.4 Tìm hiểu về Zend 20
2.2 Tổng thể của hệ thống quản lý Myreview 21
2.2.1 Cấu trúc cây thư mục 21
2.2.2 Kết nối CSDL 23
2.2.3 Cấu trúc cơ sở dữ liệu của Myreview 24
2.2.4 Xây dựng lớp View kế thừa từ Zend_View 30
2.3 Tiến hành thực hiện giải pháp 31
2.3.1 Thiết lập mail server 31
2.3.2 Kiểm tra tình trạng gửi mail hay tin nhắn 34
2.3.3 Tiện ích soạn thảo 34
2.3.4 Điều chỉnh giai đoạn nộp bài 35
2.3.5 Điều chỉnh giai đoạn phân công 42
2.3.6 Điều chỉnh giai đoạn lựa chọn 42
2.3.7 Đa ngôn ngữ cho hệ thống 43
a Sửa đổi văn bản 44
b Nhập xuất bản dịch 45
CHƯƠNG 3 – CHẠY THỬ HỆ THỐNG VÀ ĐÁNH GIÁ 49
3.1 Postfix (mail server) 49
3.2 CKEditor 49
3.3 Đếm từ 50
3.4 Mail xác nhận thành công theo đa ngôn ngữ 51
Trang 73.5 Gửi mail khi có tác giả upload tập tin bài báo đầy đủ lên hệ thống 52
3.6 Hiển thị đánh giá đúng và phù hợp ngôn ngữ 52
KẾT LUẬN 54
PHỤ LỤC 1 57
PHỤ LỤC 2 58
PHỤ LỤC 3 59
HƯỚNG DẪN SỬ DỤNG 59
I TRANG CHỦ - ĐĂNG KÝ – ĐĂNG NHẬP 59
a Tổng quan trang chủ của trang web quản lý bài báo 59
b Đăng ký vào hệ thống 60
c Đăng nhập 60
II CHUẨN BỊ HỘI THẢO 61
a Thiết lập hình thức cấu hình cho hội nghị 61
b Tạo chủ đề nghiên cứu 63
c Tạo người dùng 64
d Gửi lời mời đến người nhận xét 65
e Tạo cấu trúc cho bài tóm tắt 66
f Tạo tiêu chí đánh giá bài báo 66
III TRANG CHỦ CỦA HỘI THẢO 67
IV QUÁ TRÌNH CỦA MỘT HỘI THẢO 69
a Nộp bài báo 69
b Phân công bài báo 70
c Nhận xét 71
d Giai đoạn lựa chọn bài báo 73
Trang 8
DANH MỤC HÌNH
Trang
Hình 2.1 Cây thư mục của Myreview 21
Hình 3.1 Giao diện CKEditor trên hệ thống 49
Hình 3.2 Kết quả nhận được từ mail người nhận 49
Hình 3.3 Giao diện nộp bài với ngôn ngữ tiếng Việt 50
Hình 3.4 Giao diện nộp bài với ngôn ngữ tiếng Anh 50
Hình 3.5 Thông báo thành công với hai ngôn ngữ 50
Hình 3.6 Thư nhận được tại hộp thư của chủ tịch 51
Hình 3.7 Giao diện bảng điểm đánh giá của từng bài báo .52
Hình 4.1 - Trang chủ hệ thống quản lý bài báo 58
Hình 4.2 – Đơn đăng ký 59
Hình 4.3 – Đăng nhập 60
Hình 4.4 Form cấu hình 61
Hình 4.5 Tạo chủ đề .62
Hình 4.6 Form tạo người dùng 63
Hình 4.7 Danh sách người dùng 63
Hình 4.8 Mẫu thư mời người nhận xét 64
Hình 4.9 Giao diện quản lý cấu trúc bài tóm tắt .65
Hình 4.10 Giao diện của trang chủ hội thảo .65
Hình 4.11 Giao diện của trang chủ hội thảo .66
Hình 4.12 Trang chủ sau khi đăng nhập thành công .67
Hình 4.13 Mẫu sửa thông tin cá nhân 67
Hình 4.14 Giao diện nộp bài tóm tắt 68
Hình 4.15 Giao diện chính của tác giả 68
Hình 4.16 Giao diện gán bài báo bằng tay 70
Hình 4.17 Giao diện người nhận xét 70
Hình 4.18 Giao diện tình trạng bài báo 72
Trang 9Tóm tắt
Trong bài báo cáo luận văn này, em trình bày việc tiếp cận hệ thống quản lý hội thảo Myreview, cài đặt, triển khai trên server (trong bài em sẽ cài trên Ubuntu), việt hóa hệ thống và hiệu chỉnh những lỗi của hệ thống cho hoàn thiện và phù hợp với yêu cầu, yêu cầu ở đây là hệ thống phải thuận lợi trong việc nộp bài báo với nhiều ngôn ngữ, gửi mail sau khi người dùng nộp bài thành công, phân công, đánh giá và lựa chọn bài báo ổn định, hiển thị điểm đánh giá chính xác và giao diện hỗ trợ đa ngôn ngữ Đây là một phần mềm quản lý hội thảo trên nền web (mã nguồn mở) và
đã áp dụng ở nhiều cuộc hội thảo khác nhau trên thế giới vì chức năng của nó hổ trợ tốt việc quản lý này Đầu tiên, em sẽ trình bày cách cài đặt hệ thống, cơ sở dữ liệu của hệ thống, cấu trúc hệ thống, cũng như cách vận hành của Myreview Sau đó, em tiến hành cài đặt mail server (dùng tiện ích Postfix của Ubuntu) hỗ trợ cho các vấn
đề về gửi mail của hệ thống, việt hóa (cũng như đa ngôn ngữ cho hệ thống) bằng cách thay đổi các mã nguồn tĩnh trước kia của hệ thống thành mã nguồn động được tham chiếu từ cơ sở dữ liệu, hiệu chỉnh lỗi còn gặp phải trong hệ thống cũng như bổ sung một số mã nguồn giúp hệ thống đặt yêu cầu đặt ra
Abstract
In my thesis, I will present about approaching Myreview , a management conference system, how to install, to build on web server (i will install it on Ubuntu server), translate into Vietnamese for this system and modify some error of system perfectly and approciate for the request which has to submit the paper with multi-language; send mail after a user‟s sucess submits a paper; paper assignment, review and selection stably, display review mark exactly and website has a good multi-language support Myreview is a management conference software on the web (open source, is build based on Zend framework), is used in many different conferences on the world because its functions support very well these management that need to have in a conference First of all, I will show how to install Mryeveiw system, the database of system, structure system and its operation After that, present how to set up mail server (use Postfix utility of Ubuntu) that will be used in the mail sending, translate into Vietnamese for system ( or make completely the multi-language function of system) by change static code to dynamic code which is referenced from the database of system, edit and add some code to match the request
Trang 10GIỚI THIỆU
I Đặt vấn đề
a) Qui trình tổ chức hội thảo truyền thống
- Khi có quyết định tổ chức hội thảo, ban tổ chức đưa ra thông báo trên các bảng thông báo hay trên các website chung của tổ chức
- Tác giả muốn tham gia gửi bài viết, sẽ gửi thư đính kèm bài viết đến cho ban tổ chức
- Ban tổ chức sẽ lập danh sách những người có khả năng trở thành người nhận xét, rùi gửi đến họ Khi nhận được bài viết ban tổ chức tiến hành gửi thư đính kèm bài viết cho người phản biện để tiến hành đánh giá, cùng với mẫu đánh giá để có bài đánh giá theo quy tắc thống nhất
- Đánh giá xong, người phản biện gửi lại kết quả đánh giá cho ban tổ chức, cho biết đó là bài đánh giá cho bài viết nào
- Dựa vào kết quả đánh giá từ các email, ban tổ chức phải lựa chọn rồi đưa
ra chương trình hội thảo
b) Lý do chọn đề tài
Ngày nay, việc ứng dụng công nghệ để hỗ trợ tổ chức các cuộc hội thảo khoa học ở nước ta và kể cả thế giới là khá phổ biến Tuy nhiên để liệt kê một ứng dụng hoàn thiện được tất cả chức năng gửi bài, đánh giá và cập nhật bài báo thì vẫn chưa xây dựng được Đa phần hội thảo vẫn còn tổ chức theo kiểu truyền thống, tức là mọi thứ đều thông qua email Điều này dễ làm thất lạc bài cũng nhưng là các phần đánh giá cũng không thể nào kiểm soát
Để tránh mất thời gian cho hội đồng chủ tịch cũng như hội đồng phản biện, thì cần phải có một hệ thống quản lý hội thảo trực tuyến trên web, theo sự đề xuất của thầy Đỗ Thanh Nghị, em chọn hệ thống quản lý của Myreview, hệ thống dựa trên giao thức “easychair” – dùng để tổ chức hội thảo tầm cỡ quốc tế - giúp quản lý thông tin về bài báo, điểm đánh giá trên cơ sở dữ liệu máy tính; nộp bài báo, bài đánh giá có sự xác nhận ngay sau đó qua email; hổ trợ đa ngôn ngữ trên hệ thống
c) Tóm tắt lịch sử giải quyết
Với nhu cầu như hiện nay, việc nghiên cứu để xây dựng một hệ thống website hội thảo đáp ứng tất cả các chức năng trên là rất cần thiết Sự ra đời
Trang 11của hệ thống quản lý hội thảo Myreview là một bước phát triển mới cho lĩnh vực tổ chức hội thảo, đem đến cho ban tổ chức nhiều sự thuận tiện trong quá trình thực hiện nhiệm vụ của mình, góp phần xây dựng thành công cho các chương trình hội thảo Các chức năng của Myreview rất tốt nhưng có một số vấn đề còn sót lại khiến cho hệ thống còn mắc vài mâu thuẩn không phù hợp với yêu cầu đặt ra trước kia, chẳng hạn như Myreview có đề ra chức năng đa ngôn ngữ cho hệ thống, tuy nhiên toàn bộ hệ thống không hề đáp ứng theo yêu cầu này và còn một số vấn đề mà Myreview giải quyết mà không phù hợp với yêu cầu được đặt ra ở trên
d) Mục tiêu nghiên cứu
Nghiên cứu hệ thống Myreview để rồi nắm vững yêu cầu cần có của một
hệ thống, kiến trúc và cách vận hành của Myreview, mô hình mà Myreview đang sử dụng Sau đó phân tích và nghiên cứu về các vấn đề mà Myreview giải quyết, tìm ra sự đúng đắn của cách giải quyết ấy nếu có lỗi thì sửa đổi, việt hóa hệ thống có thể tiến tới việc hiển thị ngôn ngữ tùy thuộc vào sự lựa chọn của người dùng, đảm bảo chức năng gửi thông báo và tin nhắn được thực hiện tốt
e) Đối tượng và phạm vi
Đề tài sẽ xoay quanh hệ thống quản lý hội thảo Myreview, rồi sau khi đã nắm vững cách vận hành và kiến trúc của Myreview thông qua việc cài đặt Myreview Để xây dựng một web server cho hệ thống tốt nhất, ta cần phải xây dựng trong môi trường Unix, em chọn hệ điều hành phổ biến nhất là Ubuntu
để cài đặt Myreview Web server trong môi trường Unix có tên gọi tắt là LAMP LAMP (Linux, Apache, MySQL và Php ) hiện nay là một được sử dụng nhiều trong việc phát triển web, vì nó có tính an toàn cao, không quan tâm đến vấn đề bản quyền, các phần mềm dễ dàng cài đặt Tuy rằng, tiện ích sendmail đã có sẵn trong Linux, nhưng để chọn được một tiện ích vừa nhanh,
dễ cấu hình và bảo mật cao, nên chọn Postfix làm mail service cho Myreview Sau khi đọc bản Manual của Myreview, nhận thấy rằng hệ thống được triển khai trên nền Zend Framework Cần phải biết rõ Zend Framework là gì thì mới
có thể tiếp cận hệ thống này, tuy nhiên hiện nay Zend Framework có rất nhiều phiên bản (1.x, 2.x, gần đây nhất là 3.x) Cần phải biết rõ Myreview đang sử dụng phiên bản Zend nào để biết rõ hơn, vì mỗi bản sẽ có những thay đổi khác nhau và việc xác định có 2 cách:
- dùng câu lệnh trong file php: echo Zend_Version ::getLatest();
- dùng câu lệnh cmd : zf show version (nếu có sử dụng zend_tool)
Trang 12Myreview đang sử dụng thư viện của Zend 1.x, là một phiên bản đã được nhiều người biết từ rất lâu, có thể vì thế mà Myreview mới cài đặt để giúp cho nhiều người dùng muốn tiếp cận Myreview có thể dễ dàng hiểu được
Ngôn ngữ PHP (PHP: Hypertext Preprocessor): Myreview dùng ngôn ngữ
PHP để tạo ứng dụng hội thảo này, nó yêu cầu PHP phải từ 5.x trở lên PHP là ngôn ngữ lập trình theo kịch bản, là ngôn ngữ tốt nhất, dễ nhất để viết ứng dụng Web tĩnh, có thể dễ dàng nhúng vào trang HTML vì thế mà nó là ngôn ngữ lập trình cho ứng dụng web phổ biến nhất (Wiki, 2015)
Môi trường chạy ứng dụng Myreview là Ubuntu 12.04 Vì Ubuntu quản lý hệ thống tập tin thư mục theo phân quyền người sở hữu và nhóm người sở hữu rất chắc chắn, cần phải nắm vững kiến thức về Ubuntu mới có thể tiếp cận đúng đắn hệ thống ta đang cần nghiên cứu và hiệu chỉnh, Myreview
Hệ quản trị cơ sở dữ liệu(CSDL) MySQL( SQL là chữ viết tắt của Structured Query Language): là nơi lưu trữ dữ liệu của ứng dụng Hiện nay có rất nhiều
hệ quản trị CSDL phổ biến như Microsoft SQL Server, MySQL, Oracle,… nhưng MySQL là hệ quản trị được các nhà lập trình ưa chọn để phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh (Wiki, 2015)
Chương trình máy chủ Apache HTTP (Hyper Text Transfer Protocol): là chương trình dành cho máy chủ (server) đối thoại với máy khách (client) qua giao thức HTTP Tất nhiên, cũng sẽ có rất nhiều máy chủ Web hiện nay nhưng
để có thể chọn lựa phù hợp ứng hỗ trợ thì phù thuộc vào ngôn ngữ lập trình ta
sử dụng cho hệ thống Ví dụ: IIS của Microsoft dành cho *.asp, *.aspx ; Apache dành cho *.php ; Sun Java System Web Server của SUN dành cho
*.jsp
Dùng quản lý CSDL bằng giao diện phpMyAdmin: đây là công cụ mã nguồn
mở viết bằng PHP, nó dùng để quản lý CSDL MySQL thông qua trình duyệt Web
f) Nội dung nghiên cứu và những đóng góp
- Cài đặt webserver Apache lên Ubuntu, thiết lập cấu hình cho phù hợp với yêu cầu đặt ra của Myreview
- Cài đặt , cấu hình PHP 5.2.x trở lên, tương thích yêu cầu của Myreview
- Tìm hiểu cơ sở dữ liệu (CSDL) của myreview trước khi nhập vào CSDL
Trang 13- Thiết lập Host ảo cho phù hợp với Zend framework cũng như hệ thống Myreview
- Tiến hành cài đặt Myreview trên Ubuntu, chạy các chức năng cần nghiên cứu bằng cách tiến hành thực hiện tuần tự của một hội thảo thực sự Để phát hiện các vấn đề Myreview giải quyết như thế nào và cần sửa đổi gì?
- Sau khi tìm thấy được lỗi và định hình các vấn đề cần phải giải quyết trong hệ thống này, trước tiên cần tìm hiểu kiến trúc cây thư mục Myreview dựa trên kiến thức về Zend framework
- Bắt đầu chỉnh sửa lỗi trong giai đoạn của hội thảo với Myreview, kiểm tra theo từng giai đoạn của hội thảo để không bỏ sót chức năng quan trọng nào Thêm một số chức năng cũng như tiện ích để hệ thống tiện lợi hơn cho hội đồng cũng như người sử dụng
- Thay đổi mã nguồn tĩnh thành mã nguồn động thêm chiếu từ CSDL để linh hoạt trong vấn đề hiển thị ngôn ngữ Đóng góp phần việt hóa cho hệ thống
- Kiểm thử lần cuối để xác định là hệ thống đã hoàn toàn phù hợp với yêu cầu đặt ra
g) Tổng quan quyển luận văn
Bố cục quyển luận văn gồm 3 phần:
Phần giới thiệu (bên trên): là phần nói khái quát về yêu cầu cần đạt được trong
đề tài nghiên cứu này, nêu ra yêu cầu cần đạt sau cùng và các phạm vi đối tượng mà đề tài cần quan tâm
Phần nội dung: gồm có 3 chương, nội dung là trình bày một cách chi tiết về nội dung nghiên cứu, các giải quyết và kết quả đạt được sau khi giải quyết Chương 1: Mô tả bài toán
Chương 2: Thiết kế và cài đặt giải pháp
Chương 3: Kiểm thử và đánh giá
Phần kết luận: tóm tắt lại hệ thống quản lý Myreview, yêu cầu nào đạt ra được giải quyết, sau cùng nếu hướng phát triển tiếp theo cho hệ thống
Phụ lục: các mô hình CSDL, mô hình hoạt động của mail server, hướng dẫn sử dụng (theo trình tự của một hội thảo)
Trang 14CHƯƠNG 1 – MÔ TẢ BÀI TOÁN
1.1 Khái quát về đề tài nghiên cứu Myreview
Myreview là phần mềm quản lý hội thảo, được xây dựng và quản lý dựa trên nền web Ban đầu nó được sử dụng để quản lý hội nghị ACM về thông tin địa lý (ACM-GIS) Hệ thống này đang được sử dụng rộng rãi và được tích hợp thêm nhiều tính năng vào hệ thống
Bài báo cáo này sử dụng tài liệu hướng dẫn phiên bản 2 của myreview Phiên bản này cung cấp đầy đủ các danh sách về mặt chức năng Thêm vào đó, nó dựa trên kiến trúc tổ chức tốt và công cụ tiên tiến, Zend Framwork, nó làm cho
sự phát triển và đánh giá của hệ thống trở nên dễ dàng và đáng tin cậy hơn Các chức năng của hệ thống cũng có một số phần giống như một hội thảo truyền thống như:
- Quản lý người dùng:
Người dùng có thể tự đăng ký vào hệ thống hoặc được người chủ tịch thêm vào từ “Giao diện quản lý người dùng” Mời người nhận xét bằng cách gửi mail mời, có đường link dẫn chấp nhận hay từ chối
- Nộp bài báo:
Tác giả có thể nộp một bài báo tóm tắt cùng với danh sách các tác giả, các chủ đề chính của bài báo và câu trả lời cho câu hỏi được xác định bởi hội đồng chủ tịch Sau khi nộp bài thành công, mail sẽ được gửi cho tác giả
- Phân công bài báo cho người nhận xét:
Người quản trị có thể phân công bài báo cho người nhận xét một cách thủ công Phân công xong, sẽ gửi mail cho tất cả người nhận xét thông báo vào nhận xét
-Đánh giá/nhận xét:
Người nhận xét có thể nối kết đến hệ thống email đang được sử dụng của
họ như là đăng nhập và mật khẩu Họ có thể tải những bài báo mà họ được phân công, trình cho hệ thống bài nhận xét của mình và sửa đổi nó tại bất
cứ lúc nào
-Lựa chọn bài báo:
Trang 15Dựa trên các đánh giá, người quản trị đưa ra quyết định là chấp nhận hay từ chối bài báo Một email sẽ được gửi đến cho tác giả về tình trạng bài báo của mình cùng với đánh giá của người nhận xét
- Trình bày không phụ thuộc/liên quan vào ứng dụng:
Myreview sử dụng các biểu mẫu PHP(PHP template), vì thế mà sự trình bày thì nó không phụ thuộc vào ứng dụng bên trong Chẳng hạn như, có thể cài đặt tự do những thiết kế đồ họa của bạn và gán phần chức năng của Myreview rất dễ dàng, hay tất cả các mail gửi cho nhiều người có thể sửa
đổi mà không hề liên quan đến mã PHP đã được viết trong ứng dụng
Hệ thống có thể được tải về từ: http://myreview.sourceforge.net
Hệ thống dựa trên giấy phép GPL, là bản quyền của Philippe Rigaux
1.2 Phân tích vấn đề trong hệ thống và chọn lựa giải pháp
Phân tích các vấn đề mà hệ thống giải quyết chưa đáp ứng được yêu cầu của một hội thảo mà đã đặt ra ở bên trên Khiến cho hệ thống còn gặp lỗi và không hoàn thiện Phần trình bày sẽ đi theo từ công cụ cho đến nội dung của
hệ thống, nội dung sẽ được nêu tuần tự theo hoạt động của một hội thảo
Cấu hình và cài đặt môi trường webserver phù hợp với Myreview
Với phiên bản này của Myreview, thì cài đặt webserver cũng cần phải chú ý
về phiên bản Đối với Apache và MySql thì không có vấn đề gì, nhưng đối với PHP, không chỉ trên 5.x trở lên mà nó còn phải nhỏ hơn 5.3, vì các hàm kết nối CSDL cũ của Myreview vẫn còn giữ, do nâng cấp từ phiên bản 1 Nếu cài đặt Php quá lớn sẽ khiến cho hệ thống gặp lỗi Tuy nhiên, với môi trường Ubuntu 12.04 thì khi cài đặt nó sẽ cài đặt PHP phù hợp
Tiện ích mail của hệ thống
Hệ thống sử dụng rất nhiều tiện ích mail để thông báo cũng như là nhắn tin Ở đây, hệ thống gửi mail bằng hàm mail() của PHP, vì gần đây các dịch vụ mail hiện đang kiểm soát chứng thực nghiêm ngặt để tránh tình trạng boom mail, nên nếu chỉ dùng hàm mail() này sẽ không thể thực hiện được, trong đề tài nghiên cứu này sẽ sử dụng tiện ích postfix (dùng trên môi trường unix)
Tại sao lại chọn postfix để chứng thực gửi mail?
Postfix là chương trình mã nguồn mở và miễn phí (free and open-source)
dùng để gửi thư điện tử (Mail Transfer Agent – MTA) được tạo ra ban đầu tại IBM với mục tiêu là thay thế chương trình gửi mail phổ biến(Linux)
Trang 16là Sendmail Postfix được phát triển dựa trên mục tiêu là nhanh, dễ quản lý và bảo mật
Việc gửi mail hay tin nhắn
Khi mail được gửi đi, Myreview không có xét trường hợp mail bị lỗi, cứ như thế mà thông báo “Mail đã thành công”, trong khi chưa có mail nào được gửi Lúc này cần phải sửa đổi trong phần code của Model Mail
Tiện ích soạn thảo
Để dễ dàng cho việc định dạng, hệ thống sẽ bổ sung thêm tiện ích Jquery tên
“CKEditor”, công cụ soạn thảo với nhiều lựa chọn tùy chỉnh cho văn bản
Giai đoạn nộp bài
- Trong giao diện nộp bài tóm tắt của tác giả, có quy định số từ được nộp tối
đa, vì thế khi tác giả soạn thảo hoặc thiết lập nội dung thì hệ thống có hỗ trợ đếm từ Tuy nhiên, việc đếm từ của Myreview nêu ra chỉ đúng với tiếng Anh hay nói đúng hơn là mã nguồn đếm từ của Myreview sẽ sai khi
có dấu, ngoài ra khi có kí tự đặc biệt cũng không thể nộp thành công bài báo Để có thể đếm từ tiếng Việt có dấu chính xác, ta sẽ cắt chuỗi văn bản
đó theo vào trong một mảng, cắt bởi dấu khoảng trắng “ ” Đếm số phần tử trong mảng thì sẽ biết được số từ trong văn bản
- Sau khi nộp bài xong, mail sẽ được gửi đến tác giả Nội dung mail không những thông báo cho người tác giả biết là đã thành công, mà còn phải cho biết thông tin về hạn chót nộp, đường dẫn xem chi tiết
Thông tin hạn chót cần phải hiển thị đúng với ngôn ngữ mà người dùng đang truy cập vào hệ thống Để làm được điều này, ta sẽ dùng đến hàm Zend_Date và Zend_Locale để hiển thị đúng thứ ngày tháng theo quy định của một quốc gia
- Upload bài đầy đủ, mặc dù có nói trong phần hướng dẫn tay, nhưng Myreview không có hỗ trợ chức năng này Em đã thêm hàm uploadAction vào AuthorController, nhằm mục đích báo cho chủ tịch biết là ai đã upload bài báo gì lên hệ thống Ngoài ra, có trường hợp khi người dùng không chưa đưa tên tập tin cần upload lên và ấn upload, hệ thống vẫn hiện thông báo là đã upload thành công, như vậy là bất hợp lý, vậy khi nhấp upload, hệ thống sẽ thông báo là không thành công, ngăn không cho thực hiện tiếp tục
Trang 17- Gần đến giai đoạn nộp bài, chủ tịch sẽ gửi mail nhắc đến các tác giả chưa nộp bài, nhằm mục đích thông báo cho tác giả nếu như họ quên hay bận Nhưng mail nhắc nhở này cũng xác định cho các tác giả sau này không khiếu nại vì khi hết hạn, đóng không cho nộp bài, cùng lúc đó, sẽ xóa các thông tin của những bài không nộp
Giai đoạn phân công
- Đến thời gian hạn chót nộp bài, hệ thống cho phép chủ tịch vào form cấu hình để đóng giai đoạn mà không làm gì khác Nhưng lúc này, để giảm bớt lượng bài trong CSDL khi có một số bài không nộp đúng hẹn và không có yêu cầu dời hẹn, tạo ra một chức năng vừa đóng nộp bài, vừa xóa có bài chưa nộp bài đầy đủ
Giai đoạn đánh giá
- Bổ sung chức năng gửi mail cho những người đánh giá có liên quan đến một bài báo nào đó Mục đích có thể là thông báo những thông tin đặc biệt liên quan về bài báo đó hay là khi có bài báo này trước đó có đụng độ về điểm đánh giá, chủ tịch sẽ gửi mail cho những người này về việc thảo luận
của hội đồng chủ tịch khi để có quyết định
Hệ thống đa ngôn ngữ
- Có một số đoạn hệ thống có khả năng chuyển đổi ngôn ngữ khi người dùng chọn ngôn ngữ nào đó Tuy nhiên ở những phần khác của hệ thống lại không có, đặc biệt là trong giao diện của chủ tịch, các mã nguồn đều bị
cố định bằng văn bản tĩnh tiếng Anh Tất cả sẽ được chuyển đổi về văn bản động, được tham chiếu từ CSDL
- Bổ sung bản dịch việt hóa vào hệ thống
Trang 18CHƯƠNG 2 – THIẾT KẾ VÀ CÀI ĐẶT
2.1 Cài đặt môi trường triển khai hệ thống Myreview
2.1.1 Cấu hình Apache
.htaccess là tập tin được dùng để thay đổi cấu hình trên webserver mà không cần phải vào chính tập tin cấu hình gốc (httpd.conf) để cấu hình Tập tin này thường được đặt bên trong các thư mục nơi muốn cấu hình theo mong muốn Mục đích là thay đổi tên đường dẫn thân thiện với người dùng và tương thích với yêu cầu của Zend Framework; cấm tất cả mọi IP vào thư mục
Để htaccess có thể chạy tốt cần phải thực hiện hai việc sau:
sudo /etc/init.d/apache2 restart
Phân tích mã code trong tập tin htaccess trong thư mục gốc:
Mở chế độ mod_rewrite, tạo ra điều kiện xét khi rewrite URL, sau cùng là viết URL đó lại như thế nào? Đây là nội dung được dùng phổ biến với tất cả các website
Ngoài ra, cần phải quan trọng người dùng khi chạy hệ thống trên Ubuntu, vì Ubuntu có cơ chế người dùng rất chặt chẽ Tuy rằng, chúng ta qui định project của hệ thống là của admin user Ubuntu, thì khi dùng trên chính server thì người dùng sẽ là admin Nhưng thực tế, chúng ta đang dùng Apache web server để duyệt web, lúc này chúng ta đang là người dùng có tên www-data, đây là người dùng mặc định của Apache Để có thể có đủ và đúng quyền Ta
sẽ đặt nhóm www-data là nhóm chủ sở hữu của myreview và thêm user admin
Trang 19Ubuntu vào nhóm này Từ đây, chúng ta mới có thể upload file mà không bị lỗi do quyền gây ra
2.1.2 Cấu hình PHP:
- Tham số file_uploads phải được bật on, thì tác giả mới có thể upload
tập tin lên server
- Kiểm tra giá trị upload_tmp_dir (thiết lập kích thước tối đa là 2MB)
và upload_max_filesize
- Lưu ý rằng tùy chọn magic_quotes_gpc không ảnh hưởng đến hành vi của MYREVIEW Vì vậy, magic_quotes_gpc có thể on hay off đều không khác biệt (giá trị off sẽ hiệu quả hơn)
2.1.3 Thiết lập Host ảo
Tạo ra một máy chủ ảo cho trang web và tài liệu trong thư mục www Điều này đảm bảo rằng các tập tin được lưu trữ trong thư mục web root và các truy cập độc hại không thể truy cập bất cứ điều gì ngoài các tập tin là một URL
- Copy tập tin tên “default” (là tập tin virtual host có sẳn của apache2) trong thư mục sites-available Thành tập tin tên “mysite” cũng trong thư mục này
- Vào tập tin “mysite”, chỉnh lại các tham số:
o DocumentRoot: đường dẫn gốc của hệ thống
o Directory: là đường dẫn đến hệ thống
Tập tin “myfile” có nội dung giống như sau:
Trang 20Từ đây Virtual Host sẽ thực hiện cùng với Zend Framework, viết lại URL để Zend có thể hiểu được và trỏ đúng đến vị trí ta cần truy cập
2.1.4 Tìm hiểu về Zend
Đề tài nghiên cứu dựa trên ứng dụng mã nguồn mở myreview_v2.01.00 Đặc biệt trong thư mục library, cần phải đảm bảo là có đủ có thư viện Zend và Zmax, kèm theo là thư mục chứa có hàm chức năng được sử dụng trong Myreview
- Hiện nay Zend được coi là nền tảng cơ bản và đầy đủ, nhưng lại phức tạp Được hổ trợ rất nhiều từ công ty Zend, có thể xem hướng dẫn sử dụng của họ trên trang chủ Nó là một phần mềm mã nguồn mở, viết hướng đối tượng, xây dựng trên mô hình MVC, sử dụng PHP 5.2.3 trở lên Trước khi nghiên cứu về hệ thống Myreview, em đã có đọc qua một
số tài liệu để học cơ bản về Zend 1.x, em thấy được tính khả dụng của nó rất cao, nó hỗ trợ rất nhiều trong các công việc mà trước ta phải viết code nguồn rất vất vả: lọc, phân trang, truy vấn CSDL theo nhiều cách khác nhau tùy vào mục đích sử dụng ngoài ra nó mở rộng rất nhiều chức năng:
hổ trợ phân quyền cho từng Action thông qua việc xác thực người dùng,(*) URL tiêu chuẩn (url gốc/controller/action, còn với nhiều module thì url gốc/module/controller/action),… Do thời gian hạn chế nên
em chỉ tìm hiểu cơ bản về Zend 1.x rồi vận dụng để hiểu code nguồn của Myreview
Trang 21- Mô hình MVC là mô hình gồm Model – view – Controller, là mô hình phổ biến được dùng để tổ chức cấu trúc của một website động, thao tác CSDL
o Model : Cung cấp tập hợp các lớp được sử dụng cho việc truy xuất
dữ liệu Lớp phục vụ: Zend_DB, Zend_DB_Table
o View: Định nghĩa các thông tin hiển thị phía người dụng sau khi được xử lý và trả về từ controller Lớp phục vụ: Zend_View
o Controller: Kiểm soát dữ liệu vào ra Xuất thông tin ra tầng View khi được thực thi Lớp phục vụ: Zend_Controller
- Khi người dùng gửi một request từ browser thì nơi đầu tiên tiếp nhận request đó đầu tiên là controller Controller sẽ tiếp nhận request, phân tích request, sau đó sẽ phân luồng request để gọi đến Model và View Tùy vào request, mà controller sẽ xác định đưa dữ liệu đến model hay không và sau đó kết quả sẽ trả về view
2.2 Tổng thể của hệ thống quản lý Myreview
Kiến trúc của hệ thống dựa trên nền Zend Framework 1.x (phiên bản cụ thể là 1.10.8), nó là một trong những framework phổ biến hiện nay của PHP,
nó có hỗ trợ rất nhiều tiện ích giúp người phát triển dễ dàng xây dựng ứng dụng web của mình trở nên đa dạng về chức năng hơn Zend Framework xây dựng theo mô hình Model-View-Controller (MVC), một mô hình khá phổ biến khi xây dựng ứng dụng web
2.2.1 Cấu trúc cây thư mục
Hình 2.1 Cây thư mục của Myreview
Cây thư mục của Myreview tuân theo qui tắc phân cấp cơ bản của Zend Framework gồm có các thư mục chuẩn:
Trang 22- Library : dùng để chứa thư mục chính của Zend Framework (Zend), các thư mục mở rộng do người phát triển tự bổ sung (Myreview tạo thư viện Zmax và thư mục chứa các hàm chức năng)
- www: thư mục chính gồm có index.php, các thư mục css, js, images
- Application: thư mục ứng dụng chính chứa các mã lệnh ứng dụng ( controllers, views, models) Tuân thủ theo mô hình MVC
- Config: thư mục chứa các tập tin cấu hình ini cho hệ thống gồm cơ sở
dữ liệu, các tham số cần thiết của hệ thống
Ngoài ra, còn có các thư mục bổ sung thêm:
- Doc: là chứa tài liệu hướng dẫn của Myreview
- Install: chứa các tập tin cơ sở dữ liệu sql
- Themes: chứa các layout có sẵn
- Files: là nơi chứa các tập tin người dùng tải lên
Cấu trúc cây thư mục của Myreview vẫn đi theo cấu trúc bình thường của Zend Tuy nhiên cách phân chia module có phần khác Đối với Zend, trong trường đa module, trong thư mục application sẽ chia ra từng thư mục cho mỗi module, trong mỗi module thì có thư mục con controllers,views, models
Đối với Myreview thì các chút khác, ở đây có hai module chính là admin
và default; module “admin”, Myreview đưa vào thư mục tên “admin; còn
“default”, không tạo thư mục riêng mà tạo hai thư mục controllers và views thuộc module “default” ngang cấp với admin Và vì models sử dụng chung cho cả hai module “admin” và “default” nên nó được Myreview bên ngoài Tuy nhiên việc sắp xếp này cũng không ảnh hưởng gì mà chỉ giúp cho người phát triển hiểu được module của hệ thống Thực tế, việc khi một người khi nhấn URL lên thanh địa chỉ, Zend framework sẽ lấy theo thứ tự như sau:
http://Base_url/module/controller/action
Đây là cấu trúc URL mà Zend quy định
Trang 232.2.2 Kết nối CSDL
Chạy hệ thống bằng cách gõ tên ServerName trên thanh địa chỉ của trình duyệt Web Có thể sẽ gặp lỗi sai tên truy cập vào CSDL Trong PHP cơ bản,
để có thể kết nối vào CSDL MySQL, ta dùng hàm như:
Còn với Zend thì ta kết nối CSDL thông qua tập ini, trước tiên trong tập tin index.php đầu tiên khi chạy chương trình Hệ thống sẽ khởi động hàm init() của lớp BootStrap trong thư viện Zmax (là thư viện mở rộng người lập trình thiết lập) Trong hàm init() này nó thiết lập rất nhiều biến ở đây:
- Hàm setupRegistry() : tạo ra đối tượng Zend_Register, nó khá giống với Session, nhưng Registry lưu giữ biến lâu hơn Session
- Hàm setupConfig(): dùng để lấy môi trường phát triển (trong config/default/enviroment.ini), sau đó nạp hết giá trị trong các tập tin trong thư mục config/default vào một biến($config), với điều kiện là các tham số đó ở trong môi trường đã được thiết lập
- Hàm setupDb(): là hàm kết nối với CSDL dựa vào các tham số trong database.ini hay là giá trị của các phần tử mảng của một biến đã được lưu vào chương trình Có thể do sự an toàn mà ta cấu hình đến hai lần, lần đầu thì ghi bên ngoài tập tin config.ini, khi vòng chạy ở tập tin Bootstrap nó sẽ được định nghĩa lại hay không?
Trang 24Trong hàm setupDb(), khi nó xác định là ứng dụng có sử dụng database, thì nó sẽ tìm xem đó là loại CSDL nào Code trên ta thấy, nó chia ra làm 2 trường hợp:
- Couch DB – “là một phiên bản khác của NoSQL Cũng lưu trữ dữ liệu dạng JSON và dùng Javascript như các câu truy vấn để lấy dữ liệu.Apache CouchDB được tạo ra vào năm 2005 bởi IBM Lotus Notes
Họ đã dùng nó cho việc lưu trữ hệ thống dữ liệu lớn bởi tính năng động của nó”
- Khác là gồm các loại CSDL thông thường
Vì sử dụng hệ quản trị CSDL MySQL nên hệ thống dẫn mảng
$config→db đến một lớp Db_Adapter trong thư việc mở rộng Zmax Ở lớp này, nó sẽ lấy giá trị của các tham số trong tập tin database.ini (nội dung ở bên dưới) để kết nối vào CSDL Trong Zend Framework có rất nhiều cách để kết nối vào CSDL, ở đây dùng phương thức factory() của Zend_Db, kèm theo đó
là getConnection() Ngoài ra, trong các biến liên quan đến version v1, sử dụng cách thức truy cập mysql_connect() của PHP, điều gặp khó khăn khi cài đặt PHP 5.5 trở lên
Các thông số cấu hình được thiết lập trong thư mục config, để có thể bảo mật mật khẩu truy cập hệ thống, có thể vận dụng quyền nhóm sở hữu để ngăn không cho đọc(không có quyền đọc và viết) các tập tin trong thư mục này
2.2.3 Cấu trúc cơ sở dữ liệu của Myreview
Cơ sở dữ liệu của Myreview rất đồ sộ, tuy nhiên có một số bảng và cột của Myreview không dùng tới khiến nó trở nên thừa thãi gây ra nặng cho hệ thống, có thể loại bỏ một số bảng không cần thiết Ngoài ra, có một số bảng tuy là lấy id từ các bảng khác nhưng nó không dùng tham chiếu đến id đó, làm mất tính quan hệ giữa một số bảng Để hệ thống có thể hoàn thiện cả về CSDL, cần phải thiết lập các mối quan hệ lại cho các bảng CSDL cho Myreview
author
Column Type Null
id_paper int(11) No id_user int(11) No position int(11) No
Trang 25contact varchar(1) Yes
Bảng thông tin tác giả abstract
id_paper int(11) No id_section int(11) No content longtext Yes
Bảng nội dung bài tóm tắt abstractsection
section_name varchar(50) No position int(11) No field_height int(11) No mandatory char(1) Yes
Bảng mô tả cấu trúc của bài tóm tắt và bảng thông tin bài tóm tắt
criteria
label varchar(30) No explanations text Yes weight int(11) No
Bảng tiêu chí cho bài báo paper
title varchar(255) No
Trang 26emailContact varchar(60) No
nb_authors_in_form int(11) Yes
isUploaded char(1) Yes format varchar(10) Yes
submission_date int(11) Yes inCurrentSelection char(1) No
Bảng thông tin tình trạngvề bài báo nộp papertopic
Column Type Null
id_paper int(11) No id_topic int(11) No
Bảng chủ đề của bài báo researchtopic
Trang 27Column Type Null
label varchar(100) No
Bảng chủ đề nghiên cứu review
reviewerExpertise int(11) Yes
fname_ext_reviewer varchar(60) Yes lname_ext_reviewer varchar(60) Yes submission_date int(11) Yes last_revision_date int(11) Yes
Bảng thông tin bài nhận xét của bài báo reviewmark
Column Type Null
idPaper int(11) No id_user int(11) No idCriteria int(11) No mark int(11) No
Bảng điểm từng tiêu chí cho các bài báo session
Trang 28idSession varchar(40) No id_user int(11) No tempsLimite decimal(10,0) No roles varchar(10) No
Bảng thông tin cho mỗi phiên khi có người đăng nhập showslot
Column Type Null
id int(11) No slot varchar(28) Yes
slot
Column Type Null
id int(11) No slot_date date No begin time Yes end time Yes
Bảng thông tin cho các khe của hội nghị upload
Column Type Null
id_paper int(11) No id_file int(11) No file_size int(11) No upload_date datetime No
Bảng thông tin bài báo đã tải lên user
Trang 29last_name varchar(30) No first_name varchar(30) No
password varchar(60) No address varchar(256) Yes
affiliation varchar(100) Yes
Bảng chủ đề ưu thích của người dùng zmax_lang
lang varchar(10) No name varchar(255) No
Bảng ngôn ngữ được sử dụng trong hệ thống zmax_namespace
namespace varchar(10) No
Trang 30Bảng chứa các chuỗi text được chèn vào tập tin XHTML
Mô hình dữ liệu mức quan niệm (CDM) ở phần phụ lục (*)
2.2.4 Xây dựng lớp View kế thừa từ Zend_View
Vì trong các tập tin view được xây dựng với mục đích dựa trên PHP mẫu
là một chức năng bổ sung thêm vào hệ thống mà Zend_View thì không có hỗ
trợ cấu trúc này, nên cần phải xây dựng một lớp View khác (đặt tên là Phplib)
kế thừa từ Zend_View Ở lớp này, có các hàm dùng để nhận dạng các mã lệnh
template mà người phát triển đưa ra trên các tập tin view Chẳng hạn như:
Dạng {form.abstract_submission_form} là dạng lấy dữ liệu từ bảng
zmax_text Với form là tên namespace, abstract_submission_form là mã code
Lúc này hệ thống sẽ dựa trên 2 thành phần trên kèm theo ngôn ngữ mà người
dùng chọn để xuất ra dữ liệu phù hợp in ra ngoài
Dạng {Paper→title} là lấy dữ liệu từ 1 bảng đặc biệt, ở đây là bảng Paper
Paper là tên bảng muốn lấy, title là trường Ở đây cần có xác định id của
paper thì phần hiển thị mới đúng
Dạng <!—BEGIN SECTION >: là dạng xác định khu vực hiển thị cho vòng
Trang 31Nhờ có việc thiết lập thư viện Phplib, mà ta cần thể từ đây triển khai phần hổ trợ đa ngôn ngữ và có thể tự xây dựng hàm đóng góp trong thư việc này trong vấn đề về hiển thị mang nhiều bảng khác nhau, còn nếu như muốn điều chỉnh
hiển thị trong một bảng thì sửa đổi các lớp trong thư mục Model
2.3 Tiến hành thực hiện giải pháp
2.3.1 Thiết lập mail server
Như đã phân tích ở chương 1, hệ thống quản lý của Myreview dùng hàm mail() của Php, hàm này được dùng cho tất cả các hoạt động từ gửi mail đến tin nhắn Với yêu cầu, bảo mật cao, đáp ứng nhu cầu chứng thực của gmail server, trong đề tài này em dùng tiện ích postfix làm mail client của hệ thống
Các bước thiết lập postfix:
1 Cài đặt postfix, thiết lập các thông số trong khi cấu hình:
- Đầu tiên, ta sẽ thiết lập cấu hình loại mail tổng quát cho postfix, có
rất nhiều lựa chọn, trong hệ thống này ta sẽ chọn Internet Site
- Tiếp đến là Tên mail hệ thống (System Mail Name) là tên domain mail server của hệ thống Ở đây, do là nghiên cứu nên em thiết lập là gmail.com
- Tiếp theo là nó sẽ hỏi về SMTP Relay Host Khi để trống (mặc định), Postfix sẽ phân phát mail qua mạng Internet Nhưng có vài trường hợp xảy ra là mail server thật bị sự cố, hay ngắt điện thì lúc này việc gửi mail sẽ bị lỗi hoặc là mail bị đánh dấu là “spam” Để tránh tình trạng này, ta cần phải cấu hình Postfix phân phát mail qua relayhost.Ở bài nghiên cứu này, em chọn relayhost phân phát thông qua smtp.gmail.com
- Các phần cài đặt còn lại (giới hạn hộp thư, recipient_delimiter, inet_protocols) để mặc định
2 Vào tập tin cấu hình chính tên main.cf để chỉnh sửa lại giống với nội dung bên dưới:
- Sửa lại các thông số sau với nội dung:
Trang 32Ý nghĩa của các thông số quan trong:
myhostname: tên máy tính (không quan trọng)
mydestination: danh sách các tên miền được phân phát thông qua
một nơi phân phát mail cục bộ của postfix (local_transport)
Inet_interfaces: phải là loopback-only
- Sau đó thêm một vài dòng sau vào main.cf:
Ý nghĩa của các thông số quan trọng:
relayhost: máy chủ SMTP, mail chuyển ra internet thông qua
relayhost Tham số này, để được gán bằng smtp.gmail.com trong phần cấu hình bằng giao diện, ta chỉ cần thêm cổng 587 vào như trên
smtp_sasl_password_maps : là tùy chọn của máy Postfix SMTP
tìm một mục username:password trên một hostname hay miền từ xa Nếu không tìm thấy thì nó không chứng thực host từ xa đó nữa
smtp_use_tls: sử dụng TLS smtp_tls_CAfile : đường dẫn chưa tập tin chứa chứng chỉ CA của
CA gốc của máy tính
Trang 333 Sau hoàn thành, ta sẽ tạo ra một tập tin sasl_passwd để nhập email
và mật khẩu (lấy email của nhà quản trị) để chứng thực gửi mail
- Nhập vào tập tin này với nội dung:
- Mã hóa tập tin sals_passwd ngay sau đó bằng câu lệnh:
- Rồi xóa đi tập sasl_passwd chính để đảm bảo an toàn
- Tạo tập tin cacert.pem, copy từ:
/etc/ssl/certs/Equifax_Secure_CA.pem
- Sau đó kết thúc bằng việc, reload lại dịch vụ postfix và apache2
4 Tiếp theo là việc test mail, bằng cách vào hệ thống gửi thử mail, hoặc đơn giản là tạo một tập tin php đơn giản để gửi mail thử Tất cả nhật
ký gửi mail sẽ được lưu trong /var/log/mail.log, nếu có lỗi thì vào đây
để xem chi tiết
5 Lỗi về vấn đề mail thì xem ở mail.log, nhưng có một số vấn đề về server hay hệ thống của postfix thì postfix lại gửi mail thông báo cho mail root (mặc định root@gmail.com là system mail name mà lúc cài đặt postfix ta đã đặt) Để cấu hình Postfix, gửi những mail đó đến một email cụ thể của bạn (email của Admin), thêm dòng sau vào tập tin main.cf:
Tạo tập tin virtual trong postfix, có nội dung:
Lúc này, ta sẽ định tuyến lại các mail hệ thống đến email của bạn (vd:
myreview.tk@gmail.com)
Sau đó chạy lệnh:
Tuy rằng, Myreview có xác định người gửi bên trong ứng dụng nhưng khi gọi hàm mail() của php, thì tự động php sẽ vào php.ini tìm vào dùng email và password được thiết lập thông qua đường dẫn của postfix để xác thực, đồng thời dùng email xác thực đó là người gửi mail
Mô hình hoạt động mail của postfix (phụ lục 2)
postmap sasl_passwd
[smtp.gmail.com]:587 địa chỉ email đầy đủ:mật khẩu
virtual_alias_maps = hash :/etc/postfix/virtual
root@gmail.com <địa chỉ email muốn nhận thông báo>
sudo postmap /etc/postfix/virtual
Trang 342.3.2 Kiểm tra tình trạng gửi mail hay tin nhắn
Khi một mail hay tin nhắn được gửi, có thể sẽ gặp trục trặc trong vấn đề đường truyền hay một số cấu hình bên trong hệ thống Cần phải
có một thông báo là tin nhắn có được gửi hay không để người dùng, đặc biệt là chủ tịch hội thảo, vì gửi mail được dùng chủ yếu bởi người dùng này Còn tác giả cũng như người đánh giá, cũng sẽ nhận thông báo mail xác nhận thành công bị lỗi, tuy nhiên sẽ có một tin nhắn xác nhận trên trang web là đã gửi thành công
Mail hay tin nhắn đều phải thông sendAction(), đây là một action quản lý toàn bộ việc gửi mail trong MailController
Đoạn code trên, là trường hợp gửi mail cho một người nào đó của Myreview Kết quả là khi mail lỗi nó vẫn báo là gửi mail thành công Trước tiên cần vào hàm mail gửi mail chính dùng mail() của php, bên trong lớp Mail của thư mục Model để thêm phải trả về của việc gửi mail
Tiếp tục vào hàm send() của lớp Mail này, thêm các câu lệnh trả về cho việc thực hiện sendmail() Lúc này, khi dùng gọi hàm send() của Mail từ sendAction(), nó sẽ trả về kết quả là true khi mail gửi thành công và false khi mail bị lỗi
2.3.3 Tiện ích soạn thảo
Là một thư viện Jquery có sẵn trên mạng, là công cụ soạn thảo với các tùy chọn đơn giản của MS Word như: canh lề, in đậm, in nghiêng, gạch dưới, màu chữ, màu nền, icon,… Giúp cho nội dung tin nhắn trở nên thân thiện với người dùng
Trang 35Tuy nhiên, ở môi trường hệ thống quản lý hội thảo, thì việc cần có những tùy chọn này giúp nội dung tin nhắn có thể đánh dấu phần quan trọng, chứ không chỉ là một nội dung tin nhắn một màu bình thường Giúp người nhận có thể xác định nội dung chính ở đâu Và việc canh lề sẳn, sẽ làm cho nội dung dễ nhìn hơn Việc này rất có lợi cho người chủ tịch không có kiến thức chuyên môn vào web
Download thư viện ckeditor :
Đưa thư viện vào thư mục js trong thư mục gốc của hệ thống Chèn đoạn code script vào đầu tập tin form_mail trong template view của mail Đây tập tin mẫu sẽ được hiện khi ta dùng freemailAction()
Sau đó, chèn đoạn code gọi CKEditor vào bất kì đâu trong form_mail, ở p
lbar có thể thêm lựa chọn khác ngoài những lựa chọn bên dưới
2.3.4 Điều chỉnh giai đoạn nộp bài
Đếm từ
Khi tác giả gõ nội dung vào phần textarea thì javascript(js) sẽ bắt đầu đếm số từ để tác giả biết số lượng từ có hợp lệ hay không Tuy nhiên,
Trang 36phần đếm từ để kiểm tra số từ người dùng nhập vào ở mã nguồn hệ thống của Myreview không thể đếm chính xác văn bản tiếng Việt
Xét tập tin js, ghép số thứ tự từng phần trong cấu trúc tóm tắt vào thành một chuỗi để nó xác định được id chính xác của từng textarea (tiêu đề không đếm số từ), xác định xong thì nó sẽ tách chữ bởi „ ‟, sau đó đếm
từ Tuy nhiên, để phù hợp với yêu cầu đa ngôn ngữ có thể thay đổi phần hiển thị đếm từ đúng với ngôn ngữ mà ngừoi dùng chọn
Trong đó, {list_abstract_ids} là biến chứa chuỗi id của các đoạn textarea, cách nhau bởi dấu “;”
Khi nhập vào textarea thì hàm sumWords() được gọi, có kèm tham số là chuỗi {zmax.word}, được lấy từ CSDL dựa theo ngôn ngữ, nếu như lúc này người dùng chọn ngôn ngữ tiếng việt thì „{zmax.word}‟= „từ‟ Ở đây, để hổ trợ tiếng có số ít, số nhiều, thêm tham số {zmax.words}