본문 바로가기
개발 이야기/Troubleshootings

티스토리 기본 도메인사용시 애드센스 안나오는 문제, 개인 도메인 연결시 구글 검색 문제 해결 방법

by _ppuing 2021. 1. 21.
반응형

티스토리에서는 두 가지의 광고 플랫폼을 이용할 수 있는 장점이 있다. 티스토리 자체적으로 사용하는 애드핏과 구글의 애드센스가 바로 그것. 애드핏의 경우 노출, 클릭 모두 수익이 들어오고 유저들의 클릭이 적은 점에서 기본적으로 수익을 보장할 수 있다는 장점이 있으나, 그 금액이 너무 작아서 사실상 수익을 내기란 일등 블로그가 아닌 이상 어렵다. 애드센스의 경우 노출만 했다고 수익이 보장되는 것은 아니나, 한 번의 클릭으로도 0.1달러 정도는 벌 수 있는 것으로 예상수익이 잡히는 것으로 보아, 애드센스 연동을 하기로 결심했다. 

 

우선 애드센스 페이지에 들어가서 모두 활성화를 시켜줬다. 그 다음 애드센스 정산하기를 누르면 ads.txt 파일을 우리 블로그에 놓으라고 한다. 이 파일을 간혹 다른 블로그에서 "스킨편집" 에 들어가서 올리면 된다는 허무맹랑한 소리를 하고 있는데, 스킨편집에서 파일 업로드를 하면 xxxx.com/ads.txt 로 들어가는 게 아니라 xxxx.com/images/ads.txt로 들어가기 때문에 구글이 조회할 수 없다. 즉, 기본 도메인을 사용해서는 절대로 애드센스를 정상적으로 이용할 수 없다. 

일단 애드센스 페이지에서 아래와 같이 먼저 설정을 해뒀다.

구글 애드센스 "사이트" 항목 중

하위도메인을 둔 이유는 아래 내용을 보면 조금씩 이해가 될 것이다. 나는 티스토리 블로그를 blog.ppuing.me 로 사용할 것이며, ppuing.me 는 단순히 ads.txt를 담고 있고, blog.ppuing.me 로 연결을 리다이렉트하는 목적으로 사용할 것이다. 

1단계: 개인 도메인을 구매하고 연결한다

따라서 가장 먼저 해야할 일은, 원하는 도메인을 하나 만들고(구매), 우리 티스토리 블로그와 연결해줘야 한다. 한국에서 가장 쓰기 쉬운 호스팅업체는 "가비아" 이다. 가비아에 가입해서 도메인 구매를 하면 싼 것은 몇 천원에 구매할 수도 있다. 도메인 구매가 완료되면, 아래 그림처럼 DNS 관리 페이지에 들어가서 도메인 이름과 연결할 위치를 지정하면 된다. 

나 같은 경우는 blog.ppuing.me => tistory 블로그로 연결되도록 했다. "호스트" 항목에 blog를 굳이 넣은 이유는 더 아래 항목에서 설명하겠다. 

타입은 CNAME으로 하고, 값/위치는 내 티스토리 도메인을 넣는 게 아니라 host.tistory.io. 를 넣어줘야 한다. 

 

여기까지 마쳤으면, 티스토리 블로그 관리 페이지로 돌아가서 "관리" -> "블로그" 탭에 들어간다. 

그런 다음 위 사진처럼 새로 만든 개인 도메인을 추가하면, 시간이 좀 지나서 완료된다. (보안 접속 인증서, SSL 은 시간이 조금 걸린다. 이것은 https 요청도 가능하게 해주는 옵션인데, 인증서를 만들고 연결시켜주는 작업을 티스토리 백그라운드에서 진행하는 것으로, 시간이 걸릴 수밖에 없다.)

 

여기까지 했으면 브라우저에서 blog.ppuing.me 를 쳐본다. 

개인 도메인 연결을 성공했다.

 

2단계: ppuing.me 도메인을 개인용 서버를 만들어 연결시킨다.

위 단계까지 했으면 어쨌든 개인 도메인 연결은 성공한 것이다. 하지만 위에서 언급했던 ads.txt 추가 문제는 근본적으로 해결되지 않았다. 왜냐면 blog.ppuing.me는 단순히 xxx.tistory.com 에 연결하는 것 뿐이기 때문이다. 근본적으로 /ads.txt를 넣을 수는 없기 때문에, 이 파일을 보관하고 있을만한 작은 서버를 만드는 게 필요하다. 

