Thứ Tư, 25 tháng 11, 2015

CDN là gì và khi nào nên dùng CDN cho website

Thuật ngữ CDN có thể bạn sẽ bắt gặp khá nhiều bài viết trên thachpham.com, hoặc khi bạn cần một người có kinh nghiệm tư vấn giải pháp tiết kiệm băng thông máy chủ và tăng tốc độ website đều sẽ được nghe tư vấn là sử dụng CDN. Vậy CDN chính xác là cái gì, có bao nhiêu loại CDN, và website của bạn có thích hợp để sử dụng CDN không thì bài này sẽ cung cấp cho bạn các thông tin cần thiết đó.

cdn-map

CDN là chữ viết tắt của Content Delivery Network và tốt nhất là đừng cố dịch sang tiếng Việt mà nên hiểu theo nghĩa tiếng Anh để tránh lệch lạc, hoặc nếu hiểu thì bạn nên dịch sang nghĩa là “mạng phân phối nội dung” sẽ ok hơn. Nghĩa là nó là một hệ thống máy chủ trên toàn cầu (số lượng tùy theo mỗi nhà cung cấp dịch vụ) làm nhiệm vụ lưu bản sao của các nội dung tĩnh bên trong website, sau đó phân tán nó ra nhiều máy chủ khác (được gọi là PoP – Points of Presence) và từ các PoP đó nó sẽ gửi tới cho người dùng khi họ truy cập vào website.

Trước tiên, chúng ta xem qua mô hình khác nhau giữa một website không sử dụng CDN và một website có sử dụng CDN.

Khi người dùng xem một tập tin mà không có CDN, nghĩa là họ đã gửi một request thẳng đến máy chủ chứa website để truy cập tập tin đó. Ví dụ liên kết này của thachpham.com là truy cập thẳng vào máy chủ của thachpham.com.

Trước khi sử dụng CDNTrước khi sử dụng CDN

Khi một tập tin được phân phối bởi CDN, người dùng truy cập vào nó thì PoP phân phối gần nhất so với người dùng sẽ trả nội dung về cho người dùng xem. Ví dụ bạn truy cập vào liên kết này là xem một nội dung của thachpham.com trên CDN, ví dụ bạn ở Việt Nam thì PoP CDN tại Việt Nam sẽ phân phối nội dung cho bạn.

with-cdnSau khi sử dụng CDN

Khi sử dụng một số dịch vụ CDN (không tính CloudFlare hay các dịch vụ proxy CDN tương tự) thì bạn sẽ thấy họ có hỗ trợ một số kiểu sử dụng CDN bao gồm:

Kiểu này nghĩa là bạn khai báo tên miền của website cần sử dụng CDN hoặc IP của máy chủ. Sau đó các PoP CDN sẽ tự động truy cập tới website theo tên miền đó và tự lưu lại bản sao toàn bộ nội dung tĩnh bên trong website (các hình ảnh, tập tin CSS, tập tin Javascript, Flash, Video,….). Và sau đó bạn có thể truy cập một tập tin nào đó trên website với đường dẫn CDN mà họ cung cấp hoặc sử dụng một tên miền riêng cho CDN. Ví dụ:

Tập tin gốc: http://thachpham.com/wp-content/uploads/2015/11/with-cdn.pngTập tin CDN: C:\Program Files (x86)\CartyStudios Corporation\Auto Blogging Software\data\test autoblog samurai\tp\CDNlagivakhinaonendungCDNchowebsite\with-cdn.png

Cái này có thể được gọi với nhiều cái tên khác nhau. Nhưng nó có một điểm chung là thay vì các PoP CDN sẽ tự thu thập nội dung ở website thì bạn sẽ tải thẳng các nội dung cần phân phối qua CDN lên máy chủ của họ qua các giao thức phổ biến như FTP hoặc HTTP. Thường thì hiện nay họ hỗ trợ FTP là nhiều nhất.

Và với phương thức phân phối này, bạn sẽ có thể tiết kiệm được không gian lưu trữ trên máy chủ vì không có lưu gì ở đó cả.

Mặc dù các kiểu CDN ở trên đều có hỗ trợ tập tin video nhưng nó lại không hỗ trợ phát live trực tiếp video (streaming). Vì vậy phương thức này sẽ giúp CDN phân phối nội dung streaming từ máy chủ và sau đó nó phân phối lại cho người dùng xem để tiết kiệm băng thông từ máy chủ streaming gốc. Hoặc bạn có thể lựa chọn cách tải thẳng nội dung streaming lên máy chủ CDN giống như Push CDN.

Như vậy sau khi bạn hiểu qua về cách hoạt động của CDN thì bạn sẽ nhận thấy rằng nó có các ưu điểm là:

Băng thông từ mạng của máy chủ gốc chỉ tốn một lần xử lý đó là chấp nhận request từ các PoP CDN, sau đó các lượt truy cập từ người dùng sẽ chỉ truy cập vào nội dung trên CDN nên máy chủ gốc sẽ không tốn thêm. Chỉ khi nào bạn tiến hành xóa các bản lưu nội dung trên CDN thì các PoP CDN sẽ tiến hành lấy nội dung lần nữa thì mới tốn thêm.

Do tính chất các PoP CDN trải dài trên khắp các châu lục nên nó sẽ giúp website bạn truy cập nhanh hơn đối với các người dùng ở xa máy chủ của website. Ví dụ thachpham.com đặt máy chủ ở Mỹ mà nếu truy cập trực tiếp để xem một hình ảnh 300KB ở Việt Nam sẽ mất khoảng 0.5 giây (500ms). Thế nhưng nếu thachpham.com dùng CDN cho các nội dung tĩnh đó có hỗ trợ PoP tại Việt Nam thì người dùng chỉ mất 0.01 giây (10ms) để xem một tập tin, thậm chí còn nhanh hơn thế.

