어제 저녁부터 ads.txt를 내 웹사이트(워드프레스)에 넣기위해 무한 삽질을 했는데, 오늘 오전 11시가 되서야 그 삽질이 끝났다(밤샘). 아 너무 피곤해ㅠ 코드 정리겸 내가 어떻게 워드프레스에 ads.txt를 추가했는지 글을 써보겠다.
워드프레스 aws ec2 ads.txt 업로드하는 방법
1. ads.txt 다운로드
ads.txt는 ‘google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0’라고 안에 적혀있는 걸 볼 수 있다.
2. 파일질라(FileZilla) 다운로드(웹사이트는 여기)
3. 파일질라를 통해 내 서버와 내 컴퓨터를 연결해준다
저 팝업 창에 ‘프로토콜: SFTP, 호스트: aws ec2 퍼블릭 Ip 주소(예: XX.XXX.XXX.XXX), 로그온 유형: 키 파일, 사용자: ubuntu, 키 파일: 내 컴퓨터에 키 파일 저장된 장소‘를 입력하고 아래의 ‘연결‘을 누른다.
나의 경우 이때 ‘Connection timed out after 20 seconds of inactivity‘라고 떴다. 그래서 몇 시간 삽질하면서 이걸 어떻게 고쳐야되나 고민했는데 이 에러를 해결할 힌트는 역시 공식문서에서 찾아볼 수 있었다(항상 공식문서를 가까이해야하는 이유, aws ec2 connection timed out 관련 공식문서는 여기).
아마존 aws에서 이렇게 말했다. ‘Connection timed out after 20 seconds of inactivity‘ 에러의 원인은 다양하게 있을 수 있는데 몇가지만 꼽아보자면
- 인스턴스 IP주소, 호스트 이름 부정확
- 인스턴스 상태 불량
- 인스턴스 보안그룹이 TCP 포트 22에서 수신되는 트래픽 차단
등이라고 말한다(이것 말고도 다른 원인들이 있는데 나머지는 공식문서에서 더 찾아보세요).
나의 경우는 3번이 문제였다. 내 aws ec2는 내가 파일질라로 내 컴퓨터와 내 서버를 연결하려는 시도를 막고 있었다. 결국 보안 그룹이 문제였다. 그래서 이 문제를 어떻게 풀었냐면,
‘Connection timed out after 20 seconds of inactivity’ 해결책: aws ec2 보안그룹의 ssh 인바운드 규칙에서 내 IP를 추가해줬다.
- 나의 aws ec2 콘솔에 들어가서 네트워크 및 보안-> ‘보안 그룹’ 선택.
- 인바운드 규칙 편집을 누름.
- 인바운드 규칙에서 ssh에 내 IP를 추가하고 ‘규칙 저장’을 누름.
(*인바운드 규칙은 다른 것들이(내 컴퓨터) 내 서버로 들어올 때 내 서버가 어떤 접근 시도만 허용할 건지 정해놓는 보안 규칙이다. 아무나 내 서버에 접근하면 안되므로 보안 규칙은 항상 철저히 해놔야한다.)
아무튼 이렇게 내 aws ec2 보안그룹을 수정하고 내 IP로 서버에 접근할 수 있도록 해놨더니, 파일질라를 통해 내 컴퓨터와 내 서버를 연결할 수 있었다(그림 1의 팝업창 다시 띄워서 ‘연결’ 눌렀는데 스무스하게 서버에 연결됨). 서버에 드디어 연결이 돼서 매우 기뻤다ㅎㅎ.
4. 내 컴퓨터(로컬 사이트)에서 리모트 사이트(서버)로 ads.txt를 드래그해서 옮겨준다. 리모트 사이트 주소는 /var/www/wordpress
파일질라가 내 서버에 연결되면 저렇게 리모트 사이트가 로컬 사이트 옆에 뜨게되는데 나는 ads.txt를 로컬 사이트에서 리모트 사이트로 옮기고 싶기 때문에 드래그해서 옮겨봤다. 근데 이 과정에서 또 문제가 발생했다. ads.txt가 내 컴퓨터에서 서버로 옮겨지지 않았다(하나 해결하면 또 다른 문제가 생기는 게 코딩의 현실이다). 이때 ‘open for write: permission denied‘라는 에러가 계속 떴다. 그래서 디버깅에 들어갔다. 몇 시간 디버깅 후 내가 찾은 방법은,
‘open for write: permission denied’ 해결책: 내(사용자: ubuntu)가 내 서버에 글을 쓸 수 있게 터미널에 코드를 넣어준다(여기 참조).
*이건 뭐 다들 알겠지만 혹시나 해서 글에 적어보는데, 저 위 코드를 적기 전, 내 터미널에 ‘키 파일 서버에 보여주는 코드’를 먼저 작성해야한다. 내가 쓴 코드는 아래와 같다.
- cd ~/Downloads
- ls aws_ec2.pem
- ssh -i aws_ec2.pem ubuntu@XX.XXX.XXX.XXX(본인 퍼블릭 IP) <- 이 코드가 키 파일 서버에게 보여주면서 ‘나 서버 접근 좀 할게 ㅇㅋ?’라고 말하는 코드임.
저렇게 코드 두 줄 넣었더니 ads.txt가 내 컴퓨터에서 서버로 옮겨갔다. 예아~~만세~!!!!
이렇게 ads.txt는 다 올렸으나 세번째 난관에 부딪혔다. 이제는 워드프레스에 글을 쓰려고 하는데 사진 올리는 부분에서 ‘the uploaded file could not be moved to wp-content/uploads/2022/12’라는 에러가 떴다. 사진도 못 올리고 계속 튕기는 현상이 발생했다!!!! 그래서 세번째 디버깅에 들어갔는데 이 디버깅으로 알아낸 것은
‘the uploaded file could not be moved to wp-content/uploads/2022/12’ 해결책: 웹사이트 안에서 파일을 올릴 수 있게 소유권을 변경해줘야 한다.
이 오류는 ‘sudo chown -R www-data /var/www/wordpress‘ 코드 실행으로 한방에 해결됐다. 위에서 나는 ‘sudo chown -R ubuntu /var/www/wordpress’ 코드를 실행하며 해당 폴더의 소유권을 파일질라를 통해 접속하는 ‘나(ubuntu)’로 바꿔놔서 워드프레스 웹사이트 내에서 해당 폴더에 어떤 ‘쓰기(이미지 삽입)’도 불가능했었다. 근데 저 위의 코드를 실행하니 한 방에 해결돼서 이 글에 많은 사진을 첨부할 수 있었다.
마무리로 몇 줄 적어봄
솔직히 다 끝내고 보니까 뭐 이런 걸 갖고 시간을 낭비했나 싶긴 한데 디버깅 할 때는 멘붕이어서 당장 앞에 닥친 문제 푸느라 심장 쫄깃해진다.
이번 디버깅은 하루 반나절의 시간을 요했기 때문에 꽤나 인내심을 필요로 했다.
그래도 코딩하다보면 가끔 ‘아.. 내가 이거 풀 수 있을까..’ 이런 두려움이 들 때가 있는데 거기서 포기 안하고 계속 삽질하다보면 ‘오.. 이게 되네??’하며 갑자기 행복해지는 경험을 하는데 이게 바로 코딩의 가장 큰 매력이다. 정말 짜릿하고 매력적이다.
나는 앱 개발자라 웹 디버깅은 조금 스트레스를 받는다. 그래도 구글링하며 차근차근 에러 해결해나가는 걸 보니 웹 코딩도 나름 할 만하다고 느낀다(이해 못해도 근성으로 디버깅~~)
아 너무 피곤하다. 디버깅 다하고 이 글까지 쓰니 갑자기 피로가 몰려온다. 오늘 저녁에는 일찍 자야겠다(근데 블로그가 어째 점점 테크 쪽으로 가고 있는 거 같다. 나는 테크 블로거보다는 비즈니스, 덕질, 철학 블로거가 되고 싶은데 말이야..)