🐔 “Ký sự NCSC” là chuyên mục bài viết về thời gian mình thực tập tại Trung tâm Giám sát An toàn Không gian mạng Quốc gia (National Cyber Security Center), thuộc Cục An toàn Thông tin, Bộ Thông tin và Truyền thông. Nghe tên Trung tâm thì khủng thế thôi, còn mình thì… gà, đến để “cục tác lá chanh”, học từ những bài học đơn giản nhất.
Trong chuyên mục này, mình sẽ chia sẻ những nhiệm vụ và bài tập mình đã trải qua, cũng như một vài kỷ niệm vui vẻ hay ho trong thời gian ở Trung tâm.
Bài viết này là phần cuối trong chuỗi 3 bài về làm một web PHP đơn giản. Bạn có thể đón đọc các phần trước tại đây:
Bước 1: Đưa code lên máy chủ
“Mày làm kiểu gì mà code lên server được là được”, anh tôi nói bí ẩn thế, khi tôi vẫn còn ú ớ với một bên là GUI, một bên là CLI. “Thậm chí copy paste sang cũng được.” Nhưng tôi thấy điều đó nghe không ổn lắm. Tra một hồi thì hay được gợi ý là sử dụng Secure Copy (scp), tôi không dùng nên không biết cụ thể, nhưng bạn có thể thử nhé.
Tôi nghĩ ra cách push cả đống code lên GitHub từ máy phát triển, rồi mở server, di chuyển đến thư mục Apache tôi cần và clone cả cái repo đó về qua Git CLI. VCS muôn năm!
Bước 2: Cấu hình web server
Công cuộc cấu hình lúc nào cũng khiến ta mệt mỏi nhiều gấp bội so với việc xắn tay áo lên làm việc chính. Ít nhất là với tôi – tôi gặp đủ thứ lỗi trên đời và hầu như luôn gặp lỗi ở các bước (đen thôi đỏ quên đi), chả bù cho máy mấy người làm tutorial, cứ cài đến đâu êm ru đến đấy.
Nếu chưa làm theo hướng dẫn như ở bài đầu, dưới đây là cái tutorial để bạn làm lại:
Install and Configure Apache | Ubuntu
Chủ yếu nếu Apache có lỗi gì thì đa phần là do chúng ta config nó sai, chứ không phải tại nó bựa. Nếu như có bài học gì sau 3 năm cày IT thì với tôi đấy là “Tiên trách kỷ, hậu trách kỷ lần nữa – chứ đừng trách tool.” (Sau cái hậu đó mà vẫn không chạy thì bạn cứ chửi tool đi cho bõ tức…
Nhớ khởi tạo database với SQL script bạn đã sinh ở phần trước, sau khi đã setup MySQL nhé.
Bước 3 – Thiết lập kết nối
Sau khi khởi động thành công máy chủ ảo, bạn có thể bắt đầu kết nối tới nó qua terminal:
ssh localhost
Sau đó truy cập địa chỉ http://localhost
qua trình duyệt của bạn để thấy được web mà cái máy chủ này đang host. Bước này tương tự như sử dụng XAMPP mà chúng ta đã bàn tới ở bài viết trước.
Port mặc định là 20, nhưng bạn kiểm tra kỹ xem máy của bạn config như thế nào nhé.
Troubleshooting
Tôi dùng VirtualBox. Chẳng hiểu sao Network adapter của nó hay gặp vấn đề, khiến cho tôi không thể kết nối đến server được. Sau các thứ công cuộc StackOverflow và viện tới cả sự trợ giúp của các anh chị trong phòng, tôi liệt kê ra một danh sách những thứ bạn có thể thử nếu gặp phải trường hợp này:
- Cập nhật hết mọi thứ có trong server. Cứ
sudo apt update
vàsudo apt upgrade
quen thuộc mà chạy. - Kiểm tra xem các thành phần cần có cho web đã được bạn cài cắm đầy đủ chưa.
- Ở mục cài đặt “Network” cho máy ảo, hãy tạo 2 kết nối – một kết nối NAT và một kết nối Bridge. Nếu NAT không dùng được thì chuyển sang Bridge.
- Tắt tường lửa cho cả hai bên (máy development và server). Ở bên server, bạn có thể tắt tường lửa bằng lệnh
ufw disable
, và kiếm tra trạng thái của nó bằngufw status
. - Lấy địa chỉ IP của máy với
ifconfig
. - Kết nối tới máy qua lệnh
ssh <IP_ADDRESS>
trong đóIP_ADDRESS
là địa chỉ IP bạn lấy được ở trên. - Terminal sẽ hỏi là có muốn “Add to list of known host” hay không. Hãy chọn “Có” để tiếp tục.
Sau đó thì mọi thứ sẽ bình thường, trừ phi bạn gặp phải cái lỗi gì đó nữa mà tôi cũng bó tay. Tôi chúc bạn may mắn, hoặc bạn đập đi cài lại cái khác, ví dụ như VMWare chẳng hạn… Tôi dành quá nhiều thời gian cho nó, nên theo định lý chi phí chìm*, tôi cũng chẳng nỡ bỏ nó đi – nên mới ngoan cố đến vậy thôi.
Nhớ là cứ hỏi ầm lên, đừng ngại. Đừng như tôi, bị sếp mắng cho là “Sao không hỏi?”, mãi sau này mới sáng mắt ra.
*Định lý chi phí chìm (Sunk Cost Fallacy): Một định lý nổi tiếng trong Kinh tế học, chỉ xu hướng tiếp tục đầu tư vào một dự án hoặc hoạt động bất chấp những bằng chứng cho thấy nó không còn hiệu quả hoặc khả thi. Xu hướng này xuất phát từ tâm lý tiếc nuối khi đã bỏ ra một khoản tiền hoặc nỗ lực đáng kể cho một thứ gì đó.