Tương tự với các người dùng ở quốc gia khác, CDN của ban càng có nhiều PoP ở nhiều quốc gia khác nhau thì càng có lợi trong việc tăng tốc website toàn cầu.

Nếu bạn có sử dụng phương thức Push CDN thì sẽ tiết kiệm được dung lượng lưu trữ cho máy chủ vì mọi thứ đã được upload lên thẳng máy chủ CDN. Tuy nhiên để an toàn bạn nên lưu lại nội dung ở một nơi nào đó đề phòng dịch vụ CDN có vấn đề.

Chi phí tiết kiệm ở đây là chi phí băng thông. Giả sử máy chủ hoặc gói host của bạn chỉ hỗ trợ một khoảng băng thông cho phép mỗi tháng nhất định thì khi hết bạn sẽ cần mua thêm hoặc nâng cấp băng thông. Giá băng thông thấy vậy chứ không hề rẻ, giá băng thông trung bình hiện nay trên một số nhà cung cấp host là khoảng 20.000 đồng cho mỗi GB, tương đương $0.88 rồi. Nhưng các dịch vụ CDN hiện nay đa phần sẽ có giá là khoảng $0.05 hoặc rẻ hơn, ở một số PoP Châu Á nếu có đắt hơn thì cao lắm cũng khoảng $0.1 cho mỗi GB băng thông. Vậy thì thay vì bạn mua thêm băng thông ở host thì hãy dùng CDN sẽ tiết kiệm hơn rất nhiều.

CDN có rất nhiều lợi ích khi sử dụng và nó là một trong những yêu cầu mà nhiều website phải sử dụng. Nhưng không phải website nào cũng cần thiết để sử dụng, mà CDN chỉ thật sự hữu ích khi:

Máy chủ của website đặt xa người dùng. Lượt truy cập lớn tốn nhiều băng thông. Có nhiều lượt truy cập trên nhiều quốc gia khác nhau. Khi sử dụng kỹ thuật Load Balancing FailOver.

Như mình đã nói ở trên, trong nhiều trường hợp bạn không cần thiết phải dùng CDN vì không những nó không giúp website nhanh hơn mà còn chậm hơn. Và một trong những lý do phổ biến nhất là máy chủ của website đặt ở gần người dùng. Ví dụ bạn có máy chủ tại Việt Nam và phục vụ người dùng tại Việt Nam, nhưng bạn sử dụng CDN mà nếu CDN đó không có PoP tại Việt Nam thì website bạn sẽ chậm hơn vì lúc đó người dùng của bạn sẽ truy cập ở các PoP khác xa hơn so với máy chủ gốc hiện tại nên thành ra chậm hơn.

Tương tự với dịch vụ proxy CDN như CloudFlare, website đặt ở máy chủ tại Việt Nam mà dùng nó thì người dùng ở Việt Nam sẽ vào chậm hơn so với bình thường.

Khi bạn tiến hành tìm chọn một dịch vụ CDN tốt và phù hợp để sử dụng lâu dài thì nên lưu ý đến hệ thống PoP của họ. Tốt nhất hãy nên ưu tiên chọn các dịch vụ CDN có hỗ trợ PoP ở quốc gia mà bạn có nhiều người dùng nhất. Ví dụ nếu bạn chọn CDN cho website Việt Nam thì nên ưu tiên các dịch vụ CDN có PoP tại Việt Nam như CDNSun, CDN. Net,…Mỗi nhà cung cấp đều có mục Network để bạn xem hệ thống PoP của họ nên lưu ý hãy xem cho kỹ trước khi sử dụng.

Ngoài ra, cái quan trọng thứ hai là giá cả và hình thức thanh toán. Các dịch vụ CDN hiện nay hỗ trợ hai kiểu thanh toán là dùng bao nhiêu trả bấy nhiêu (Pay-as-You-Go) hoặc trả phí cố định mỗi tháng để sử dụng theo gói. Nếu website bạn tốn không nhiều băng thông thì nên chọn hình thức thanh toán là pay-as-you-go sẽ tiết kiệm hơn vì mua theo gói có khi bạn không dùng hết.

Lưu ý cuối cùng là tốc độ, cái này bạn có thể kiểm chứng qua việc dùng thử dịch vụ và tiến hành ping tới địa chỉ CDN bằng dịch vụ CA App Synthetic Monitor để xem nó có thật sự tối ưu tốc độ không. Hoặc bạn có thể tham khảo qua các bài đánh giá CDN trên mạng.

Đây là dịch vụ proxy có hỗ trợ CDN miễn phí khá phổ biến. Nếu như website của bạn đặt host tại Mỹ hoặc Châu Âu thì dịch vụ này sẽ giúp bạn tối ưu tốc độ website rất nhiều dành cho các lượt truy cập tại Việt Nam.

Nó không giống như dịch vụ CDN đơn thuần mà mình trình bày ở trên, bạn không thể sử dụng domain riêng cho CDN và không thể tải nội dung lên máy chủ CDN của họ nhưng nó sẽ hoạt động bằng cách sử dụng một lớp proxy trung gian cho tên miền. Khi người dùng truy cập vào website của bạn thì họ sẽ đi qua một lớp proxy và ở đó nó đã có sẵn CDN để phân phối nội dung trong trang, đường dẫn website không thay đổi.

Đây là một dịch vụ đặc biệt dành cho người dùng WordPress có cài plugin JetPack. Nó sẽ tự đưa các tập tin hình ảnh trên website về máy chủ CDN của Photon và phân phối cho người dùng để tiết kiệm băng thông và thời gian tải trang.

