Hun's Blog

[Python] 웹 크롤링 1 - Ubuntu 18.04.3 에서 Python 3.7.4 설치 (+APM) 본문

Language/Python

[Python] 웹 크롤링 1 - Ubuntu 18.04.3 에서 Python 3.7.4 설치 (+APM)

jhk-im 2020. 4. 1. 20:42

참고

파이썬 레시피 - 웹 활용 입문편을 공부하면서 정리한 내용

https://wikidocs.net/36472

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

크롤링을 구현해야해서 파이썬에대해 공부를 시작했다.

위의 참고 링크에서 파이썬 입문자용 강의를 제공하고 있어서 해당 강의를 따라하면서 구현한 예제를 정리해 볼 생각이다. 먼저 예제 구현을 위해 파이썬을 셋팅한 부분부터 정리해보도록 하겠다. APM 에서 PHP와 MariaDB 는 예제에서 사용되지 않았지만 간단하게 자동설치 한 부분도 정리해 보았다.  

 

설치환경 

Ubuntu 18.04.3

Python 3.7.4

VirtualBox 6.1

Apache 2.4.29

PHP 7.2.24

Mariadb 10.1.44

 

VirtualBox + Ubuntu 설치 

1. VirtualBox 실행

 

2. VirtualBox 새로가기 만들기

  -> 폴더명 : TestServer -> 폴더명 지정

  -> 머신 -> 기타 -> 설치경로지정 

  -> 버전 -> Ubuntu (64-bit) 선택

  -> 다음 

 

3. 메모리 설정 

  -> 2048MB -> 나중에 변경가능

  -> 다음

 

4. 가상 머신 만들기

  -> 지금 새 가상 하드 디스크 만들기 선택

  -> 만들기

 

5. 하드 디스크 파일 종류

  -> VID(VirtualBox Disk Image) -> 선택

  -> 다음 

 

6. 물리적 하드 드라이브에 저장 선택

  -> 동적할당 선택

  -> 다음

 

7. 파일 위치 및 크기

  -> 파일위치 -> 변동없음  

  -> 하드디스크 크기 -> 50.00GB 

  -> 만들기

 

8. VirtualBox 시작 -> 시동디스크 선택 -> 시작 

 

9.  Welcom -> 한국어선택 -> Ubuntu 설치 클릭

 

10. 키보드레이아웃 -> 계속하기 

 

11. 업데이트 및 기타 소프트웨어 -> 일반설치 

 

12. 기타설정 -> 그래픽과 Wi-Fi 하드웨어 체크 -> 계속하기

 

13. 설치형식 -> 디스크를 지우고 Ubuntu 설치 -> 지금설치 -> 계속하기

 

14. 어디에 거주하고 계십니까? -> 서울 선택 -> 계속하기 

 

15. 당신은 누구십니까? -> 사용자명과 비밀번호 셋팅

 

16. 설치화면 -> 설치완료 -> 지금다시시작 -> 로그인 -> 설치완료 

 

Apache 설치 

1. 우분투 루트 계정권한 설정 

 *초기 시스템 관리자로 root 생성 후 패스워드 설정 

  -> sudo passwd root

  -> Enter New UNIX Password : 암호 지정 

  -> Reype New Nunix password : 암호 확인 

  -> passwd : 암호를 성공적으로 업데이트 했습니다.

 

2. sudo apt update && sudo apt upgrade 

 

3. sudo apt install apache2 

우분투 웹브라우저를 열고 localhost 입력하여 설치완료 화면 확인 

 

아파치 설치 확인

 

VirtualBox-Ubuntu 고정 ip 설정 

1. VirtualBox 설정 -> 네트워크 -> 어댑터2 -> 호스트전용 어댑터 -> 확인 

 

2. 제어판 -> 네트워크 및 공유센터 -> 어댑터 설정변경 -> VirtualBox Host-Only Network 우클릭

 -> 속성 -> ip 주소확인 ex) 192.168.56.1 (가상머신의 게이트웨이로 설정됨) 

 