몇몇 사람들은 깃허브, 구글블로거 등을 이욯해서 ppuing.me 도메인을 연결시키고, 여기에 ads.txt를 넣어서 해결하는 방법들도 제시하고 있다.

나도 처음엔 그렇게 따라했다. 하지만 여기서 새로운 다른 문제가 생기는데, 구글에서 내 블로그 글을 검색하면 ppuing.me/24 같은 글이 생기지만, ppuing.me는 구글블로거 사이트이기 때문에 404 에러페이지가 떠 버린다. 즉, ppuing.me => blog.ppuine.me 로 자연스럽게 리다이렉트 시켜줘야 하는 문제가 생기는 것이다.

이를 해결하기 위해 또 몇몇 사람들은 자바스크립트로 리다이렉트 하거나, 깃허브를 이용해서 풀어내거나 하는 방법들이 존재하지만, 근본적으로 내가 그냥 메인 호스트를 자체 서버로 돌리는 게 가장 확실하다. 아래는 그 순서를 나열한 내용이다.

 

구글 블로거, 깃허브 같은 것은 신경쓰지 말고, 아까 접속했던 가비아에서 g클라우드 => 컴퓨팅 => Micro에 들어간다. t서버 이미지 버전은 Ubuntu 16.04 버전을 선택하고 만든다. 공인아이피는 "신청"한다. 공인아이피는 우리가 외부에서 SSH로 쉽게 접속하기 위해 필요한 옵션이다. 뭐.. 없더라도 g클라우드에서 직접 "터미널 접속" 버튼을 누르면 들어가지기도 하는 것 같다만, 나는 이 공인 IP를 도메인과 직접 A태그로 연결해주기 위해 신청했다. (서버비 월 5천원 + 월 5천원 추가 소요)

 

서버 생성이 완료되면 다시 아까 위에 접속했었던 DNS관리 페이지로 들어간다. 여기에서 아래 그림 처럼 두 가지 DNS 타입을 추가한다. 

숫자를 가린 위치가 공인 IP 위치이다.

여기까지 끝났으면 SSH 접속 툴인 pputy를 이용하여 아래와 같이 치고 들어 간다.

putty 접속 화면

putty 접속시 ppuing.me (나의 도메인)을 치고 Open을 누르면 오른쪽 사진처럼 로그인할 패스워드를 입력하라고 한다. 초기 계정은 root로 설정되어 있다. 패스워드는 가비아 계정으로 가입한 메일로 와 있을 거다. 임시 패스워드이니 접속해서 바꿔주면 된다. 

첫 접속 후, 비밀번호 바꾸는 명령어는 sudo passwd root 이다. 이걸 입력하면 새 패스워드를 두 번 치라고 하니, 원하는 패스워드로 바꿔주면 된다. 

 

서버 접속이 완료됐으면 가장 먼저 sudo apt install nginx 명령어를 친다. 

인스톨이 완료됐으면 sudo vi /etc/nginx/sites-available/ppuing.me 를 친다. (자기 도메인인 경우 마지막 부분을 ppuing.me => 내가 원하는 이름으로 바꾸면 된다. 꼭 url 모양일 필요는 없다.) 

그 다음 아래 내용을 넣어주고 저장한다.

server {

    listen 80;

    listen 443 ssl;

    

    server_name ppuing.me www.ppuing.me;  

    location /ads.txt {

        alias /home/ads.txt;

    }

 

 

}

그 다음 이 파일을 sudo ln -s /etc/nginx/sites-enabled/ppuing.me 를 입력해서 링크를 걸어 준다.

여기까지 완료 했으면 vi /home/ads.txt 파일을 만들고, 구글 애드센스 홈페이지에서 다운받은 ads.txt 파일 내용을 그대로 넣어준다. 

그 다음 sudo service nginx restart 명령어를 실행한다. 여기까지 됐으면 브라우저에서 http://ppuing.me/ads.txt 를 검색하면 ads.txt파일 컨텐츠가 보일 거다. 하지만 https로 치면 에러가 난다. 이는 SSL 인증서가 부재하기 때문이므로, 다시 서버로 돌아가서 SSL 인증서를 만들어 줘야 한다. 

 