Đây là dịch vụ CDN dành cho các thư viện Javascript. Ví dụ thay vì bạn tự host tập tin jquery.js của thư viện jQuery thì có thể dùng liên kết CDN của jsDelivr. Hiện tại nó hỗ trợ tới hơn 1650 thư viện khác nhau, hầu như mọi thư viện Javascript phổ biến đều có ở đó. Cách sử dụng đơn giản là nhúng tập tin Javascript tới liên kết của họ thay vì tự host.

Nếu bạn là người dùng WordPress thì có thể cài plugin này để nó tự thay đổi các thư viện Javascript đang dùng trong website sang liên kết CDN.

Cũng giống như jsDelivr, bạn có thể sử dụng các liên kết thư viện Javascript trên máy chủ CDN của Google để tiết kiệm băng thông.

Amazon CloudFrontMaxCDNCDN77Akamai CDNCacheFlyCDN. NetCDNSun (có hỗ trợ PoP tại Việt Nam)KeyCDNCDN. Com. Vn (chỉ có PoP tại Việt Nam)EdgeCastCDNlionSoftLayerWPPronto

Về cách dùng CDN thì rất đơn giản, đó là sau khi tiến hành tạo dịch vụ CDN thì bạn chỉ cần sửa đường dẫn gốc của nội dung tĩnh trên website sang đường dẫn nội dung của CDN. Ví dụ:

Đổi thành:

Và nếu dùng WordPress thì có rất nhiều plugin hỗ trợ tự đổi như WP Super Cache, W3 Total Cache, CDN Enabler,…

Ngoại trừ một số dịch vụ proxy CDN như CloudFlare hay Incapsula thì không cần đổi gì cả vì vốn tên miền đã được request thông qua CDN vì bạn đã trỏ DNS của tên miền sang dịch vụ của họ.

Trong bài này có lẽ là mình đã trình bày khá chi tiết về CDN rồi nên mình nghĩ chỉ bấy nhiêu thôi là đã quá đủ để bạn hiểu về CDN rồi. Thực tế hiện nay người làm website ở Việt Nam ít khi lựa chọn các dịch vụ host tại Việt Nam vì nhiều lý do tế nhị nên nhu cầu sử dụng CDN cũng khá cao. Hy vọng sau khi có kiến thức thêm về CDN, bạn sẽ biết mình có nên sử dụng CDN hay không và hiểu về nó theo cách đúng nhất.

.
This post was made using the Auto Blogging Software from WebMagnates.org This line will not appear when posts are made after activating the software to full version.

Thứ Năm, 12 tháng 11, 2015

[Woocommerce] Sửa lỗi không thêm hàng vào giỏ cho ngôn ngữ tiếng Việt

Trong lần cập nhật phiên bản của Woocommerce mới đây, mình thấy rất nhiều bạn đăng câu hỏi lên hoidap.thachpham.com về lỗi không thể thêm hàng vào giỏ nếu bật tính năng tự chuyển về trang giỏ hàng khi dùng ngôn ngữ tiếng Việt.

Sau nhiều lần tìm kiếm giải pháp thì mình cũng đã được WooThemes trả lời và chỉ ra điểm bị lỗi tại đây.

Như tác giả trả lời, vấn đề xảy ra với chuỗi ký tự “%s has been added to your cart” được dịch sang tiếng Việt. Và khi có ký tự tiếng Việt vào đây thì nó đã vô tình xung đột với tính năng loại bỏ các ký tự đặc biệt bên trong code này. Vả lại, cũng do lỗi dịch thuật là họ thiếu chữ s trong cặp ký tự %s.

Do vậy, trong khi chờ đợi Woocommerce ra bản vá lỗi thì nếu bạn muốn sửa lỗi này đi thì chỉ đơn giản là sửa lại chuỗi tiếng Việt của từ đó mà thôi.

Cách làm là bạn cài plugin Loco Translate vào. Sau đó vào Loco Translate -> Manage translations và tìm đến ngôn ngữ tiếng Việt của Woocommerce.

fix-woocommerce-cart-01

Sau đó tìm chuỗi “added to your cart” rồi chọn chuỗi “%s has been added to your cart” và sửa thành “%s đã được thêm vào giỏ hàng”

fix-woocommerce-cart-02Cuối cùng là ấn nút Save ở phía trên và hoàn tất.

Chúc bạn thành công.

.

Cài đặt VestaCP để tạo host trên máy chủ Linux

https://www.youtube.com/watch?v=i6xuPU2Cyxc

VestaCP đã được mình nhắc đến trong bài Những control panel miễn phí tốt nhất cho máy chủ Linux vì tính chất dễ cài đặt, hỗ trợ nhiều chức năng quan trọng và đặc biệt là mình dùng trong vài tháng thì chưa thấy lỗi gì xảy ra nên mình nghĩ nó có thể là sự lụa chọn tốt để thay thế CWP vốn mình đã giới thiệu trước đó.

vestacp

VestaCP tuy gọn nhẹ nhưng lại có khá nhiều tính năng quan trọng để bạn có thể tự tạo ra cho mình những gói host cho chính mình hoặc thậm chí là cho khách hàng.

Hỗ trợ nhiều hệ điều hành khác nhau như RHEL/CentOS 5 và 6, Debian 7, Ubuntu 12.04 đến 14.04. Sử dụng Apache Webserver kèm với NGINX làm proxy để tăng tốc website. PHPMySQL / phpMyAdminDoveCotEximVsFTPDWebalizerRoundCubeHỗ trợ Backup/Restore cho người dùng