3. VirtualBox 파일 -> 호스트 네트워크 관리자 -> ip 확인 -> DHCP 서버 사용함 체크 해제 

 

4. -> ubuntu 시작 

   -> sudo apt-get install net-tools

-> net-tools : 인터넷의 연결정보를 알아내는데 필요한 ifconfig,

      포트와 통신하고 있는 프로그램을 알아내는데 필요한 netstat과 같이

      ip 관리에 필요한 명령어들을 모아둔 패키지이다.

   -> ifconfig -a

-> 추가된 네트워크 인터페이스를 확인 ex) enp0s3

 

5. -> sudo vi /etc/netplan/*.yaml

-> 고정 ip에 대한 정보를 기입하는 곳이다.

-> 띄어쓰기 제대로 안하면 오류남

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
network:
 
 version: 2
 
 renderer: NetworkManager
 
 ethernets:
 
  enp0s3:
 
   addresses: []
 
   dhcp4: true
 
  enp0s8:
 
  addresses: [192.168.56.122/24]
 
   gateway4: 192.168.56.1
 
   nameservers:
 
    addresses: [8.8.8.8,8.8.4.4]
 
   dhcp4: no
 

-> 다음과같이 입력하고 저장

 

  -> sudo netplan apply

-> 설정내용 반영

   -> ifconfig -a

-> 변동내용 확인

   -> sudo /etc/init.d/apache2 restart

 

6. 가상머신 외부에서 브라우저 주소창에 IP:80 입력

-> index.html 뜨면 성공

 

외부 크롬 브라우저 확인

 

*가상머신 내부에서 코드작업을 하기엔 답답한 부분이 많아서 외부 에서 atom 으로 코드를 적어 .py 파일을 만들고 winscp를 통해 가상머신으로 넘겨주는 방식으로 예제를 진행하였다. 

 

*winscp

//설정방법

 

1. 우분투

   -> sudo apt-get install ssh

 

2. winscp 실행

   -> 호스트이름 ip주소 입력 / 포트번호 22

   -> 사용자이름 입력 / 비밀번호 입력

   -> 저장

로그인 확인

 

 

Python 설치

 

1.python 빌드를 위한 패키지 설치


sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install libncurses5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

 

2. python3 설치

wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

sudo tar xvfz Python-3.7.4.tgz

sudo cd Python-3.7.4

sudo ./configure

sudo make

sudo make install

python3 -V 

-> 설치 버전 확인 

 

idle-python3.7#sudo apt-get install idle-python3.7
idle-python3.7

 

3. Hello world! 출력 

cd /var/www/html 

-> index.html의 디렉토리 이동 

 

sudo gedit hellowrld.py 

1
print('Hello world!')
 

-> helloword.py 생성 

 

Hello word 출력 1

 

 

*Apache2 로 파이썬 실행하기 

1
2
#!/usr/bin/python3
print('Hello world!')
 

-> helloworld.py 수정 

 

sudo chmod a+x helloworld.py

-> python 파일이 웹서버에 의해서 실행되도록 실행권한을 허용

 

Hello world 출력 2

 

 

Python cgi -> 웹브라우저에서 실행 

sudo gedit /etc/apache2/sites-enabled/000-default.conf

-> 000-default.conf 파일 수정 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
        
        ...
        
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <Directory /var/www/html>
                AddHandler cgi-script .py
                Options ExecCGI
        </Directory>
        
        ...
        
</VirtualHost>
 

-> Document root(웹서버가 요청한 파일을 찾는 최상위 디렉토리)에 있는 파일 중 확장자가 py인 파일은 Python으로서 실행 되도록 한다.  

-> AddHandler cgi-script .py 

-> Options ExecCGI 

-> 수정하고 저장

 

sudo a2enmod cgi

-> cgi가 동작하도록 cgi 기능을 켠다. 

 

sudo service apache2 restart

 -> 웹서버를 재시작

 

1
2
3
#!/usr/bin/python3
print('content-type:text/html; charset=UTF-8\n')
print('Hello world!')
 

-> helloworld.py 수정 

크롬 브라우저 확인

 

파이어폭스 브라우저 확인 

 

 

*오류 발생시 오류 로그 확인 

sudo tail -f /var/log/apache2/error.log

 

 

 

MariaDB 설치 

1. sudo apt install mariadb-server 

 

2.  maria db 설정 

 * mysql_secure_installation 

  -> root 비밀번호 입력 요구 -> 비밀번호 없으므로 enter

  -> Enter current password for root(enter for none): root의 비밀번호를 설정 

  -> Set root password?  [Y/n]

  -> Remove anonymous users? [Y/n]

  -> Disallow root login remotely? [Y/n]

  -> Remove test database and access to it? [Y/n]

  -> Reload privilege tables now? [Y/n]

  -> 모두 enter 눌러도 무방 

 

3. MariaDB 접속

  -> sudo mysql -uroot -p

  -> 비밀번호 입력하고 접속 

  -> use mysql; 

* 사용자 추가 

mysql> create user '사용자명'@'%' identified by '비밀번호';

mysql> grant all privileges on *.* to '사용자명'@'%' with grant option;

mysql> flush privileges;

 

* 종속적 사용자 추가 

create user '사용자명'@'%' identified by '비밀번호';

GRANT ALL privileges ON 테이블명.* TO '사용자명'@'%';

flush privileges;

 

  -> quit;

 

 

PHP & PHP My Admin 설치

1. sudo apt install php 

 

2. sudo apt install php-mysql  ->  Maria DB 를 사용할 수 있도록 

 

3. service apache2 restart -> 아파치 재시작 

 

4. /var/www/html 디렉토리에 phpinfo.php 파일생성

*phpinfo.php

<?php phpinfo(); ?> 

 

5. sudo apt install phpmyadmin  -> php my admin 설치

 

6. sudo vi /etc/apache2/apache2.conf

마지막줄에 Include /etc/phpmyadmin/apache.conf 추가 

 

7. sudo /etc/init.d/apache2/ restart 

 

8. 웹브라우저에서 localhost/phpmyadmin 입력 

-> mysql 새로 생성한 아이디로 접속 확인  

 

 

 

참고 

https://opentutorials.org/course/3256/19932

 

활용 - 함수를 글목록 기능을 정리 정돈하기 - 생활코딩

수업소개 Python의 함수를 이용해서 글목록의 코드를 정리 정돈해서 재사용성을 높이는 방법을 살펴봅니다.  강의 소스코드 변경사항 create.py #!/usr/local/bin/python3 print("Content-Type: text/html") print() import cgi, os def getList(): files = os.listdir('data') listStr = '' for item in files: listStr = listStr

opentutorials.org

https://somjang.tistory.com/15

 

[Python]Ubuntu에 Python 3.7 설치하기!

1. Python 설치 전 라이브러리 설치하기 Ubuntu(또는 Putty)에서 터미널을 열어 아래의 코드를 입력합니다. 설치 중간 중간에 [ y | n ] 중에 고르라고 나오면 y를 타이핑하고 엔터를 해주시면 됩니다! $ sudo apt..

somjang.tistory.com

https://www.manualfactory.net/10460

 

Ubuntu 18.04 / Apache, PHP, MariaDB 설치하는 방법

Apache 설치 아파치 웹서버를 설치합니다. apt install apache2 웹브라우저로 접속하여 설치가 잘 되었는지 확인합니다. 접속할 주소는 서버의 IP입니다. MariaDB 설치 MariaDB 서버를 설치합니다. apt install mariadb-server 다음과 같이 명령하여 몇 [...]

www.manualfactory.net

https://webnautes.tistory.com/1185

 

Ubuntu 18.04에 LAMP ( Apache2, MySQL , PHP 7) 설치하는 방법

Apache2 웹서버, MySQL 데이터베이스 서버, PHP를 Ubuntu에 설치하는 과정을 소개합니다. LAMP는 운영 체제와 오픈 소스 소프트웨어 스택의 조합으로 Linux, Apache, MySQL, PHP의 첫글자만 가지고 만든 약어입니..

webnautes.tistory.com