- 9
- 이니스프리
- 조회 수 826
안녕하세요?
오늘 하루는 잘 보내셨는지요? ^^
다름이 아니라 웹호스팅에서 다른 서버에 있는 CSV 파일을 불러오는 방법에 대해 질문 드려요~
제가 사용하는 웹호스팅에서 파이썬을 지원하지 않기 때문에
부득이 다른 VPS에서 파이썬으로 생성한 CSV 파일을 웹호스팅으로 불러오려고 하는데요.
(양쪽 모두 제가 사용하는 계정이고, 추가로 프로그램을 설치할 여유 공간과 리소스가 있습니다)
이런 경우에는 보통 어떠한 방법으로 파일을 불러오는지 제가 전혀 감을 못 잡겠네요 ㅠㅠ
막연하게 드는 생각이 다음과 같은 방법이 아마도 가능할 것 같습니다.
(실제로 불가능한데 저 혼자만의 상상 속에서 가능한 방법인지도 모르겠네요 ^^;)
1. VPS에서 아파치나 NGINX를 구동하여 웹서버의 PHP 파일에서 CSV 파일을 불러오는 방법
(웹호스팅 서버 측에서 file_get_contents를 막아놓아서 cURL을 이용해야 할 것 같네요 ㅠㅠ)
2. cPanel의 크론탭을 이용하여 CSV 파일 자체를 웹호스팅으로 다운받는 방법
(다만 제가 cPanel의 크론탭을 사용해본 적이 없네요 ㅜㅜ)
3. Owncloud 등 설치형 클라우드 프로그램으로 CSV 파일을 동기화하는 방법
제가 미처 생각하지 못한 더 좋은 방법이 있을 것 같네요 ㅜㅜ
답변 달아주실 분께 미리 감사드립니다 ^^
그럼 편안한 저녁 되세요~!
작성자
댓글 9
humit 님 안녕하세요? 저녁식사는 맛있게 하셨는지요? ^^
군 복무 중이라서 바쁘실텐데 이렇게 댓글 남겨주셔서 정말 번번이 감사합니다!
일단 파일을 비정기적으로 불러와도 될 것 같아요 :)
말씀해주신대로 1번 방법으로 해보겠습니다.
나중에 다른 사이트에서 유사한 작업을 또 하게 될 것 같은데요.
그 때에는 거의 실시간으로 업데이트가 되어야해서 말씀해주신대로 3번 방법으로 하겠습니다 ^^
그런데 답변해주신 내용 중에서
"csv 파일을 생성하는 부분에서 파일 생성이 끝난 경우 csv 파일을 보여주고자 하는 서버에 데이터를 전송하여 저장하는 방법"은
제가 전혀 생각하지 못한 방법이네요 ^^
여쭤보길 잘 했네요! 정말 감사합니다~!
구글링해보니 다음과 같은 스크립트가 있던데 대략 이런 방법을 말씀하신거죠?
제가 이번 주말에 더 공부해보겠습니다 :)
import subprocess
filepath = "some/complete/path/to/file"
hostname = "user@remote_system"
remote_path = "some/remote/path"
subprocess.call(['scp', filepath, ':'.join([hostname,remote_path])])
출처: https://stackoverrun.com/ko/q/2132293
바쁘신데 번번이 감사합니다!
그럼 humit 님께서도 환절기에 감기 조심하시고 편안한 저녁 되세요 ^-^
아마 웹호스팅에서는 scp 명령어로 업로드하는 것을 지원해주지 않을 것 같네요. 해준다면 저런 스크립트로 하시면 될 것 같네요.
제가 말한 방법은 웹호스팅에서 파일 업로드를 할 수 있는 환경을 만들어 놓고, (보안 문제가 있으니까 ip주소를 체크해서 VPS IP 주소가 아닌 경우에는 종료해서 업로드가 되지 않게 하는 방식으로요)
csv 파일을 생성하고 있는 서버에서 requests 모듈을 이용해서 파일 업로드를 하는 방식으로 구현하시면 되겠습니다 :)
앗 requests를 이용하면 되는군요 ^^
다행히 Stackoverflow 등에 예시가 있네요 :)
이 방법으로 시도해볼게요~
말씀하신 보안 문제에 대해서는 $_SERVER['REMOTE_ADDR'])을 이용하는 방법에 대해 주말에 좀 더 공부를 해보겠습니다 ㅠㅠ
그럼 humit 님께서도 좋은 저녁 되세요!
다시 한 번 진심으로 감사드립니다~!
넵넵 ㅎㅎㅎ 하시다가 모르시겠으면 댓글 달아주세요.
CSV 파일이 비공개 되어야 하는 파일인가요?
공개되어도 상관없다면 git을 이용해보는 방법도 좋을것 같습니다.
학생 신분이 있다면 git을 비공개 용도로도 사용할 수 있는 걸로 알고 있습니다.
CSV파일이 얼마나 갱신이 자주되는지 궁금합니다.
상시 갱신되는 정보라면 VPS서버에서 바로 불러오게 하는 방식이 좋을 것 같고
특정 시간에 갱신이 되거나 갱신되는 텀이 1~2시간 이상이 걸리는 거라면 정기적으로 크론탭 기능을 이용해서 rsync 로 동기화를 해도 됩니다.
rsync 의 경우 설치만 되어 있으면 복사속도도 빠르고 갱신이 되었을 때만 다운로드 하는 옵션도 있어서 상당히 편리할 겁니다.
공개되어도 상관없는 파일인지, 갱신 주기는 얼마나 되는지에 대한 정보가 더 있으면 좋을것 같습니다.
맛스타 님~ 요새 회선 때문에 바쁘실텐데 답변해주셔서 감사합니다 ^^
제가 경험이 없어서 파일의 공개 여부나 갱신 주기까지는 미처 생각을 못 했네요 ㅠㅠ
일단 이번에 시도해보려는 작업에서는 파일은 공개되어도 무방하고
(구글링만 하면 나오는 공개된 정보입니다)
갱신 주기는 1시간 정도로 생각하고 있습니다.
(VPS에서 크론탭을 이용해서 파이썬으로 CSV 파일을 1시간 주기로 생성하려고 합니다)
제가 주로 윈도우에서만 싱크프로그램을 사용해본 경험이 있어서
rsync를 거의 사용해보지 않았는데 이번 기회에 한 번 연습해봐야겠네요.
그리고 git을 사용하는 방법도 알아보겠습니다.
(현재는 제가 대학원에 등록을 안 한 상태여서 비공개는 어렵겠네요)
다음 번에는 거의 실시간으로 파일을 갱신해서 불러와야 하는 작업도 해야되고
유일한 정답이 있는 문제는 아닌 것 같으니 연습차원에서 다양한 방법으로 시도해보겠습니다.
그럼 맛스타 님께서도 편안한 저녁 되시고 감기 조심하세요~!
항상 감사드립니다 ^-^
웹서버 쪽에서 사용하실꺼면 db를 보통 제공할테니
파이썬으로 csv를 만들지 말고 웹서버쪽 db로 바로 입력하는 것은 안될까요?
외부 db 접속이 막려있을까요?
ftp가 가능하다면 ftp로 웹서버쪽에 업로드하는 방법도 가능할 것 같구요.
모여라꿈동산 님 안녕하세요?
답변해주셔서 감사합니다!
말씀하신 방법이 웹호스팅 측에서 지원만 해준다면 간명하고 확실한 방법이긴 하네요 ^^
제가 외부 DB 접속이 가능한지 여부를 확인해보겠습니다.
그럼 점심식사 맛있게 드세요 :)
얼마나 큰 파일인지는 모르겠지만 자주 읽을 필요가 있는 csv 파일인 경우에는 서버에 저장을 하는 방식으로 하시면 됩니다.
아무래도 csv 파일을 불러오는지에 따라서 구현이 달라질 필요가 있을 것 같네요.
비정기적으로 csv 파일을 불러와야 한다면 1번 방식을 택하는 것이 좋습니다.
매 시간과 같이 정기적으로 불러오게 된다면 2번 방식을 택하는 것이 좋습니다. 애초에 cron job이 일정한 주기마다 실행하는데 도움을 주는 것이라 생각하시면 됩니다. 하지만 csv 파일을 서버에 저장하는 로직은 직접 구현하셔야 합니다.
매우 짧은 시간마다 csv 파일이 업데이트가 되어야 한다면 3번 방식을 택하는 것이 괜찮아보이네요.
아니면 csv 파일을 생성하는 부분에서 파일 생성이 끝난 경우 csv 파일을 보여주고자 하는 서버에 데이터를 전송하여 저장하는 방법이 있겠네요.