Và dĩ nhiên, mặc dù nói ra hơi thừa nhưng mà với VestaCP bạn có thể tạo ra các gói host để chạy WordPress như các gói host bình thường, có khi tốt hơn tùy theo chất lượng máy chủ của bạn.

Trước khi cài đặt VestaCP, bạn phải chắc chắn là cài trên máy chủ chưa được cài đặt bất cứ cái gì ngoại trừ hệ điều hành để tránh gây lỗi trong quá trình cài đặt.

Tham khảo: Những nhà cung cấp máy chủ/VPS Linux tốt nhất

Để cài đặt VestaCP, bạn chạy lệnh sau:

$ curl -O http://vestacp.com/pub/vst-install.sh$ bash vst-install.sh

Và đợi, nó sẽ hỏi bạn có muốn cài đặt VestaCP vào máy chủ hay không, ấn y và Enter.

Cài đặt VestCPCài đặt VestCP

Sau đó bạn nhập email của bạn vào vì email đó sẽ thiết lập email cho quản trị. Phần hostname, bạn có thể điền kiểu sv.domain.com hoặc để mặc định cũng được.

Sau đó bạn sẽ cần đợi khoảng 15 phút để nó cài đặt.

Sau khi cài xong thì nó sẽ cung cấp thông tin quản trị VestaCP cho bạn như hình dưới.

cai-dat-vestacp-02

Trong đó, tài khoản admin là tài khoản có quyền cao nhất, bạn sẽ sử dụng nó để quản lý các tài khoản con khác nếu có hoặc có thể thêm website vào.

Bây giờ hãy truy cập vào địa chỉ đăng nhập VestaCP là https://IP-của-bạn:8083 và dùng tài khoản admin đăng nhập vào. Lưu ý, nếu có thông báo cảnh báo HTTPS thì hãy bỏ qua nó.

Mặc định khi cài xong thì bạn sẽ có tài khoản admin để quản trị website và các thiết lập trong VestaCP. Nhưng nếu bạn cần tạo một tài khoản khác cấp nhỏ hơn chỉ để quản lý website thì có thể tạo ra. Cách tạo là bạn hãy truy cập vào phần User và ấn vào nút tạo.

vestacp-tao-user

Và nhập thông tin user cần tạo.

vestacp-tao-user-02

Và tất cả mọi người dùng đều sẽ đăng nhập qua địa chỉ https://IP-của-bạn:8083 hoặc có thể đăng nhập vào với giao thức FTP.

Trước tiên là đăng nhập vào VestaCP với tài khoản mà bạn cần thêm website. Sau đó vào phần Web và ấn nút thêm.

vestacp-them-website

Và sau đó, các bạn trỏ tên miền của website vừa thêm về địa chỉ IP của máy chủ là nó chạy được. Còn lại các bạn tự mò nhé, dễ thôi.

Mặc dù VestaCP có hỗ trợ địa chỉ DNS của riêng bạn nhưng ở đây mình sẽ hướng dẫn bạn cách trỏ tên miền về host sử dụng VestaCP. Còn cách đăng ký DNS riêng thì bạn có thể làm thông qua nhà cung cấp Namecheap hoặc Godaddy vì họ có sẵn chức năng đó.

Và mình sẽ sử dụng dịch vụ DNS trung gian của CloudFlare để có thể sửa DNS linh hoạt hơn.

Xem thêm: Các thêm website vào CloudFlare.

Trước tiên, bạn nên thêm tên miền vào VestaCP như hướng dẫn trên.

Sau đó vào mục DNS, chọn tên miền bất kỳ và chọn List 11 Records.

vestacp-dns-rieng

Ở đây bạn sẽ thấy toàn bộ các bản ghi trong DNS mà bạn cần phải trỏ về. Bây giờ chúng ta sửa DNS của tên miền giống y hệt như vậy.

vestacp-dns-rieng-02

Thế là xong.

Khi tạo ra người dùng, thì bạn có thể đăng nhập vào FTP thông qua chính thông tin người dùng đó, cụ thể bạn có thể đăng nhập với thông tin như sau:

FTP Hostname: Địa chỉ IP hoặc domain đã trỏ về hoặc hostnameFTP Username: tên người dùngPassword: mật khẩu người dùngPort: 22

Khi vào đó, bạn truy cập vào thư mục web/ sẽ thấy thư mục của tất cả các domain đã thêm vào người dùng đó.

Việc sử dụng VestaCP chỉ có như vậy, còn lại các thao tác thì mình đã có nói rõ trong video hết nên mình nghĩ là nó cũng dễ sử dụng thôi. Nếu các bạn có thắc mắc gì thì hãy vào hoidap.thachpham.com để mình và mọi người hỗ trợ thêm nhé.

.

Cài đặt SSL và giao thức HTTP/2 cho NGINX trên CentOS 7

Bài viết này thuộc tác giả Công Hải của Vietstar. Net gửi đến độc giả thachpham.com.

Trong tháng 2 vừa qua, một kiểu giao thức web mới vừa được IESG chấp thuận mang nhiều tính năng vượt trội hơn, giúp website tối ưu tốc độ hơn đó là giao thức HTTP/2. Vậy thì HTTP/2 là gì, nó có những ưu điểm nào thì trong bài này, tác giả Công Hải tại VietStart. Net sẽ giới thiệu và hướng dẫn các độc giả tại thachpham.com cách cài đặt nó vào máy chủ Linux sử dụng CentOS 7.

