Author: o2wp

  • Cách thiết lập SSH Key để quản lý GitHub

    Cách thiết lập SSH Key để quản lý GitHub


    Đây có lẽ là chủ đề mình viết sớm nhất từ những ngày đầu biết viết code nhưng đến tận hôm nay mới ngồi viết nó một cách chỉn chu nhất =)). Ngày ấy khi đi làm vì mục đích công việc nên mình phải thường xuyên chuyển đổi account cá nhân và công việc. Ban đầu, tần suất chuyển đổi không nhiều nên việc nhập usernamepassword cho từng account mỗi khi cần thao tác với các repo không gây khó khăn gì. Tuy nhiên, khi tần suất tăng dần thì thao tác ấy lại trở nên mất thời gian. Mình cần cái gì đó tự động hơn và chỉ cần thiết lập một lần và github sẽ tự động xác thực và nhận diện account cho các repo tương ứng và thật may mình đã tìm được chiếc chìa khóa mang tên SSH key.

    Chỉ cần gõ từ khóa “ssh key github” và ấn Enter thì sẽ thấy có vô vàn bài viết hướng dẫn về chủ đề này và hi vọng rằng sau phím Enter ấy, bài viết này có duyên được xuất hiện và giúp ích được cho các bạn ^^. Nào, giờ chúng ta cùng bắt tay thực hiện nhé.

    Checklist cần có:

    • GitBash terminal
    • Tài khoản github (Ở đây mình dùng 2 account GitHub riêng để hướng dẫn nhé)

    Các bước thực hiện:


    Tạo SSH key

    Ở bước này, chúng ta sẽ generate ra một cặp private key và public key trên máy tính cá nhân.

    Mở GitBash tại folder mà bạn muốn lưu cặp key được generate.

    Tips: Để dễ quản lý, mình recommend các bạn hãy tạo folder riêng để chứa nó tại /C/Users/<user_name>/.ssh. Và trong bài viết này, mình đã tạo và mở GitBash tại folder /C/Users/Minh TIen/.ssh/02_github

    Copy và paste đoạn text bên dưới, thay đổi email trong ví dụ thành email account GitHub của bạn:

    ssh-keygen -t ed25519 -C "your_email@example.com"

    Ấn Enter và sẽ có các câu hỏi sau xuất hiện:

    > Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):

    Chú thích: Đây là option để nhập file name cho các key, bạn có thể chọn tên tùy ý miễn sao thấy dễ nhớ là được sau đó ấn Enter và sẽ xuất hiện 2 câu hỏi bên dưới

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]

    Chú thích: Đây là option để bảo mật thêm cho key, mình thường để mặc định và ấn Enter

    Vậy là đã tạo xong một cặp ssh key cho tài khoản GitHub thứ nhất, lặp lại các bước trên để tạo tiếp cặp ssh key cho tài khoản GitHub còn lại

    Vậy là đã tạo đủ 2 cặp ssh key cho 2 account GitHub rồi, chúng ta hãy đến bước kế tiếp nhé.

    Add public key vừa tạo vào tài khoản GitHub


    Ở bước này, chúng ta sẽ copy public key (file có đuôi .pub) của cặp ssh key vừa tạo cho tài khoản GitHub tương ứng.

    Double click vào file có đuôi .pub và copy toàn bộ nội dung file

    Truy cập vào tài khoản GitHub của bạn và di chuyển đến phần Settings. Lúc này, bạn sẽ thấy sidebar bên trái có một menu SSH and GPG keys, hãy ấn vào đây, sau đó click tiếp vào button New SSH key

    Lưu ý: Các menu trong ảnh theo thời gian sẽ có thể thay đổi nếu GitHub thay đổi giao diện, vì vậy các bạn có thể tùy tình trạng UI để tìm ra nó nhé.

    Nhập các giá trị tương ứng vào các field, sau khi đã xong ấn Add SSH key

    • (1): Nhập tên title để dễ nhớ, ví dụ như bạn đang dùng laptop cá nhận thì để "Personal laptop"
    • (2): Chọn Authentication Key
    • (3): Paste nội dung của public key đã copy vào


    Lặp lại các bước trên cho tài khoản GitHub còn lại:

    Đã xong, giờ chúng ta chuyển qua bước tiếp theo.

    Thiết lập cấu hình cho file config shortcut


    Nhiệm vụ của chúng ta ở bước này là thiết lập file config để giúp xác định private key tương ứng với public key đã được thêm vào tài khoản GitHub ở các bước trên.

    Mở file config nằm tại thư mục /C/Users/<user_name>/.ssh, nếu file chưa tồn tại bạn có thể tự tạo file mới và thiết lập config theo cú pháp sau:

    Host {name}
    	HostName {IP or domain}
    	IdentityFile {path_file_rsa_private}
    	User {user_name}

    Chú thích:

    • Host: Alias (bí danh) để phân biệt giữa các tài khoản GitHub khác nhau
    • HostName: IP or domain của server (host), trong hướng dẫn này vì đang thao tác với server GitHub nên giá trị sẽ là github.com
    • IdentityFile: đường dẫn đến private key file đã được generate ở các bước trên và nó phải mapping với public key đã thêm vào account GitHub
    • User: username, khi dùng với Git thì mặc định sẽ là username sẽ là git.Và đây là file config hoàn thiện của mình:
    Host github-work
    	HostName github.com
    	User git
    	IdentityFile ~/.ssh/02_github/github-minhtien0410
    Host github-personal 
    	HostName github.com
    	User git
    	IdentityFile ~/.ssh/02_github/github-minhtien020900

    Tiếp theo, ta sẽ check nhanh thử phần thiết lập đã hoạt động chưa bằng lệnh ssh -T <User>@<Host>. Và bên dưới là lệnh test với cấu hình của mình:

    ssh -T git@github-work
    ssh -T git@github-personal


    Nếu có xuất hiện câu hỏi Are you sure you want to continue connecting (yes/no/[fingerprint])? thì bạn chỉ cần nhập yes.

    Nếu thấy hiển thị Hi <username_cua_ban>! You've successfully authenticated, but GitHub does not provide shell access. thì chúc mừnggg, phần thiết lập của chúng ta đã thành công 👏

    Clone repository với cấu hình đã thiết lập


    Ở bước này, ta sẽ thực hiện thao tác clone repository của mỗi account GitHub mà không cần phải nhập username và password thủ công nữa. Các bạn hãy tự tạo 2 repository cho mình, sau khi đã tạo xong giờ ta tiến hành clone chúng về.

    Lấy và copy URL của repository với các thao tác đã đánh dấu như trong hình:

    Thay giá trị github.com trong link đã copy thành giá trị Host tương ứng đã cấu hình ở các bước trên.

    Ví dụ: Trong phần thiết lập riêng ở trên của mình thì URL sau khi chỉnh sửa lại sẽ như sau:

    AccountHostURL của repo ban đầuURL của repo sau khi chỉnh sửa
    minhtien04102000github-workgit@github.com:minhtien04102000/demo-ssh-key-work.gitgit@github-work:minhtien04102000/demo-ssh-key-work.git
    minhtien020900github-personalgit@github.com:minhtien020900/demo-ssh-key.gitgit@github-personal:minhtien020900/demo-ssh-key.git


    Sau đó, tiến hành clone repo về với URL đã được chỉnh sửa:

    git clone git@github-work:minhtien04102000/demo-ssh-key-work.git
    git clone git@github-personal:minhtien020900/demo-ssh-key.git

    Lời kết


    Các step của bài hướng dẫn này được mình vừa viết vừa làm nên khả năng thành công là 99%, tuy nhiên sẽ vẫn có khả năng xảy ra một vài lỗi ngoài ý muốn, nếu gặp phải bạn hãy comment nhé, mình rất sẵn lòng hỗ trợ. Chúc các bạn thành công 💚

  • Cách cài đặt nhiều version PHP với XAMP

    Cách cài đặt nhiều version PHP với XAMP

    Nếu bạn là một lập trình viên php thì chắc hẳn không còn xa lạ với XAMPP, WAMPP … rồi nhỉ. Thế nhưng các bạn đã rơi vào trường hợp phải cấu hình nhiều version php cho mỗi dự án tương ứng chưa nhỉ. Và topic hôm nay mình sẽ trình bày các cấu hình nhiều version PHP trên XAMPP.
    Có khá nhiều bài hướng dẫn trên stack overflow về cách làm tuy nhiên nếu các bạn lười đọc Tiếng Anh hoặc đã thử qua nhưng vẫn chưa được thì hi vọng topic này có thể giúp các bạn giải quyết vấn đề.

     

    Vấn đề

    Vừa qua. mình có gặp trường hợp đó là 2 project đang làm cần sử dụng 2 version PHP khác nhau ( một cái cần dùng php 7.2 , một cái lại dùng php >=7.3). Tuy nhiên lúc cài XAMPP thì version php hiện tại trên máy đang mặc định là 7.2. Thế là khi chạy source yêu cầu php >=7.3 thì mình đã gặp lỗi bên dưới

    Hướng giải quyết

    Sau khi lùng sục cả chân trời góc bể, dạo chơi khắp stack overflow thì cuối cùng cũng tìm được
    câu trả lời khá chi tiết và dễ hiểu, mình xin trích dẫn câu trả lời đang đứng top sang tiếng Việt cho các bạn tiện tham khảo:

    Để sử dụng nhiều phiên bản php chỉ với một phiên bản xampp duy nhất, chúng ta có hai lựa chọn:

    1. Cấu hình cho mỗi project một phiên bản php nhất định.
    2. Cấu hình từng phiên bản php trên một port riêng biệt.

    Sau khi đã áp dụng cách đầu tiên thành công, mình sẽ hướng dẫn chi tiết các bước ở dưới!

    Các bước thực hiện

    Bước 1: Tải phiên bản php mà bạn muốn thêm tại php.net

    • Giải nén thư mục php vừa tải vào trong xampp, cùng cấp với thư mục php hiện có.Bởi vì dự án của mình cần version php >= 7.3 nên mình sẽ download php 8.1.8

      Lưu ý: Chỉ download phiên bản NTS (Non Thread Safe) bởi phiên bản Thread safe sẽ không có file php-cgi.exe

    Bước 2: Cấu hình file php.ini trong thư mục php vừa tải:

    • Vào trong thư mục php vừa tải, coppy file php.ini-development và đổi tên thành php.ini
    • Mở file php.ini vừa đổi tên bằng một editor bất kỳ ( notepad, notepad++ … )
    • Tiếp theo, hãy ấn tổ hợp phím Ctrl+F và tìm kiếm đoạn text sau: extension_dir = "ext" và uncomment dòng này bằng cách xóa dấu ; ở đầu dòng
    • Làm tương tự để uncomment cho các dòng dưới đây:
      • extension=curl
      • extension=ftp
      • extension=fileinfo
      • extension=mysqli
      • extension=openssl
      • extension=pdo_mysql

    Bước 3: Cấu hình apache

    Mở file httpd-xampp.conf bằng một trong hai cách:

    • Cách 1: Vào thư mục xampp đã cài, mở file httpd-xampp.conf bằng đường dẫn tên_ổ_đĩa/xampp/apache/conf/extra/httpd-xampp.conf

      Ví dụ: Mình lưu folder xampp tại ổ D thì đường dẫn sẽ là D:\xampp\apache\conf\extra\httpd-xampp.conf
    • Cách 2: Khởi động xampp, tại màn hình quản lí hãy click vào nút config sẽ hiện ra danh sách các file, hãy ấn chọn vào file httpd-xampp.conf. Xem chi tiết trong hình bên dưới

    Tiếp theo, thêm đoạn code sau vào cuối file httpd-xampp.conf, sau đó thay /php8_1"D:/xampp/php8_1/" thành tên folder và đường dẫn đến folder php của bạn

    ScriptAlias /php8_1 "D:/xampp/php8_1/"
    Action application/x-httpd-php8_1-cgi "/php8_1/php-cgi.exe"
    <Directory "D:/xampp/php8_1">
       AllowOverride None
       Options None
       Require all denied
       <Files "php-cgi.exe">
           Require all granted
       </Files>
       SetEnv PHPRC "D:/xampp/php8_1"
    </Directory>

    Ví dụ: Nếu tên thư mục php của bạn là php6_5 và đường dẫn thư mục là "C:/xampp/php6_5/" thì đoạn code sẽ là:

    ScriptAlias /php6_5 "C:/xampp/php6_5/"
    Action application/x-httpd-php6_5-cgi "/php6_5/php-cgi.exe"
    <Directory "C:/xampp/php6_5">
         AllowOverride None
         Options None
         Require all denied
            <Files "php-cgi.exe">
                Require all granted
            </Files>
            SetEnv PHPRC "C:/xampp/php6_5/"
     </Directory>
    

    Bạn có thể cấu hình nhiều version khác không giới hạn bằng cách lặp lại bước 1 đến bước 3

    Bước 4: Cấu hình project để chạy với version php tương ứng

    Thêm đoạn code sau vào cuối file httpd-xampp.conf, sau đó thay D:\xampp\htdocs\vhosts\8-test-version-phpapplication/x-httpd-php8_1-cgi thành đường dẫn đến project của bạn. Xem hình bên dưới để nắm rõ hơn

    <Directory "D:\xampp\htdocs\vhosts\8-test-version-php">
       UnsetEnv PHPRC
       <FilesMatch "\.php$">
           php_flag engine off
           SetHandler application/x-httpd-php8_1-cgi
       </FilesMatch>
    </Directory>
    

    Ví dụ: Nếu project của bạn nằm trong thư mục C:\xampp\htdocs\vhosts\8-test-version-php thì đoạn code sẽ như sau:

    <Directory "C:\xampp\htdocs\vhosts\8-test-version-php`">
           UnsetEnv PHPRC
           <FilesMatch "\.php$">
               php_flag engine off
               SetHandler application/x-httpd-php6_5-cgi
           </FilesMatch>
    </Directory>
    

    Cuối cùng, khởi động lại xampp và tận hưởng thành quả

    Một số lưu ý

    Mình sẽ liệt kê một số lỗi đã gặp trong quá trình cấu hình để các bạn tham khảo và tránh:

    • Lỗi Access forbidden : Lỗi này là do đường dẫn thư mục bị sai. Lúc trước, khi sử dụng wampserver mình có lầm tưởng rằng, khi cấu hình virtualhost thì đường dẫn trỏ đến project nằm ở đâu cũng được. Tuy nhiên, với xampp thì bắt buộc project phải nằm trong thư mục xampp/htdocs.

    Nếu không chỉ định project chạy với version php nào thì mặc định version php trong biến môi trường (Enviroment Variable) sẽ được chọn

  • Hướng dẫn đồng bộ ghi chú từ Obsidian lên WordPress

    Hướng dẫn đồng bộ ghi chú từ Obsidian lên WordPress

    Vài lời vu vơ

    Chào mọi người, dạo gần đây mình có tìm được một công cụ khá hay giúp chúng ta ghi chú, lưu trữ những thông tin, suy nghĩ của bản thân trong quá trình học tập, làm việc. Công cụ này có tên là là Obsidian (Đá hắc hóa), cái tên thôi cũng đủ thấy ma mị nhỉ ><“. Mọi người cùng chiêm ngưỡng em nó nhé

    Chỉ cần gõ vài dòng lên google là thấy có không ít những video, review về nó và trong số đó không quá khó để thấy những lời khen có cánh dành cho ứng dụng này. Ban đầu mình cũng nghĩ chỉ là “seeder” thôi, nhưng khi tập tành tiếp cận thì thấy “dính dính” thật. Ngay tại thời điểm viết bài này thì mình cũng chỉ sử dụng được 10 ngày thôi nên mọi người chờ một thời gian đủ “chín” để mình lên bài review từ cảm nhận bản thân nhóa 🤣 (hi vọng ko đứt gánh giữa đường)

    Trong quá trình tiếp cận em “Đá tím” này mình có suy nghĩ rằng liệu có thể sử dụng nó như một nơi tập viết blog, cứ viết đi viết lại cho đến khi ưng ý thì sync một phát lên ngay blog cá nhân bằng WordPress một cách nhanh chóng mà không cần phải coppy paste hay gõ lại từ đầu không và thật may mắn, cộng đồng của em “Đá tím” này cũng có ý tưởng giống mình và họ đã tạo ra một em hàng tuyệt vời mang tên WordPress plugin.

    Nào, bắt tay vào thực hiện cùng mình thôi 🤝

    Những thứ cần có

    Trước khi bắt đầu các bạn cần kiểm tra check list yêu cầu này trước nhé:

    • Một trang blog bằng WordPress
    • Đã cài Obisidian

    Các bước thực hiện

    Add mới một user trên trang wordpress của bạn

    • Vào menu Users => Add User và tạo một user mới với role Author
    • (1): Click vào đây để điều hướng đến màn hình thêm user
    • (2): Điền các thông tin cho user tại đây, lưu ý nên nhớ usernamepassword để sử dụng cho bước sau
    • (3): Chọn role cho account mới là Author
    • (4): Sau khi đã điền đủ thông tin, click để thêm user

    Note: Bạn có thể hoàn toàn sử dụng tài khoản hiện có của mình, tuy nhiên để tốt bạn cần tạo user mới chuyên dùng cho nhiệm vụ này

    Cài đặt và config authentication plugin

    Install plugin tại đây hoặc install trực tiếp từ trang quản lý Plugins trong màn hình quản trị của WordPress

    Vậy là xong bước config để cho phép connect từ Obsidian vào WordPress. Giờ đến bước tiếp theo thôi

    Cài đặt WordPress plugin cho Obsidian

    Thao tác theo ảnh  hướng dẫn bên dưới để cài đặt plugin WordPress

    Sau khi install thành công, ấn vào button Open profile như trong để thiết lập các giá trị giúp plugin có thể conenct tới site WordPress của chúng ta.

    Nhập các giá trị từ 1 đến 5 theo hướng dẫn bên dưới

    • (1): đặt tên bất kỳ mà bạn thấy dễ nhớ.
    • (2): WordPress URL là domain của site wordpress của bạn
    • (3): API type khi click vào sẽ xổ xuống hiển thị một danh sach các option, chọn vào REST API Authentication by miniOrange (Bước này quan trọng, phải chọn chính xác mới hoạt động được)
    • (4) + (5): nhập tên usernamepassword của account user bạn đã tạo ở bước đầu tiên nhé
    • (6): Switch ON nếu bạn muốn set account đang cấu hình làm mặc định, bước này chỉ là optional
    • (7): Click Save để lưu lại, tới bước này thì gần xong mọi thứ, chỉ cần chuyển qua bước test tiếp theo

    Test và tận hưởng thành quả

    Chọn một note bất kỳ muốn publish, click vào icon wordpress bên thanh navigation.

    Thông báo sẽ xuất hiện khi publish thành công

    Sau cùng, mở trang quản trị của wordpress lên và kiểm tra, preview lại trước khi đăng nhé các bạn.

    Nếu mọi thứ đã ok giờ ta chỉ cần publish nữa thôi. Quá tiện lợi và nhanh chóng. +1 respect cho cộng đồng Obsidian 💕

    Lời kết

    Mình không biết viết gì cả, chỉ chúc các bạn thành công thôi. Hi vọng bài viết này giúp ích cho các bạn, đừng quên để lại nhận xét hoặc câu hỏi nếu có nha, mình sẽ đọc hết đấy 🤣