Cài đặt chứng chỉ SSL Let’s Encrypt cho Nginx trên Ubuntu 16.04

Let’s Encrypt là 1 chứng chỉ SSL miễn phí được tài trợ bởi rất nhiều tên tuổi lớn của làng công nghê trên thế giới như Mozzila, Cisco, OVH, Chrome, Facebook … Trong những năm gần đây, việc Chrome của Google ngày càng gia tăng thị phần web browser trên thế giới cũng như Google đã xem SSL là 1 trong những tiêu chí đánh giá website đã làm cho SSL trở thành 1 trong những yếu tố quan trọng mà các webmaster muốn áp dụng nó cho website của mình.

Trong bài viết này mình sẽ hướng dẫn cách cài đặt Let’s Encrypt SSL cho Nginx trên server chạy Ubuntu 16.04

Cài đặt Let’s Encrypt

Đầu tiên bạn cần update lại Ubuntu và cài đặt Let’s Encrypt rất dễ dàng với dòng lệnh sau

Tạo chứng chỉ Let’s Encrypt SSL

Tiến hành chỉnh sửa file cấu hình mặc định của Nginx bằng cách

Trong block “server” thêm vào block “location” với nội dung như sau

Nếu bạn muốn biết thư mục gốc (document root) của Nginx ở đâu thì có thể tham khảo giá trị root ngay trong file cấu hình. Nếu bạn chưa chỉnh sửa cấu hình ban đầu của Nginx, thì mặc định document root là /var/www/html

Lưu lại thay đổi trên file cấu hình của Nginx rồi kiểm tra xem file đó có bị lỗi cú pháp hay không bằng cách

Nếu không có lỗi gì, thì hãy khởi động lại Nginx

Chạy lệnh sau để tiến hành khởi tạo chứng chỉ SSL cho domain của bạn

*** /var/www/html là thư mục mà bạn muốn trỏ domain tới, và example.com là domain của bạn (bạn có thể tùy chỉnh những giá trị này cho phù hợp với thực tế)

Một màn hình hiện ra yêu cầu bạn nhập email của bạn

Tiếp đến bạn hãy đồng ý với điều khoản của Let’s Encrypt bằng cách chọn Agree

Nếu mọi thứ ok không có gì trục trặc thì sẽ trả về kết quả như sau

(còn tiếp … :D)

Một số kinh nghiệm xử lý text bằng Linux command

1/ Merge all to single file

2/Trích keyword chứa từ cụ thể Ex: “car”

3/ Lấy keyword có chứa từ “car” dài 4 kí tự trở lên

Cài đặt LAMP trên Ubuntu 16.04

LAMP là 1 web stack thông dụng bao gồm 4 thành phần Linux, Apache, MySQL & PHP để host các trang web. Trong bài viết này các bạn sẽ làm quen với việc cài đặt LAMP trên server Ubuntu 16.04

1/ Trước khi bắt đầu

Cập nhật lại Ubuntu server của bạn

2/ APACHE

a) Cài đặt và cấu hình Apache

Trước tiên bạn cần cài đặt Apache 2.4 từ Ubuntu repository

Sau đó bạn chỉnh file cấu hình của Apache /etc/apache2/apache2.conf, sửa cấu hình KeepAlive thành Off

Tiếp theo chỉnh lại cấu hình của module MPM của Apache tại /etc/apache2/mods-available/mpm_prefork.conf cho phù hợp với cấu hình server của bạn, tùy chỉnh bên dưới áp dụng cho server 2GB RAM (bước này bạn có thể bỏ qua cũng được)

Tắt module mpm_event sau đó bật module mpm_prefork

Sau đó bạn restart lại Apache để thay đổi có hiệu lực

b) Cấu hình Virtual Hosts

Bạn có thể cấu hình virtual hosts (trỏ domain) cho Apache bằng nhiều cách, tuy nhiên dưới đây là cách khuyên dùng. Những cấu hình dưới đây bạn hãy thay example.com thành domain của bạn.

Đầu tiên bạn hãy copy file cấu hình mặc định của Apache thành 1 file khác có tên dựa trên domain của bạn để dễ quản lý

Chỉnh sửa file example.com.conf vừa mới copy như nội dung bên dưới

Tạo 2 folders tương ứng cho site example.com

Tiếp theo bạn cần enable file virtual host mới vừa tạo để Apache có thể nhận được

*** Nếu muốn disable virtual host của 1 site, bạn có thể dùng lệnh sudo a2dissite example.com.conf

Bạn tắt luôn virtual host mặc định của Apache để bảo mật hơn

Sau cùng bạn reload lại Apache để mọi thay đổi ở trên có hiệu lực

3/ MYSQL

Cài đặt MySQL

Sau khi cài đặt bạn có thể login vào MySQL với quyền root

Sau khi login vào MySQL, nếu bạn muốn đổi mật khẩu của root bạn có thể làm theo cách sau (thay “password” bằng mật khẩu của bạn)

Để bảo mật hơn, bạn nên tạo 1 MySQL database mới và 1 MySQL user mới có quyền truy cập vào database đó. Ví dụ bên dưới là tạo database webdata, sau đó tạo 1 user webuser với mật khẩu là password có toàn quyền đối với database webdata (bạn có thể thay các giá trị như tên database, tên user và mật khẩu theo ý thích của bạn)

Sau khi mọi thứ đã xong, hãy thoát khỏi MySQL

4/ PHP 7.0

