• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    해결됨

xml 가져오기 불가

23.01.07 17:19 작성 23.01.07 17:21 수정 조회수 249

0

안녕하세요. client 강의만 듣고 있습니다.

이래저래 삽질을 하면서 nginx + php + mariadb 조합으로 설정을 마친거 같네요.

강의 4:13 정도에 WordPress 에서 가져오기 실행 하라고 되어 있는데, 제가 실행중인 WordPress 에서는 설치가 안되어 있나보네요?

WordPress 설치 버튼을 누르면 404 가 뜹니다.
http://localhost/bookstore/wp-admin/admin-ajax.php 이걸 실행하는데 404가 뜨는 상황입니다.

이건 어떻게 하면 해결 할 수 있는지 궁금합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요, Ikostar님.

admin-ajax.php 에 404 Not Foud가 뜨는 상황이시군요.

nginx로 설정을 마치셨다니 대단합니다 👍

404에러의 원인은 당연히 아실 테지만 요청한 경로에 응답할 자원이 없기 때문입니다.

위 경우에는 실제로 파일이 없을 수도 있고, 경로 매핑 설정이 잘못된 것일 수도 있습니다.

제가 nginx 경험이 많지는 않기 때문에 추정으로는 원인을 말씀드리기가 힘듭니다.

게다가 Ikostar님께서 설정을 어떤 방식으로 하셨는지 모르는 상황이기 때문에 더욱 그렇습니다.

다음 사항을 알려 주시면 저도 한 번 해 보고 도움을 드릴 수 있지 않을까 싶습니다.

  1. 워드프레스 버전과 설치 경로

  2. nginx 설정 파일의 내용 전부

  3. 워드프레스 고유주소(permalink) 설정

질문해 주셔서 감사드리고, 한 번 같이 해결해 보면 좋겠습니다.

참, 저는 nginx 워드프레스 설정을 한다면 다음 두 가지 매뉴얼을 참고할 것입니다. 이미 찾아 보셨을 수도 있지만 이 글을 보는 다른 분들을 위해서라도 좀 납깁니다 :)

https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

https://wordpress.org/support/article/nginx/

다음으로, wp-admin/admin-ajax.php 파일에 대한 ajax 요청을 다른 곳에서도 많이 사용하기 때문에 이 상태로는 개발을 진행하기 힘드실 겁니다.

같이 해결하고 진행해 보면 좋겠습니다 :)

Ikostar님의 프로필

Ikostar

질문자

2023.01.08

주말에도 친절히 답을 달아 주셔서 감사합니다.

다른분들을 위해 시행착오를 (정제하진 않고) 남겨두겠습니다.

현재 최신버전(php 8.2, wp 6.1) 로 설치 했는데, WP 에서 워닝이 뜨더군요.

php 8에서 deprecated 된 문법들을 wp 6.1 에서 사용중인가보죠.. 7.4 로 내리던지 무시하라는 의견이 있길래 [레딧] 1초의 망설임도 없이 버전을 내렸습니다.

그리고 나서 nginx 의 설정을 변경 했습니다.

정확히 무얼보고 잘못 설정을 했었는지는 모르겠으나(안되는 과정에서 이것저것 시도를 많이해서 히스토리 쫓기 어려움), include 부분이 잘못되어 있어서 최종으로는 다음과 같이 설정 했습니다.

(이 설정이 server 하위 설정인데 root 도 서버로 뺐습니다.)

nginx 가 php 스크립트 실행하는 부분일거에요.

location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include        fastcgi_params;
}

그러고나서 도구 가져오기의 WordPress "지금 설치" 를 누르니 "No working transports found" 가 뜨더군요.

그건 php.ini 에서 extension=openssl 설정 주석을 해제 했습니다. (php 버전에 따라 설정 이름이 다른 듯 하니 주의)

 

마지막으로 사족을 달아보자면.. nginx 와 php 를 사용하는 건 처음 입니다. WP 를 배워보고 싶어서 강의를 신청했는데, Admin 은 개발 영역이 아닐거 같은 느낌을 좀 받아서 이렇게 Client 파트만 듣게됐는데, 그래서인지 설치/설정을 다루는 강의가 없더군요.

php 는 nginx 또는 apache 에 올리는게 일반적인거 같던데, 아파치는 가볍게 다뤄봤으니 이왕 하는거 nginx 를 다뤄보자고 하게 되었네요. 퇴근하고도 일하는 느낌이라 살짝 후회를 하긴 했지만.. 일단은 import 하고 책 목록이 나오는걸로 봐선 돌아가는 느낌이라. 뿌듯하네요. (책 이미지가 안 나오는건 맞죠? )

안녕하세요. nginx에서 워드프레스 설정에 성공하셨다니 기쁩니다! 😀👍 저도 한 번 해 봐야겠습니다.
내용을 상세히 남겨 주시다니 정말 멋지십니다!

openssl

가져오기를 하려면 openssl 확장이 켜져 있어야 한다는 사실을 Ikostar님 덕분에 알게 됐습니다. 제가 개발하는 환경을 확인해 보니 기본으로 켜져 있네요.
openssl 확장이 필요한 이유는 아마 https에서 파일을 가져와야 하기 때문일 겁니다. https 주소에 접속할 때 openssl 확장이 필요합니다. 이 확장에는 다른 기능들도 있지만 가져오기를 할 때 필요한 기능은 그것일 겁니다.
XML 가져오기를 할 때 https 접속을 하는 이유는 이미지 다운로드 때문입니다. 이미지는 XML 파일에 내장돼 있지 않고 원격에서 다운로드를 하거든요.

