개발자 블로그를 위한 열걸음

개발자 블로그를 위한 열걸음

드디어 블로그 운영을 위한 모든 준비가 완성되었습니다. 하지만 준비가 끝난 것이지 정상적으로 이용할 수는 없습니다. 예를들어 SMTP 설정을 하지 않고 시작했기 때문에 새로운 스탭이나 회원을 모집할 수 없고, 업로드 최대 용량설정으로 인해 Theme를 다운로드 받을 수 없는 상태입니다. 그래서 가장 먼저 데이터베이스에 직접 새로운 스탭을 넣거나 테마를 다운받아 마운트된 폴더에 넣어주는 방법을 사용했습니다.

개발자 블로그를 위한 아홉걸음
드디어 지금까지 준비한 모든 것들로 블로그를 배포할 준비가 되었습니다. 배포를 진행하기 앞서 DuckDNS를 통해 발급받은 도메인으로 연습을 해보시길 바랍니다. 특히 CMS를 선택함에 있어 개인차가 있을 수 있고, 개발스택을 정하실 수 있기 때문입니다. 지금까지의 방법과 비슷하게 워드프레스나 JAVA CMS도 설치할 수 있으니 사용해 보시길 권장드립니다. 개발자 블로그를 위한 일곱걸음홈서버를 운영하는 사람들은

스탭 추가

블로그를 개인적으로 운영하기 때문에 혼자 운영을 하고 있습니다. 그럼에도 불구하고 계정을 "Manager" 와 "HyoBin" 이라는 스탭으로 분리해서 작업을 하고 있습니다.

애초에 Ghost에서도 각기 다른 역할이 부여되어 있고, 역할 기반 접근 제어 (Role-Based Access Control, RBAC) 에 근거해 Owner 와 Editors 라는 계정으로 분리해 블로그의 운영과 글쓰기를 분리해서 사용하고 있습니다. 특히 Owner의 계정은 블로그 테마, 운영방침, 초기화 등 운영에 민감한 기능들을 포함한 모든 기능을 사용할 수 있기에 제한적으로 사용하는 것이 좋다고 판단했습니다.

하지만 설치 과정 중 설정을 하지 않았다면 SMTP 의 부재로 스탭 초대 기능이 정상적으로 작동되지 않습니다. 그래서 관련 포스팅을 먼저 작성했으니 참고 부탁드립니다.

Ghost에서 SMTP 설정하기
현재 POORM 블로그는 SMTP를 설정하지 않고 구축해버린 관계로 스태프 계정 추가, 뉴스레터 기능 등이 정지되어 있습니다. Ghost에서는 Mailgun이라는 업체의 메일 시스템을 설정에서 제공하고 있지만, Mailgun 시스템 자체가 무료 서비스가 아닙니다. SMTP 설정 방법 1. 구글 계정 관리 접속 구글의 우측상단의 계정 프로필을 눌러 ‘Google 계정 관리’로 접속합니다. 2. app password

설정을 하지 않고 추가하는 방법은 다음과 같습니다. (namespace와 pod 는 설정을 확인해주세요)

  1. 운영중인 k8s에 ghost의 mysql이 작동하는 pod를 확인합니다.
    kubectl get pod -n namespace
  1. pod를 통해 mysql에 접근합니다.
    kubectl exec -it ghost-mysql-0 -n namespace – mysql -u root -p
  1. 데이터 베이스 및 스탭 관련 테이블에 확인합니다.
use bitnami_ghost;
select * from roles;
select * from users;
select * from roles_users;

데이터베이스를 확인했다면 roles_users 테이블의 user_id는 users 테이블의 id, role_id는 roles의 id인 것을 확인 할 수 있습니다.

  1. 계정 추가

다음과 같이 입력을 합니다. 비밀번호는 암호화된 비밀번호로 입력해야하지만 변경할 수 있으니 여기선 평문으로 입력합니다.

INSERT INTO users (
    id,
    name,
    slug,
    password,
    email,
    status,
    visibility,
    created_at,
    created_by
) VALUES (
    '3', -- 유니크한 ID
    'testuser', -- 이름
    'testuser', -- 슬러그 (고유 URL에 사용)
    'testpassword', -- 평문 비밀번호
    'test@test.com', -- 이메일
    'active', -- 상태
    'public', -- 가시성
    NOW(), -- 생성 시간
    '1' -- 생성자 ID
);
  1. 역할 부여
INSERT INTO roles_users (id, role_id, user_id) values ('676a66fc79b46a00dc34da71', '676a66fc79b46a00dc34da69', 3);

id값은 뒷자리에 1을 추가하고 role_id와 user_id에 적절한 역할의 id값과 방금 생성한 user의 id(3)을 입력합니다.

  1. 스탭 확인

이렇게 SMTP 설정이 안되있을 때 임시 방편으로 스탭을 추가하는 방법에 대해 알아 봤습니다.

💡
테스트 후 계정은 삭제했습니다.
delete from roles_users where user_id=3;
delete from users where id=3;

Read more

비동기 프로그래밍 : golang

비동기 프로그래밍 : golang

비동기 프로그래밍의 필요성과 Go 언어의 등장 * 최신 애플리케이션은 높은 처리량과 낮은 지연 시간을 요구하며, 이는 단일 스레드 방식으로는 달성하기 어렵습니다. * 비동기/동시성 프로그래밍이 필수적이 되었지만, 기존 언어에서는 복잡한 스레드 관리, 락(Lock) 메커니즘 등으로 인해 개발 난이도가 높았습니다. * Go 언어는 이러한 문제를 해결하기 위해 Goroutine과 Channel이라는 독창적이고 강력한 동시성 프리미티브를