워드프레스 aws ec2 ads.txt 추가한 방법(자세함 주의)

심각한 영향이라고 하니 빨리 고쳐야겠다는 압박감을 주는 알림..!!

어제 저녁부터 ads.txt를 내 웹사이트(워드프레스)에 넣기위해 무한 삽질을 했는데, 오늘 오전 11시가 되서야 그 삽질이 끝났다(밤샘). 아 너무 피곤해ㅠ 코드 정리겸 내가 어떻게 워드프레스에 ads.txt를 추가했는지 글을 써보겠다.




워드프레스 aws ec2 ads.txt 업로드하는 방법

1. ads.txt 다운로드

아래 다운로드를 누르면 텍스트 파일(ads.txt)이 다운받아진다.

ads.txt는 ‘google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0’라고 안에 적혀있는 걸 볼 수 있다.

2. 파일질라(FileZilla) 다운로드(웹사이트는 여기)

나는 맥 유저이므로 파일질라 맥용을 다운받아준다.

3. 파일질라를 통해 내 서버와 내 컴퓨터를 연결해준다

그림 1. 파일질라의 이 팝업에서 사이트 연결을 시도한다.

저 팝업 창에 ‘프로토콜: 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‘ 에러의 원인은 다양하게 있을 수 있는데 몇가지만 꼽아보자면

  1. 인스턴스 IP주소, 호스트 이름 부정확
  2. 인스턴스 상태 불량
  3. 인스턴스 보안그룹이 TCP 포트 22에서 수신되는 트래픽 차단

등이라고 말한다(이것 말고도 다른 원인들이 있는데 나머지는 공식문서에서 더 찾아보세요).

나의 경우는 3번이 문제였다. 내 aws ec2는 내가 파일질라로 내 컴퓨터와 내 서버를 연결하려는 시도를 막고 있었다. 결국 보안 그룹이 문제였다. 그래서 이 문제를 어떻게 풀었냐면,

‘Connection timed out after 20 seconds of inactivity’ 해결책: aws ec2 보안그룹의 ssh 인바운드 규칙에서 내 IP를 추가해줬다.

  1. 나의 aws ec2 콘솔에 들어가서 네트워크 및 보안-> ‘보안 그룹’ 선택.
  2. 인바운드 규칙 편집을 누름.
  3. 인바운드 규칙에서 ssh에 내 IP를 추가하고 ‘규칙 저장’을 누름.
위의 ‘인바운드 규칙 편집’를 누른다.
인바운드 규칙에서 SSH에 내 IP를 추가한 후, 아래의 규칙 저장을 누른다.

(*인바운드 규칙은 다른 것들이(내 컴퓨터) 내 서버로 들어올 때 내 서버가 어떤 접근 시도만 허용할 건지 정해놓는 보안 규칙이다. 아무나 내 서버에 접근하면 안되므로 보안 규칙은 항상 철저히 해놔야한다.)




아무튼 이렇게 내 aws ec2 보안그룹을 수정하고 내 IP로 서버에 접근할 수 있도록 해놨더니, 파일질라를 통해 내 컴퓨터와 내 서버를 연결할 수 있었다(그림 1의 팝업창 다시 띄워서 ‘연결’ 눌렀는데 스무스하게 서버에 연결됨). 서버에 드디어 연결이 돼서 매우 기뻤다ㅎㅎ.

서버에 연결되기 전, 이런 팝업창이 뜨는데 여기서 ‘확인’을 눌러야 정상적으로 서버에 연결된다. 서버에 연결되면 그림 2(아래)와 같은 화면이 뜬다.

4. 내 컴퓨터(로컬 사이트)에서 리모트 사이트(서버)로 ads.txt를 드래그해서 옮겨준다. 리모트 사이트 주소는 /var/www/wordpress

그림 2. 이 사진은 ads.txt를 다 추가하고 찍은 사진이다.

파일질라가 내 서버에 연결되면 저렇게 리모트 사이트가 로컬 사이트 옆에 뜨게되는데 나는 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 쳐서 위와 같이 나오면 잘 삽입된 것이다ㅎㅎ.

이렇게 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)’로 바꿔놔서 워드프레스 웹사이트 내에서 해당 폴더에 어떤 ‘쓰기(이미지 삽입)’도 불가능했었다. 근데 저 위의 코드를 실행하니 한 방에 해결돼서 이 글에 많은 사진을 첨부할 수 있었다.

마무리로 몇 줄 적어봄

솔직히 다 끝내고 보니까 뭐 이런 걸 갖고 시간을 낭비했나 싶긴 한데 디버깅 할 때는 멘붕이어서 당장 앞에 닥친 문제 푸느라 심장 쫄깃해진다.

이번 디버깅은 하루 반나절의 시간을 요했기 때문에 꽤나 인내심을 필요로 했다.

그래도 코딩하다보면 가끔 ‘아.. 내가 이거 풀 수 있을까..’ 이런 두려움이 들 때가 있는데 거기서 포기 안하고 계속 삽질하다보면 ‘오.. 이게 되네??’하며 갑자기 행복해지는 경험을 하는데 이게 바로 코딩의 가장 큰 매력이다. 정말 짜릿하고 매력적이다.

나는 앱 개발자라 웹 디버깅은 조금 스트레스를 받는다. 그래도 구글링하며 차근차근 에러 해결해나가는 걸 보니 웹 코딩도 나름 할 만하다고 느낀다(이해 못해도 근성으로 디버깅~~)

아 너무 피곤하다. 디버깅 다하고 이 글까지 쓰니 갑자기 피로가 몰려온다. 오늘 저녁에는 일찍 자야겠다(근데 블로그가 어째 점점 테크 쪽으로 가고 있는 거 같다. 나는 테크 블로거보다는 비즈니스, 덕질, 철학 블로거가 되고 싶은데 말이야..)




Leave a Comment