HTTP (Hypertext Transfer Protocol) là một giao thức truyền chuẩn về mạng (truyền tải siêu văn bản – nói nôm na là giao thức web). HTTP 1.1 ra đời vào năm 1997 và vẫn được sử dụng đến hiện tại mà chưa hề có một nâng cấp nào. Có lẽ đã quá cũ nên vào 12/2014 nhóm phát triển của Hypertext Transfer Protocol đã đề xuất lên IESG xem HTTP/2 như là một tiêu chuẩn mới. Và đã được IESG chấp thuận vào ngày 17/02/2015.

HTTP 2 phát triển dựa trên SPDY (pronounced speedy) một giao thức mạng mở được phát triển bởi Google.

Có thể bạn cần:

Sự khác biệt thì rất nhiều nhưng mình tóm lại sự khác biệt lớn nhất giữa 2 giao thức là: HTTP2 hỗ trợ các truy vấn ghép, nén nội dung, ưu tiên và quản lý thông minh hơn các luồng dữ liệu. Điều đó gây ra việc giảm độ trễ và tăng tốc tải nội dung web.

HTTPS (Hypertext Transfer Protocol Secure) là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet.

Hiện có rất nhiều bài hướng dẫn cài đặt SSL nhưng thật sự rất ít bài làm đúng. Ngay cả tinhte.vn cũng chưa thực sự cài đúng.

Các bạn có thể test SSL của website tại: https://www.ssllabs.com/ssltest/index.html

Kết quả test của tinhte.vn.

ssl-report-tinhte

Kết quả test của vietstar.net.

ssl-report-vietstar

Nên hôm nay, mình sẽ hướng dẫn bạn cài đặt và cấu hình HTTPS với HTTP2 lên chuẩn A+.

Ngày 22/09/2015 vừa rồi NGINX đã ra phiên bản mainline 1.9.5 chính thức hỗ trợ HTTP 2, và từ này chính thức say goodbye SDPY một thời hùng hậu. Như vậy, điều này có nghĩa là bạn chỉ có thể sử dụng HTTP 2 trên NGINX phiên bản 1.9.5 trở lên, nếu bạn đang dùng NGINX thì hãy gõ nginx -v để kiểm tra phiên bản NGINX hiện tại của bạn.

Nếu bạn đang dùng Centminmod, thì từ phiên bản Centmin Mod 1.2.3-eva2000.09 beta đã hỗ trợ NGINX 1.9.5.

Để cài NGINX 1.9.5, bạn cần nạp package vào. Hãy tạo file /etc/yum.repos.d/nginx.repo và chèn đoạn dưới đây vào hoặc nếu có rồi thì sửa nội dung:

[nginx]name=nginx repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=0enabled=1

Sau đó cập nhật lại gói yum.

yum update -y

Và cài NGINX vào với lệnh sau:

yum install nginx

Sau khi cài đặt bạn kiểm tra lại có phải là version 1.9.5 và có module http 2 (--with-http_v2_module) bằng lệnh sau:

nginx -V

Sau khi cài đặt xong, hãy thiết lập NGINX sử dụng HTTP 2 bằng cách mở tập tin cấu hình NGINX của bạn tại /etc/nginx/conf.d và đổi phần listen 80 thành thế này:

server { listen 443 ssl http2; server_name domain.com www.domain.com; .}

Và bạn hãy tạo chứng chỉ SSL, sau đó upload lên server giống như bài này (trừ bước số 5 chúng ta sẽ sửa lại 1 xíu ở bên dưới)

Thiết lập chứng thực vùng nhớ (Session cache)

Điều này là khá quan trọng vì khi truy cập giao thức SSL thì lần đầu sẽ xử lý rất nặng và nhiều (Nên khi truy cập vào trang web https lần đầu tiên thường lâu hơn so với lần sau). Thiết lập này sẽ giúp NGINX nhớ session của user và  không cần chứng thực cho request kế tiếp.

ssl_session_cache shared:SSL:20m;ssl_session_timeout 180m;

Ý nghĩa dòng 1 là tạo vùng nhớ 20MB cho chứng thực SSL. Theo tài liệu của NGINX thì 1MB chứ 4000 session. Vậy 20MB tương đương với 80.000 Session (bạn có thể điều chỉnh cho phù hợp với nhu cầu server bạn).

Dòng thứ 2 là lưu nó trong 180 phút (3 tiếng) con số này phù hợp với khoảng thời gian User truy cập website bạn. Nếu website bạn cần bảo mật hơn thì có thể giảm con số này xuống nhưng KHÔNG NÊN giảm dưới 10 phút.

Vô hiệu hóa SSL

Có thể là bạn nói tôi khùng, đang setup SSL giờ là vô hiệu hóa nó.

Nói vậy thôi, chứ thực ra là thay thế SSL (Secure Sockets Layer) bằng TLS (Transport Layer Security). Vì thực tế là SSL còn nhiều điểm yếu hơn là TLS. Tuy nhiên IE6 không hỗ trợ TLS (nhưng chắc là IE6 đã quá cổ rồi, tìm cũng chẳng còn đâu).

Thêm dòng sau tiếp theo 2 dòng trên:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Tối ưu hóa Cipher Suites (Bộ mã hóa)

Trung tâm xử lý, mã hóa, giải mã của SSL/TLS là chổ này (tạm hiểu vậy vì mình không phân tích sâu vào cơ chế hoạt động của nó).

Khai báo NGINX bật bộ mã hóa:

ssl_prefer_server_ciphers on;

Khai bao danh sách các cơ chế mã hóa được chấp nhận:

ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5

Tạo ra các thông số DHParam

Tạo file DH (Diffie-Hellman) với 2048 bit (đủ chết cho những thằng muốn hack):

openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem

Sau đó thêm vào config dòng sau:

ssl_dhparam /etc/nginx/cert/dhparam.pem;