Cài đặt PHP 7 cùng các extension cần thiết để PHP tương tác được với Apache và MySQL

Một số extension của PHP bạn có thể cài đặt thêm nếu cần thiết (như cURL, JSON, CGI …)

Sau khi cài đặt PHP 7.0 bạn cần tùy chỉnh file /etc/php/7.0/apache2/php.ini để có hiệu suất tốt hơn cũng như dễ quản lý error log của PHP.

Tại log folder cho PHP và set quyền cho phép Apache được truy cập vào

Sau cùng bạn cần restart lại Apache để thay đổi có hiệu lực

5/ Test xem LAMP có hoạt động chưa

Đến bước này thì bạn đã cài đặt thành công LAMP trên Ubuntu 16.04, xin chúc mừng!

Tuy nhiên nếu bạn muốn kiểm tra mọi thứ xem có hoạt động đúng chưa, bạn có thể tiến hành bước test bằng cách tạo file /var/www/html/example.com/public_html/phptest.php

Dùng trình duyệt trên máy của bạn truy cập vào example.com/phptest.php, nếu hiện ra dòng ‘Connected successfully’ => điều này có nghĩa là việc cấu hình LAMP của bạn đã OK, không có gì sai sót.

 

Tự động backup source code + database của website bằng dòng lệnh Linux

Dạo này cũng hay nghịch bash script của Linux nên tôi cũng code được 1 file .sh giúp xuất database MySQL tự động và nén toàn bộ thư mục gốc của website thành file zip. Code cũng đang trong quá trình hoàn thiện các tính năng cao cấp hơn nên hiện tại chỉ vỏn vẹn 4 dòng thôi ????

*** Cách sử dụng: các bạn tạo thư mục bot trong thư mục gốc của website, sau đó tạo 1 file backup.sh trong thư mục đó với nội dung như sau:

Sau cùng mỗi lần chạy backup bạn chỉ cần vào thư mục bot và chạy đoạn code

20 dòng lệnh SSH thường sử dụng

Một số yêu cầu để bạn có thể kết nối SSH (đến VPS/Server Linux)

– Một SSH client như Putty (trên Windows) hoặc Terminal (môi trường dòng lệnh trên Mac/Linux)
– Một vps/server Linux với kết nối SSH đã được bật
– Một tách cafe nhâm nhi trong lúc chờ dòng lệnh chạy 😀
– Một máy tính có kết nối Internet (cái này là hiển nhiên rồi nhỉ :D)

Một số quy ước mà bạn cần nhớ

– Gõ phím Enter hay Return trên bàn phím sau mỗi dòng lệnh
– Thay domain.com bằng tên miền của bạn
– Thay xxx.xxx.xxx.xxx bằng địa chỉ IP server của bạn
– Thay tên file và các đường dẫn ví dụ bằng tên file và đường dẫn thật trên server của bạn.
– Nếu đường dẫn kết thúc là 1 dấu “/” thì nó là 1 thư mục
– Thư mục “/path/to/directory/” luôn kết thúc cuối cùng bằng dấu “/”
– File “/path/to/file” không có dấu “/” ở cuối
– File không nhất thiết phải có định dạng (extension) đi kèm (ví dụ .jpg, .txt …)

Các lệnh di chuyển và lấy thông tin file/folder

1/ Di chuyển đến thư mục khác

Ví dụ bạn muốn di chuyển đến thư mục download

2/ Di chuyển đến thư mục home

3/ Di chuyển đến thư mục cuối cùng mà bạn từng ở đó

4/ Di chuyển đến thư mục cha của thư mục đang đứng (ra ngoài 1 cấp)

5/ Hiển thị đường dẫn đầy đủ của thư mục đang đứng

6/ Hiển thị tất các file và thư mực trong thư mục đang đứng

7/ Hiển thị tất cả các file và thông tin kèm theo

8/ Hiển thị tất cả các file với định dạng kèm theo

Ví dụ

9/ Hiển thị toàn bộ file và thư mục với thông tin chi tiết kèm theo

10/ Thoát khỏi SSH client

Các lệnh quản lý file

11/ Copy (sao chép) và rename (đặt lại tên) file

Ví dụ: đổi tên file banner.jpg thành banner728px.jpg

Ví dụ: copy file banner.jpg vào thư mục ads

Ví dụ: copy file banner.jpg vào thư mục ads và rename thành banner728px.jpg

12/ Move (di chuyển) và rename (đặt lại tên) file

Ví dụ: di chuyển file banner.jpg vào thư mục ads

Ví dụ: di chuyển file banner.jpg vào thư mục ads và đổi tên thành banner728px.jpg

Ví dụ: di chuyển thư mục image vào trong thư mục media

Ví dụ: di chuyển thư mục image ra ngoài 1 cấp

13/ Xóa/remove file

Ví dụ: xóa file banner.jpg

14/ Xóa tất cả các file trong thư mục hiện tại

15/ Xóa tất cả các file kèm theo định dạng

Ví dụ: xóa tất cả file jpg trong thư mục hiện tại

16/ Copy (sao chép) thư mục với toàn bộ file và thư mục con trong nó

17/ Tạo thư mục

Ví dụ: tạo thư mục image

18/ Tìm file trong thư mục hiện tại

Ví dụ: tìm file banner.jpg trong thư mục hiện tại

19/ Tìm text trong file

Ví dụ: tìm chữ “sidebar” trong file index.php

20/ CHMOD – phân quyền truy cập cho file/folder

Một số kiểu phân quyền