3단계: SSL 인증서 만들고, 항상 HTTP 요청을 HTTPS 요청으로 바꿔주기

certbot 패키지를 이용하면 매우 간단하게 인증서를 만들 수 있다. 그 방법은 아래와 같다.

 

그 다음 아래 명령어들을 쳐서 Certbot PPA를 추가한다.

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update

 

여기까지 왔으면 Certbot 설치를 진행한다.

$ sudo apt install certbot python3-certbot-nginx

 

마지막으로 Certbot 실행을 한다. 

$ sudo certbot --nginx

 

1. 메일주소를 물어보므로 메일주소를 입력한다.

2. Agree

3. yes or no (상관 없다. 귀찮으면 no) -> 위에서 입력한 메일과 자기네 재단이랑 커넥션을 만들 거냐 하는 거다.

4. 1, 2 혹은 그냥 엔터인데 나는 엔터를 쳤다. (www.ppuing.me, ppuing.me 모두 호환되게 하기 위함이다.)

5. 2. (항상 http => https 로 리다이렉트 하는 옵션이다.)

여기까지 마쳤으면 위 처럼 성공적으로 SSL 인증서가 만들어졌다고 안내 메시지가 뜬다. 그런데 얘가 하는 말을 보아하니 3개월 후면 인증서가 만료된다고 한다. 인증서는 만료일시 설정이 가능하긴 한데, 이 툴을 쓰면 3개월이 디폴트인 것 같다. 그럼 3개월 마다 내가 서버 들어와서 계속 갱신을 해줘야 하는데, 그건 귀찮으니 자동갱신 되도록 설정해두면 편할 것이다. 여기서 크론탭이라는 프로그램을 사용하면 스케줄링 태스크를 구현할 수 있다. 

아래 명령어를 입력한다.

$ sudo crontab -e

에디터는 1. vim.basic 선택

 

맨 아랫줄에 0 1 1 * * sudo certbot renew --renew-hook="sudo service nginx restart" 줄을 넣어준다. 매월 1일 새벽 1시마다 certbot 명령어를 이용해 인증서 갱신을 하겠다는 뜻이고, 인증서 갱신이 완료되면 nginx 서비스를 재시작한다는 말이다. 

 

여기까지 끝났으면 브라우저에서 https://ppuing.me/ads.txt 를 쳐본다. 아마 http://ppuing.me/ads.txt 로 들어갔을 때 https로 리다이렉트 될 것이며, ads.txt 파일 내용이 보일 것이다. 여기까지 다 했으면 구글에서 다시 내 블로그 글을 검색해본다. 

과거에는 이 글이 ppuing.me 에 물려있어서 계속 404 에러가 났었지만.. 

이젠 깔끔하게 접속에 성공했다.

 

이제 진짜 마지막으로, ppuing.me 로 들어온 요청을 blog.ppuing.me로 보내는 것을 하겠다.

아까 만든 /etc/nginx/sites-enabled/ppuing.me 에 들어가보면 처음에 내가 세팅한 것과 다른 파일로 바뀌어 있을 것이다. certbot이 자동으로 이 파일을 건드린 것이다. 여기서 우린 리다이렉트를 위한 라인만 추가하면 된다.

location /ads.txt {

아래에 

location / {

    return 301 https://blog.ppuing.me$request_uri;

}

를 삽입한다. 301(리다이렉트) 을 blog.ppuing.me/요청한uri 로 전달하겠다는 뜻이다. 즉 https://ppuing.me/351 요청이 들어오면 https://blog.ppuing.me/351 로 리다이렉트 하는 것이다. 

이젠 구글 애드센스도 정상 작동 하고, 구글 검색에도 상위 도메인인 ppuing.me가 나와도 자동으로 blog.ppuing.me로 리다이렉트 되니 당분간 발 뻗고 잘 수 있을 것 같다.

 

참고 자료

푸티 다운로드 링크

Certbot 참고자료

Nginx 상위도메인 => 하위도메인으로 리다이렉트 세팅 문서

nginx 예제들 

반응형

댓글