표지 이미지

그런데 말씀하신 것을 보니 정작 이미지가 다운로드되지 않았군요. 제가 최근에 블로그를 Github Page에서 워드프레스로 이전하면서 이미지 URL이 변경됐기 때문에 그렇게 됐습니다. 말씀해 주신 덕분에 알게 됐습니다(감사합니다 🙏).
말씀을 듣고 나서 XML의 이미지 경로를 변경하는 작업을 했습니다. “예제 소스 코드 설치하고 살펴 보기(클라이언트 편 Only)“에서 다시 강의 자료를 다운로드하시면 이제 표지 이미지들도 제대로 들어오게 될 겁니다.

openssl 활성화 방법

openssl 설정 이름이 PHP 버전에 따라 다른 것 같다는 언급을 보고, 기왕 알게 된 김에 한 번 찾아 봤습니다.
우선 확장은 파일을 통해 제공된다는 사실을 아실 겁니다. 확장 기능을 제공하는 파일을 찾으려면 php.ini에서 extension_dir에 적힌 경로를 찾으면 됩니다. 예컨대 저는 extension_dir = "/opt/homebrew/lib/php/pecl/20190902"이라고 적혀 있고, 이 폴더에는 imagick.so, mcrypt.so, propro.so, raphf.so, xdebug.so가 있습니다.
그런데 아마도 과거에는 openssl 확장을 제공하는 파일의 이름이 php_openssl.so였던 때가 있나 봅니다. 윈도우의 경우는 지금도 php_openssl.dll인 듯하고요. (맥/리눅스는 확장 파일의 확장자가 .so고, 윈도우는 .dll입니다.)
그래서 윈도우 사용자의 경우 지금도 extension=php_openssl.dll이라고 써 줘야 하는 것 같습니다.
맥과 리눅스 사용자의 경우엔 확장 파일명에서 .so를 떼고 적으면 됩니다. 그래서 extension=openssl 혹은 extension=php_openssl입니다.
extension=openssl을 주석해제하지 않아도 기본적으로 활성화돼 있는 경우도 있습니다. PHP를 컴파일할 때 --with-openssl 옵션을 주고 컴파일을 한 경우인데요. php -iphpinfo()로 PHP 정보를 봤을 때 Configure Command 항목에 --with-openssl 옵션이 있다면 확장 없이 기본적으로 openssl이 활성화돼 있는 것입니다. 이 경우 php.ini에서 extension=openssl도 필요치 않습니다.

설치/설정을 다루는 강의에 대해

설치/설정을 다루는 강의가 클라이언트편에 없다고 언급해 주셨습니다.
사실 어드민 편에 “워드프레스 설치하고 살펴 보기“를 무료로 공개해 두긴 했습니다.
그러나 아마도 그것만으로는 부족함을 느껴서 그렇게 써 주신 것 같습니다.
어드민 편에서도 아파치 설정이나 nginx 설정을 다루고 있지는 않은데요. 중급 개발 강의로 컨셉을 잡으면서, 기본적인 웹서버 구성을 하실 수 있는 분들이 강의를 들으실 것이라고 생각했습니다. 그래서 웹서버 설정 부분은 넣지 않았던 것입니다. 지금 와서 생각해 보면 그런 부분이 있어도 좋겠다는 생각이 듭니다. 다음 강의를 촬영할 때는 그런 부분을 포함해야겠습니다.

어드민 편도 개발을 다룹니다

어드민 편도 개발을 다룹니다. 사실 워드프레스를 적극적으로 활용하시려면 어드민편을 보시는 게 좋습니다.
글 외의 다른 모델을 만드는 방법(커스텀 포스트 타입), 카테고리 외의 다른 분류를 만드는 방법(커스텀 택소노미), 기본 컬럼들 밖에 다른 정보를 저장하는 방법(포스트 메타) 등 중요한 내용을 다루고 있습니다. 관리자단에 커스텀 페이지를 만들어서 카카오 북 API를 이용해 책 정보를 가져오는 내용도 다룹니다.
워드프레스를 통달하시려면 어드민 편도 보시는 것을 추천드립니다.

감사합니다.

Ikostar님의 프로필

Ikostar

질문자

2023.01.11

오. 친절한 답 너무 감사합니다.
인프런에서 강의를 좀 들어봤지만, 이렇게 적극적으로 소통하시는 분은 처음인것 같습니다. 너무 좋네요.

중급자를 타겟으로 강의를 제작 하신건 너무 마음에 듭니다. 그럼에도 불구하고, 개발 밥을 10년넘게 먹고 있는 입장에서도 CRA 같이 CLI 로 간단히 되는 경우를 제외하고는 환경 설정의 피곤함은 여전한거 같습니다. 여유가 되신다면 블로그 형태로라도 제공이 되면 접근이 편할거 같습니다.

어드민편도 개발을 다룬다고 하시니, 클라이언트를 다 보고나서 고민을 조금 해 봐야겠네요.
WP 가 커버할 수 있는 범위를 모른 채, 화려한 페이지 제작이 필요해서 일단 강의부터 듣다보니, 궁금함이 생기던 차 였습니다.

또 궁금함이 생기면 글 남기겠습니다.
이 글에 대해 굳이 답은 달지 않으셔도 괜찮습니다 ^^