@Lưu ý: Nếu client của bạn dùng JAVA 6 trở xuống thì nên dùng 1024 bit thôi nhé 😀

Kích hoạt OCSP

OCSP (Online Certificate Status Protocol) được hiểu như là kiểm tra chứng thức của bạn với nhà cùng cấp SSL (theo bài tạo chứng chỉ SSL đây là COMODO). Tạo ra file Khai báo với NGINX của bạn đây là giấy thức bằng cách sử dụng lệnh sau:

cat AddTrustExternalCARoot.crt PositiveSSLCA2.crt > trustchain.crt

File AddTrustExternalCARoot.crt là file gốc, file PositiveSSLCA2.crt là file chứng thực trung gian có kèm theo trong file zip khi bạn mua SSL hoặc download của COMODO tại đây.

Tiếp theo là cấu hình NGINX stapling

ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/nginx/cert/trustchain.crt; resolver 8.8.8.8 8.8.4.4;

Ở đây là mình dùng qua DNS Google, bạn có thể dùng DNS nào khác mà bạn tin tưởng hoặc nhanh hơn.

Cấu hình Strict Transport Security

Sau khi server đã chứng thực xong thì trả về trình duyệt thời gian chứng thực được chấp nhận, trong thời gian này khi request trình duyệt không cần gửi chứng thực với Server nữa (Dó là lý do tại sao chỉ nặng lúc đầu).

Thêm dòng sau vào config file:

add_header Strict-Transport-Security "max-age=31536000" always;

Trong trường hợp chứng thực này được dùng cho nhiều subdomain thì sửa lại như sau:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

That All, chỉ thế thôi. Bạn save lại file và restart NGINX và có thể kiểm tra xem SSL của bạn được loại gì rồi nào?

Sau khi cấu hình xong bạn sẽ có file cấu hình NGINX của domain như thế này đây:

server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name your_domain.com; ssl_certificate /etc/nginx/cert/your_key.certchain.crt; ssl_certificate_key /etc/nginx/cert/your_key.key; ssl_session_cache shared:SSL:20m; ssl_session_timeout 60m; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; ssl_dhparam /etc/nginx/cert/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/nginx/cert/trustchain.crt; resolver 8.8.8.8 8.8.4.4; add_header Strict-Transport-Security "max-age=31536000" always; #add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Cấu hình của bạn ở dưới này …}

Sau đó bạn có thể kiểm tra server đã dùng HTTP 2 chưa bằng cách cài plugin HTTP/2 and SPDY indicator của Chrome.

http2-enabled

Thế thôi, rất đơn giản phải không nào? Nhìn chung cách cài đặt SSL và bật HTTP/2 cũng khá đơn giản, nó cũng giống như mình kích hoạt SPDY mà thôi nhưng chỉ khác là thay spdy thành http2 trong phần listen của tập tin cấu hình mà thôi. Nhưng ngoài việc đó, trong bài này bạn cũng đã biết thêm một vài kỹ thuật quan trọng để cấu hình SSL an toàn hơn để đạt chuẩn A+ tại SSLLabs.

Chúc các bạn làm thành công và đừng quên vào hoidap.thachpham.com nếu bạn cần hỗ trợ.

.

12 themes WordPress miễn phí tháng 9/2015

Đầu tiên mình xin gửi lời xin lỗi đến các độc giả do một tháng vừa qua mình không hề viết bài vì lo một số việc cá nhân cũng như chuẩn bị một số dự định mới cho thachpham.com. Nên mình hy vọng rằng điều đó không gây trở ngại nhiều đến việc theo dõi bài viết của các độc giả.

Sẵn dịp đây là đầu tháng, mình xin trở lại với bài viết trong loạt bài giới thiệu theme miễn phí tốt nhất mỗi tháng mà mình đã làm suốt hơn 3 năm phát triển thachpham.com. Cũng phải nói thêm rằng trong tháng vừa qua là lúc có khá nhiều theme có kiểu thiết kế đơn giản ra đời nên nếu bạn thích các theme như vậy thì quá tuyệt vời cho bạn, hãy cùng xem nhé.

libre-wordpress-theme

Libre là một theme mới đặc trưng cho những người yêu thích trường phái chuộng nghệ thuật Typography. Với đặc trưng là giao diện thể hiện bài viết nên nó sẽ không có tác dụng làm website gì khác ngoài một blog cá nhân (các theme của wordpress.com vốn là thế mà).

evision-corporate-theme

Như cái tên của nó – eVision Corporate là một theme kiểu one-page mô tả dành cho các doanh nghiệp cần một giao diện landing page để giới thiệu dịch vụ của họ. Tuy theme này là miễn phí nhưng nó bao gồm rất nhiều chức năng cần thiết như portfolio, testimonial, khung hiển thị dịch vụ,….

quality-theme

Quality gồm có hai phiên bản miễn phí và trả phí, dĩ nhiên là chức năng của bản trả phí sẽ nhiều và chuyên nghiệp hơn nhưng các bạn có thể xem link demo ở trên, đó là phiên bản miễn phí và đầy đủ các chức năng cần thiết cho một trang giới thiệu dịch vụ. Nếu bạn cần một màu sắc khác cho theme này, bạn có thể cài theme Quality Blue để thay màu hồng đỏ đặc trưng thành màu xanh dương nhé.

zincy-lite-theme

Thêm một lựa chọn khác cho giao diện làm website doanh nghiệp. Zincy Lite là phiên bản trả phí nhưng tất cả những gì bạn thấy trong demo là phiên bản trả phí nên không cần lo ngại là bị giới hạn chức năng khi cài vào. Đặc điểm nổi bật của theme này là hiển thị các thông tin với hiệu ứng và trang trí rất bắt mắt, phần portfolio tuyệt đẹp và hỗ trợ nhiều định dạng layout khác nhau.

