1. Amazon EC2
아마존은 서버 수입으로 가장 큰 돈을 버는 회사다. 물류 회사가 아니다.
- https://console.aws.amazon.com/
- sungjoon.choi@cpslab.snu.ac.kr / adsl
- EC2
엘라스틱 컴퓨팅 / 많이 쓰면 더 많은 자원을 할당시키고, 더 많은 돈을 가져간다.
- Launch Instance
- Ubuntu Server 14.04 LTS
- m4.large 로 하는게 좋다고 하는데.. 이 역시도 느리다.
- Number of instances: 1
이것도 조금 문제인 것 같다. 정식 수업에 쓸 땐 더 늘릴 필요가 있다.
- Step6: Configure Security Group
: HTTP - TCP - 80
: HTTPS - TCP - 443
- Elastic IP를 발급 받아서 인스턴스와 연결 //
일종의 고정 IP를 받는 느낌이다.
2. Amazon Route 53
- Elastic IP를 발급 받아야한다.. How?
- 52.38.26.137 를 받았다. 이걸 인스턴스와 연결을 해야한다.
- 내 인스턴스의 public IP는 54.187.103.136 이다.
- 현재 인스턴스의 elastic IP에 빈칸을 클릭하고, Associate Address를 누르고, Instance에 running instance를 클릭하니, Associate이 되는 것 같다.
- 이렇게 하니, 현재 만든 AWS의 public IP가 elastic IP와 같아졌고, 이 값은 52.38.26.137 이다. 즉 앞서 받은 Elastic IP와 같다.
- 이제 Services를 누르고 Route 53으로 가보자.
3. Route 53
- 왠지 모르게 Domain registration이 맘에 든다. 해보자.
- enginius.io 를 샀다!!! 1년에 53달러이다.. 1달에 3천원
- 아직은 pending이다. 돈이 없어서 실패..
- https://enginius.me 를 신청, 기다리고 있다. 이건 좀 더 싸다.
- 오래걸린다. 돈은 빠져나갔는데...
- 오 되었다!! enginius.me 가 생겼다. 이제 이걸 52.38.26.137와 연결시키면 될 것 같다.
- Go to Record Sets
- Create Record Set
- Value에 52.38.26.137를 넣었다. 제발 되었길..
4. JupyterHub 설치하기
- 먼저 우리가 만든 서버 인스턴스로 들어가야 한다.
- 터미널을 연다.
- ssh -i /Users/human/Dropbox/AWS/keypair_aws.pem ubuntu@52.38.26.137
- 위의 커맨드를 치고 들어가면 서버에 접속이 된 것이다.
vi ~/.ssh/known_hosts
(여기서 기존에 설정되어있던 호스트, 아이피를 지워야한다. in case IP has changed)
vi ~/.ssh/config
(없으면 만들자)
# Personal Howepage
Host fc.enginius.me
HostName fc.enginius.me
Port 22
User ubuntu
IdentityFile /Users/human/Dropbox/AWS/seoul_reg_keypair.pem
위와같이 세팅을 해놓으면 터미널에서 다음과 같이 들어갈 수 있다.
그리고 퍼미션 파일은
chmod 400 ~/.ssh/config
으로 바꿔야 한다.
ssh fc.enginius.me
파이썬을 설치해야 한다고 합니다.
- 일단은 pip를 설치해보자.
vim start.sh
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install python-pip -y
sudo apt-get install python3-pip -y
sudo pip3 install jupyter
sudo npm install -g configurable-http-proxy
sudo pip3 install jupyterhub
sudo apt-get install get -y
chmod +x start.sh
./start.sh
쥬피터 허브를 설정
jupyterhub --generate-config
vim jupyterhub_config.py
아래 내용을 추가한다.
# jupyterhub_config.py
c.JupyterHub.ip = '0.0.0.0'
c.JupyterHub.port = 443
: 이때는 vim을 쓴다. (i: 편집, /: 검색, n: 다음번검색, wq!: 저장하고 닫기)
- 어디까지 된건지 모르겠지만.. 일단 되었다.
5. SSL을 적용하자.
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help
./letsencrypt-auto certonly --standalone -d fc.enginius.me
- 이렇게 하면 개인키와 인증키가 다음 폴더에 생긴다고 한다.
(짜증나서 sudo -s 로 root로 왔다.)
/etc/letsencrypt/live/fc.enginius.me/privkey.pem
/etc/letsencrypt/live/fc.enginius.me/fullchain.pem
- 그럼 다시 jupyterhub 폴더로 가서 파일은 변경한다.
# jupyterhub_config.py
c.JupyterHub.ssl_cert = '/etc/letsencrypt/live/fc.enginius.me/fullchain.pem'
c.JupyterHub.ssl_key = '/etc/letsencrypt/live/fc.enginius.me/privkey.pem'
sudo jupyterhub
이걸 치니까 몬가 된다. ㅜㅜㅜ
아래와 같이 LD_LIBRARY_PATH를 넣어줘야지 쿠다가 된다.
in "jupyterhub_config.py"
add
c.Spawner.env_keep.append('LD_LIBRARY_PATH')
___________________________________________
sudo -s => Get root account
jupyterhub -f ./jupyterhub_config.py
이제 유저를 추가해야 한다.
- sudo useradd -m enginius
- sudo passwd enginius
// 그리고 123로 하였다고 한다.
연구실 서버에 연결할 때는
sudo adduser --ingroup users sungjoon
JupyterHub에서 python2를 쓰기!
sudo pip install ipython
- ipython을 깐다.
sudo jupyter kernelspec list
- 이걸 하면 어떤 커널들이 있는지 나온다. (python3만 나온다.)
sudo python -m pip install ipykernel
- 이걸 하면 이것저것 설치를 오래 한다. 설치가 끝나도 몬가 여전히 작동은 잘 되는 듯 하다.
sudo python2 -m ipykernel install
- 이걸 하면 Installed kernelspec python2 in /usr/local/share/jupyter/kernels/python2와 같이 나온다.
https://enginius.me
6. 텐서플로우를 설치하자!
sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl
잘 된다.
하하하,,,ㅠㅠㅠㅠ
7. 아마존 서버 터미널 종료 후에도 돌아게 하자.
sudo apt-get install screen
cd /jupyterhub
sudo screen jupyterhub
ctrl + a + d : 이렇게 하면 screen에서 나온다.
: 즉 그냥 터미널이 보이지만, 뒤에서는 jupyterhub가 돌고 있는 것이다. 이제 ssh에서 나와도.. 되겠지?
스크린 활용법
screen
이러면 스크린이 켜져있다.
Ctrl + a
- c: virtual console
- n: switch to next
- p: switch back
- ": lists all available consoles
- d: 돌아간다. (이전에 돌던 프로그램은 계속 돈다. 이게 포인트!)
추가 패키지 설치
이걸로 해보자.
sudo apt-get build-dep python-matplotlib
이러면 matplotlib를 설치를 하는건다. 그리고 여기에 추가적으로 dependency까지 설치를 한다.
무언가 많은 일들이 일어나고 있다. 좀 불안하다. ....
일단 이거까지 수행을 하고, cnn코드를 돌렸을 때는 잘 돌아간다.
sudo apt-get install python-matplotlib
위의 라인까지 수행을 해야지 실제로 matplot lib가 설치가 된다!!
(https://github.com/jupyterhub/jupyterhub/wiki/Installation-of-Jupyterhub-on-remote-server)
sudo apt-get install python-scipy
이게 문제가 되려나? 여기까지는 잘 되는 듯 싶다.
sudo apt-get install python-pandas
여기까지도... 제발 / 여기까진 문제가 없다.
sudo pip install scikit-image
여기서 에러가 났다!!!
TypeError: <method 'max' of 'numpy.ndarray' objects> is not a Python function
-해결하기 위해서 dag라는 패키지를 지웠다. ..
sudo apt-get install libjpeg-dev
sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
sudo pip install pillow
여기까진 큰 문제가 없이 되는데, 여전히 scipy.misc.imread가 제대로 동작을 안한다.
vim python_packs.sh
(여기에 엄청난 버그가 숨어있다.ㅜㅜㅜ 몬진 모르겠다..)
- 절대 하지 말것!!!
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose -y
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev
(왠지 위에 커맨드가 문제인듯.. 하지말자. )
sudo apt-get install gfortran libopenblas-dev liblapack-dev -y
(이거 하니까 밑에 sudo pip3 install scipy 가 되는듯..? 아직 안끝났다..)
# 수찬님이 알려주심
sudo pip3 install scipy
(takes a lot of time, but... 오 되었다!)
sudo apt-get install libfreetype6-dev libxft-dev -y
sudo pip3 install matplotlib
sudo apt-get install libjpeg-dev -y
sudo pip3 install pillow
sudo apt-get install python3-pandas -y
sudo pip3 install -U scikit-image
chmod +x python_packs.sh
./python_packs.sh
sudo apt-get install python-opencv ??
cd $HOME
mkdir opencv_src
cd opencv_src/ git clone https://github.com/Itseez/opencv.git cd opencv/
mkdir release
cd release/
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
근데 이거 엄청 오래 걸린다.. opencv 설치는 쉽지 않다.
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
sudo apt-get install libxine2-dev
sudo ln /dev/null /dev/raw1394
- python2에선 되는데 python3에선 안된다.. why?
- 헐... OpenCV는 OpenCV3.0을 제외하고는 Python 3.x를 지원하지 않는단다...
8. 아마존 EC2로 파일 전송하기
ㅁhttps://www.youtube.com/watch?v=h
d4oL3WIPVM
ㅁ위의 링크를 확인하자.
ㅁ서버: ec2-52-38-26-137.us-west-2.compute.amazonaws.com
ㅁ사용자이름: ubuntu
ㅁ공개키인증: 받아놓은 keypair_aws.pem
ㅁ연결!
연결은 되는데 upload가 안된다.. 왜지?
아.. ubuntu라는 이름으로 들어갔기 때문에 해당 폴더에만 올릴 수 있다. 문제는 다른 아이디로는 들어가지지 않는다... jupyterhub은 enginius로 들어가는데..
//
아니다. 그냥 무식하게 하자.
sudo chmod 777 -R fastcampus/
: fastcampus란 아이디를 만들었는데, 해당 폴더를 그냥 777로 만들어버렸다. 이러면 잘 된다.
파일 옮기기
scp -r 로컬파일경로 cpslab@147.46.122.150:~/
9. 아마존 EC2 요금
시간 당 1달러 (천원)이면 하루에 2만 4천원, 한달에 72만원?
시간당 0.165달러이면 한달에 15만원이다...
'Enginius > Python&TensorFlow' 카테고리의 다른 글
Install TensorFlow with GPU (0) | 2016.04.14 |
---|---|
GitHub basics (0) | 2016.04.11 |
딥러닝 강의 1주차 + VirtualBox에 Ubuntu + Anaconda (4) | 2016.04.08 |
AWS EC2 Ubuntu 사용하기 + Jupyterhub 써보기 (0) | 2016.04.07 |
Basic Python Usage (0) | 2016.04.06 |