Django Trend 프로젝트 정리
Web/Django

Django Trend 프로젝트 정리

뉴비뉴 2019. 10. 11.

Trend 프로젝트는

네이버, 다음, 구글의 인기검색어들을 한 페이지에서 확인 할 수 있는 웹사이트를 만들고자 시작한 프로젝트입니다.

 

이번 프로젝트에서는 Django의 CRUD 활용보다는 크롤링으로 가져온 데이터들을 화면에 뿌려주는 것을

중심적으로 공부해보려고 노력하였습니다. 그 결과 bs4와 셀레니움으로 데이터를 가져와보려고 노력하였고,

그 중 bs4를 사용하기로 결정하였습니다.

 

가장 첫 번째로 제 발목을 잡은 것은 동적으로 페이지를 로드하는 사이트들이였습니다.

그 부분에서 셀레니움을 사용하여 해결하려고 했으나 잘 찾아보니 동적으로 가져와서 정적으로 박히는 부분이 있어서

해당 부분을 bs4를 이용하여 가져왔습니다.

 

두 번째로는 bs4의 클래스 이름으로 데이터를 가져오는 부분에서 사이트마다 2개의 클래스이름이 중복되어 저장되어있다는 점이였습니다. 예를 들어 네이버는 1~20까지의 데이터에는 쓰레기값인 # 이 들어가 있었습니다. 그래서 간단하게 21~40까지 찾아서 출력하는 것으로 수정하였고, 처음에는 왜 # 이라는 것이 나오는 줄 몰랐지만 개발자도구에서 찾아보니 네이버, 다음, 구글 전부 다 쓰레기값으로 이런식으로 데이터들이 들어가있었고, 그 사이트들의 정보를 확인하고 코드를 짜서 정상적으로 데이터를 가져왔습니다.

 

세 번째로는 구글의 데이터가 빈 값으로 가져와지는 부분이였습니다. 해당 문제 때문에 셀레니움의 사용을 고려하였으나, RSS, xml 형태로 구글에서 데이터를 뿌려지는 것을 확인하고 bs4을 이용하여 데이터를 가져왔습니다.

for linkElement in soup.findAll('ht:news_item_url'): # findAll xml 의 형식을 크롤링할 때 사용
    x += 1
    link[x] = linkElement.text

 

마지막으로는 배포할 때 많은 문제를 겪었습니다.

pip install -r requiremnets.txt 명령어를 타이핑하면 오류가 발생하여 다운로드가 안되어서

bs4, requests, django==2.2.4 로 수동으로 다운로드하는 것으로 해결하였고, 보통 백업을 위해서 직접적인 uWSGI, Nginx 설정을 직접 건들리지 않고 심볼릭링크를 걸어 파일을 수정하는 식으로 사용하였는데, 전 직접 수정하는 방식으로 진행하였습니다.

 

    8  sudo apt-get update # apt-get update
    9  sudo apt-get install build-essential # 기존에 설치되어있던 패키지들 업데이트
   10  sudo apt-get install python3 # python3 다운로드
   11  python3 --version # 설치가 잘 되었는지 확인
   13  sudo apt-get install python3-pip # pip 다운로드
   17  sudo pip3 install --upgrade pip
   18  pip3 --version
   19  clear
   20  ssh-keygen -t rsa # 공개키 설정
   21  cat /home/ubuntu/.ssh/id_rsa.pub # 공개키가 잘 생성되었는지 확인하고, Git 에 deploy key로 등록
   22  git clone git@github.com:2044smile/Trend.git

   24  cd Trend/
   25  ls -al
   26  sudo apt-get install virtualenv # 프로젝트 폴더에서 가상환경 다운로드
   27  virtualenv -p python3 venv # 가상환경 생성 이름은 venv

   29  source venv/bin/activate # 가상환경 활성화
   30  pip install -r requirements.txt # 오류로 진행되지 않아 수동으로 다운로드하기로 
   31  pip list
   32  pip install django==2.2.4 # Django 수동 다운로드
   33  pip list
   34  pip3 list
   35  pip install requests
   36  pip install bs4
   37  ls -al
   38  pip list
   39  ls -al
   40  python manage.py runserver
   41  python manage.py runserver 0.0.0.0:8000 # Django manage.py 실행 테스트 정상

 

[!] 

41번과 같이 실행해도 웹에서 접근이 가능하지만 이런식으로 하면 재부팅이나 문제발생 시 runserver 를 해줘야하기 때문에 uwsgi 설정
   42  pip install uwsgi  # uwsgi 다운로드
   43  vi uwsgi.ini

 

[!]
[uwsgi]
chdir=/home/ubuntu/{프로젝트 폴더}
module={프로젝트 내 파일이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv
socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock

chmod-socket=666

 

   44  uwsgi --ini uwsgi.ini # 오류가 발생하지 않으면 정상적으로 수행
   45  sudo apt-get install nginx # nginx 다운로드
   46  sudo vi /etc/nginx/nginx.conf # 설정 수정

 

[!]
http {
        upstream django { # 추가 오타주의
            server unix:/home/ubuntu/Trend/uwsgi.sock;
        }
   47  sudo vi /etc/nginx/sites-enabled/default

 

[!] 
server {
location / {
                include /etc/nginx/uwsgi_params;
                uwsgi_pass django;
        }

        location /static/ {
                alias /home/ubuntu/Trend/static/;
        }

        location /media/ {
                alias /home/ubuntu/Trend/media/;
        }

}
   48  sudo service nginx restart

 

http://ec2-13-125-39-55.ap-northeast-2.compute.amazonaws.com/

 

index

NAVER 최근 인기 검색어 1위 정관장 홍삼톤 리뉴얼 2위 이하늬 플레어팬츠 3위 지하철 파업 4위 무신사 카파 패딩 5위 싸이월드 6위 코오롱티슈진 7위 w호텔 8위 밤새놀땐 네버다이 9위 정찬우 10위 고투부산진출 11위 구혜선 12위 아이슬란드 수도 13위 홍삼톤 14위 흥구석유 15위 에어쇼 16위 러브캐처 정찬우 17위 정관장 홍삼톤 18위 여환섭 19위 일본 태풍 20위 2019 에어쇼 D A U M 최근 인기 검색어 1위 여환섭 2위 싸이월

ec2-13-125-39-55.ap-northeast-2.compute.amazonaws.com

보안해야 될 사항

모바일에서 접속 시 화면 깨짐현상 발생

 

참고한 자료

https://www.youtube.com/watch?v=oGQ1HteFYnQ
https://rainsound-k.github.io/deploy/2018/04/25/instance-setting-and-django-deploy-part1.html
https://lhy.kr/ec2-ubuntu-deploy

 

Git

https://github.com/2044smile/Trend

 

 

 

http://ec2-13-125-39-55.ap-northeast-2.compute.amazonaws.com/

 

index

NAVER 최근 인기 검색어 1위 정관장 홍삼톤 리뉴얼 2위 이하늬 플레어팬츠 3위 지하철 파업 4위 무신사 카파 패딩 5위 싸이월드 6위 코오롱티슈진 7위 w호텔 8위 밤새놀땐 네버다이 9위 정찬우 10위 고투부산진출 11위 구혜선 12위 아이슬란드 수도 13위 홍삼톤 14위 흥구석유 15위 에어쇼 16위 러브캐처 정찬우 17위 정관장 홍삼톤 18위 여환섭 19위 일본 태풍 20위 2019 에어쇼 D A U M 최근 인기 검색어 1위 여환섭 2위 싸이월

ec2-13-125-39-55.ap-northeast-2.compute.amazonaws.com

댓글

💲 추천 글