luna-wordpress-theme

Luna là một theme dành cho blog và các trang tạp chí mình rất thích trong các theme miễn phí tháng này. Chức năng của nó thì không có gì ngoài việc hiển thị bài viết theo dạng lưới ngoài trang chủ, còn các trang category thì hiển thị với dạng danh sách nên nó khá nhẹ nhưng như thế có vẻ là đủ cho một blog rồi.

skrollr-theme

Đây là một theme khá độc đáo về lẫn giao diện và tính năng. Kiểu hiển thị của theme này rất phù hợp cho các website giới thiệu sự kiện hoặc hình ảnh vì nó sẽ hiển thị một ảnh to theo mỗi phần kèm theo chú thích. Mặc dù theme có vẻ hơi nặng để tải do sử dụng nhiều ảnh kích thước lớn nhưng dù sao nó vẫn đáng để sử dụng nếu bạn thật sự cần.

canyon-theme

Nhìn ảnh thì có vẻ nó là một theme doanh nghiệp nhưng thực chất đây là một theme dành cho blog nhưng nó có thêm phần header khá bắt mắt và 3 cột nội dung giới thiệu để bạn có thể viết những ghi chú trên đó. Còn lại nó giống như một theme blog thông thường với thiết kế phẳng.

publication

Publication là một theme blog đặc trưng đến từ WordPress.com với giao diện có thể là không còn gì tuyệt vời hơn cho một theme miễn phí. Đặc biệt theme này sẽ rất phù hợp với các blog về hình ảnh, du lịch vì nó hiển thị ảnh đại diện kích thước khá to khi vào xem bài viết và có thể gọi là điểm nổi bật khi xem bài.

cerauno-theme

Nếu bạn mong muốn tìm một giao diện cho blog của mình với kiểu thiết kế trải dài toàn trang, hỗ trợ nhiều cột sidebar thì theme này có thể dành cho bạn.

canard-theme

Lại thêm một theme blog đơn giản nữa đến từ Automattic, nếu nói sự khác biệt thì mình chỉ thấy điều khác biệt duy nhất nằm ở cái mục hiển thị bài nổi bật trên trang chủ, các phần khác thì giống như kiểu giao diện blog thông thường.

auberge-theme

Đây là theme được ra mắt tháng 8/2015 nhưng mình đã quên giới thiệu nó thì thật là uổng phí. Auberge là một theme miễn phí dành cho các nhà hàng, quán cafe được dùng để đăng catalog giới thiệu sản phẩm của mình cho thực khách tham khảo, tuy đơn giản thôi nhưng chức năng cần như thế là quá đủ.

twenty-sixteen-theme

Đây là một theme mặc định mới mà tương lai Automattic sẽ sử dụng nó cho các phiên bản WordPress tiếp theo. So với theme Twenty Fiffteen tiền nhiệm thì Twenty Sixteen có cách thiết kế phức tạp hơn một chút về bố cục nhưng màu sắc vẫn giữ tông đơn giản trắng đen. Hiện tại ngay bây giờ bạn đã có thể cài và sử dụng nó.

Đó là những theme WordPress miễn phí đẹp mà mình cho rằng đẹp nhất được ra mắt trong tháng vừa qua. Mặc dù không phải là tất cả nhưng mình cũng hy vọng với các theme này thì các bạn có thể tìm ra được cho mình một theme miễn phí đúng nghĩa phù hợp với nhu cầu của mình.

.

Làm việc với Git trên WordPress thông qua WP Pusher

https://www.youtube.com/watch?v=1QrZV5p6hiY

Git được biết đến như một công cụ hỗ trợ triển khai các sản phẩm theme/plugin từ localhost lên website nhanh và an toàn hơn, hoặc nó cũng có thể được ứng dụng trong việc hỗ trợ cập nhật các lần chỉnh sửa ở code trên website chính an toàn hơn bao giờ hết. Tại sao nó an toàn thì mình thử cho các bạn hình dung một mô hình thế này.

Code gốc ở localhost chỉnh sửa, test chạy thử thành công -> Deploy nó lên một máy chủ nào đó để thử nghiệm -> Chạy tốt -> Deploy nó lên máy chủ chính thức.

Như vậy bạn có thể thấy, chúng ta sẽ an toàn hơn khi không chạy code trực tiếp trên website chính mà sẽ chạy thử nghiệm trước. Nhưng vấn đề khi làm như vậy là chúng ta sẽ thao tác rất nhiều, hãy tưởng tượng bạn upload code thông qua giao thức FTP lên nhiều host khác nhau đã tốn thời gian kha khá rồi.

Nên học khi rảnh: Học sử dụng Git cơ bản

Và trong trường hợp này, chúng ta sẽ sử dụng Git để tiết kiệm thời gian hơn vì nó có thể hỗ trợ tự động phân tán mã nguồn của chúng ta sau khi cập nhật ra bao nhiêu máy chủ tùy thích, không cần phải thao tác lại nhiều lần và dĩ nhiên là hỗ trợ quản lý dự án tốt hơn.

Trong bài viết này, mình sẽ giới thiệu về plugin WP Pusher hỗ trợ chúng ta làm việc với Git trên website WordPress tốt hơn, cũng như cách ứng dụng của plugin này trong việc deploy website của mình mà không cần phải thao tác nhiều lần.

Trước khi sử dụng chính thức, mình khuyến khích các bạn nên thử nghiệm trên một website mới đã chạy trên host và một website mới ở localhost.

Khi thử nghiệm và nếu bạn làm theo bài này thì hãy chuẩn bị:

Một website mới chạy trên host. Vì phải chạy trên host thì dịch vụ kho chứa như Bitbucket hay Github mới kết nối được thông qua webhook. Một website mới chạy ở localhost. Một tài khoản Bitbucket miễn phí.

wp-pusher

WP Pusher là một plugin WordPress miễn phí (có loại trả phí) hỗ trợ website của bạn kết nối với kho chứa Git (respository) của plugin hoặc theme tại Github, Bitbucket và Gitlab để nó có thể tự động cập nhật thay đổi (hay còn gọi theo thuật ngữ của git là Pull) mỗi khi kho chứa được cập nhật mới (hay còn gọi là được push lên) từ một máy khách nào đó.

Nói theo cách dễ hiểu, không quan trọng là có bao nhiêu người cùng tham gia làm việc với kho chứa của bạn, mà chỉ cần mỗi khi kho chứa được cập nhật mới là code của bạn ở website cũng tự động cập nhật theo mà không cần phải upload thủ công qua cách nào đó.

Ở đây mình xin hướng dẫn chi tiết các bước để có thể sử dụng WP Pusher trên website bao gồm bước tạo kho chứa trên Github và commit nó lên nên có vẻ hơi dài dòng xíu.

Bây giờ bạn hãy đăng nhập vào https://bitbucket.org và tạo một kho chứa.

tao-repo-bitbucket-01

Và đặt thông tin của kho chứa, nhớ là không bật tính năng private repository (kho chứa riêng tư) lên vì WP Pusher miễn phí không hỗ trợ kho chứa riêng tư.

tao-repo-bitbucket-02

Ở bước này, mình khuyến khích các bạn nên cài phần mềm SourceTree vào để dễ thao tác hơn là lệnh. Sau khi cài xong, ấn nút Clone/New để bắt đầu tạo kho chứa.

tao-repo-sourcetree-01

Chọn tab Create New Repository, chọn repository type là Git và chọn thư mục cần làm kho chứa. Ở đây bạn có thể chọn một theme nào đó đã cài sẵn ở localhost, tốt nhất là không dùng theme mặc định để tránh bị trùng nhé.

tao-repo-sourcetree-02

Sau khi tạo xong, khoan hãy commit mà nên gắn địa chỉ remote của kho chứa từ Bitbucket vào để nó có thể push lên. Vào Repository -> Add Remote, sau đó ở tab Remotes thì ấn Add và điền thông tin kho chứa của bạn ở Bitbucket.

tao-repo-sourcetree-03

Sau đó chuyển qua tab Advanced rồi khai báo tên và email để có thể commit được.

tao-repo-sourcetree-04

Cuối cùng là commit và push nó lên Bitbucket.

tao-repo-sourcetree-05

Và vào Bitbucket, kiểm tra trong phần Source đã có mã nguồn chưa nhé.

tao-repo-sourcetree-06

Bây giờ bạn vào một website nào đó, tải plugin WP Pusher từ https://wppusher.com/#licenses và cài vào như một plugin thông thường.

Sau đó vào WP Pusher -> Bitbucket và nhập tài khoản của bitbucket của bạn vào.

wp-pusher-02

Sau đó vào Install Plugin hoặc Install theme để bắt đầu tải plugin hoặc theme của bạn từ Bitbucket về. Ở đây mình chọn theme.

wp-pusher-03

Ở chỗ nhập Theme repository bạn lưu ý là nhập với định dạng tên_user/tên_kho_chứa nhé. Các phần còn lại nếu bạn chưa hiểu thì để mặc định, phần Repository host nhớ chọn host chứa kho chứa phù hợp và đánh dấu vào Push-to-Deploy để website tự cập nhật code khi có ai đó push lên kho chứa.

Và sau khi cài xong, nếu muốn bạn có thể kích hoạt theme/plugin mới cài này vào.

Nhưng để kích hoạt tính năng Push-t0-Deploy, bạn phải làm một việc nữa là cấu hình cho kho chứa có thể kết nối với website đang cài WP Pusher để nó gửi tín hiệu thì nó mới tự cập nhật được. Bạn vào phần Plugin hoặc Theme trong WP Pusher, nhìn vào kho chứa của mình sẽ có địa chỉ token như hình.

wp-pusher-04

Copy nó và vào lại trang chủ Bitbucket, vào kho chứa của bạn và chọn Settings -> Integrations -> Webhooks.

wp-pusher-05

Rồi nhập địa chỉ webhook vào cùng với tiêu đề bất kỳ và thêm nó.

wp-pusher-06

Hoàn thành.

Bây giờ bạn mở code trong kho chứa của bạn lên, sửa một tập tin bất kỳ rồi commit và push nó thông qua SourceTree, sau đó vào website kiểm tra code sẽ thấy sự thay đổi. Cách dễ nhận biết nhất là thử đổi tên theme ở tập tin style.css rồi sẽ thấy trên website nó cũng sẽ thay đổi theo. Nếu bạn chưa hiểu thì xem video của mình ở đầu bài sẽ hiểu.

Nhìn chung plugin WP Pusher tuy bản miễn phí nó hơi hạn chế một số tính năng nhưng đó giờ mình sử dụng với các dự án nhỏ hoặc cá nhân thì chưa đến nổi phải cần nâng cấp lên trả phí vì các tính năng ở bản miễn phí là quá đủ rồi. Và với nó, bạn sẽ thấy việc thao tác với Git từ website trở nên dễ dàng hơn rất nhiều, và nó tối ưu hơn là cách deploy thông qua FTP thủ công mà lại nhiều rủi ro nữa.

.