7. 2. 웹서버로 활용하기 위한 구성품
2.1. SD카드
2.1.1. 물리적 크기에 따른 표기
2.1.2. 용량에 따른 표기
2.1.3. 속도에 따른 표기
2.1.4. 호환여부
2.2. 비디오 연결
2.3. 입력 연결
2.4. 전원 연결
2.5. 인터넷 연결
2.6. 정리
8. 2.1. SD카드
라즈베리파이와 함께 구입하면 가격이 비싸기 때문에 따로 구입하기를 바랍니다.
라즈베리파이에서 사용되는 OS인 라즈비안은 최소2GB, 권장 4GB이므로
용량과 가격을 생각했을때 16GB가 적당합니다.
8GB : 11,000원 ~ 13,000원
16GB : 13,000원 ~ 15,000원
32GB : 15,000원 ~ 20,000원
* 위의 시세를 형성하고 있으니 괜히 눈탱이 맞지 않도록 조심합시다.
진지한 궁서체입니다.
10. 2.1.2. 용량에따른표기
보통 SD카드라고 부르는 것에는 SD, SDHC, SDXC 등이 있습니다.
① SD: 2GB까지
② SDHC: 4GB에서 32GB까지
③ SDXC: 64GB부터
편하게 용량에 따라서 이렇게 구분되기는 하지만 편하게 SD카드라고 부르면 됩니다.
11. 2.1.3. 속도에따른표기
속도 표기 규격 중에 class와 UHS 등이 있는데 이것은 SD카드의 속도를 결정하는 단위입니다.
용량만 보고 사는 경우가 많은데 속도에 따라 가격이 틀려지므로 괜히 뒤통수 맞지 않기를 바랍니다.
class는 최저 보장 속도(MB/초)를 적는 것이고 UHS는 데이터의 이론적인 최대 전송 속도를 적습니다.
UHS-I 규격은 50MB/초(4비트 전송 기준), UHS-II는 이론적으로는 312MB/초까지 속도를 낼 수 있습니다.
물론 이론에 따른 것이라 속도가 딱딱 맞아떨어지지는 않습니다.
그 이상의 속도가 필요한 분야라면 카메라나 캠코더 정도이니까 논외로 하겠습니다.
무난하게 사용하시려면 10class와 UHS-I가 동시에 표기된 것이라면 오케이라고 아시면 되겠습니다.
13. 2.2. 비디오연결
최초 OS설치를 하기 위해 라즈베리파이와 모니터를 연결해야 하기 때문에
RCA나 HDMI로 모니터와 연결을 해야 하는데 쉽게 사용할 수 있는 HDMI로 연결합니다.
아래의 두가지 방식 중 사용할 수 있는 것을 선택해서 구매하도록 하면 되겠습니다.
HDMI -> DVI
HDMI -> HDMI
14. 2.3. 입력연결
마우스는 딱히 필요하지 않기 때문에 제외하겠습니다.
키보드는 무선을 사용할 수도 있지만 설치한 후에는 원격으로 접속해서 사용할 것이기 때문에
집에 있는 usb 키보드 가져다가 연결하시면 됩니다.
15. 2.4. 전원연결
라즈베리파이에는 micro USB로 전원을 넣어주어야 합니다.
micro USB는 요즘 사용하는 스마트폰의 충전잭이라고 생각하시면 됩니다.
편하게 전원연결을 하기 위해서 전원코드가 달린 것이 아닌 USB <-> micro USB를 사용하시면 됩니다.
이렇게 사용하면 컴퓨터 전원이 꺼져있는 상태에서도 전원을 가져와서 쓰기 때문에 편리합니다.
16. 2.5. 인터넷연결
와이파이 동글을 사용하여 무선 인터넷을 연결하는 방법도 있으나
여기서는 그냥 랜선 연결을 하겠습니다.
17. 3. 운영체제 라즈비안 설치방법
3.1. 라즈비안wheezy 다운로드
3.2. win32diskimager 다운로드
3.3. SD카드에 쓰기
3.4. 부팅 전 케이블 연결
3.5. 부팅
18. 3.1. 라즈비안wheezy 다운로드
라즈베리 공식 홈페이지에서 라즈비안을 다운받습니다.
http://www.raspberrypi.org/downloads
19. 3.2. win32diskimager 다운로드
win32diskimager 를 다운받습니다.
http://sourceforge.net/projects/win32diskimager/
20. 3.3. SD카드에쓰기
win32diskimager 를 실행해서 SD카드에 다운받은 라즈비안을 담습니다.
라즈비안 img 파일을 선택해주고 현재 SD카드가 연결되어 있는 드라이브를
확인해준 후에 write 버튼을 눌러 SD카드에 라즈비안 운영체제를 넣어줍니다.
소요시간은 5분 내외입니다.
원래 용량이 얼마였건간에 56MB로 줄어듭니다.
이 것은 나중에 설정으로 변경이 가능하니 신경을 안 써도 됩니다.
21. 3.4. 부팅전케이블연결
라즈베리파이 합체!!!
① 라즈베리파이 - HDMI케이블 - 모니터
② 라즈베리파이 - 키보드
③ 라즈베리파이 - 랜선 - 공유기나 모뎀
④ 라즈베리파이 - SD카드
⑤ 라즈베리파이 - micro USB - 컴퓨터 USB포트
22. 3.5. 부팅
SD카드를 연결한 후 micro USB를 연결하여 전원을 넣어주면
켜지면서 자동으로 설치가 되기 시작합니다.
23. 4. 환경설정
①Expand Filesystem
②Change User Password
③Enable Boot to Desktop/Scratch
④InternationalisationOptions
⑤Enable Camera
⑥Add to Rastrack
⑦Overclock
⑧Advanced Options
⑨About raspi-config
25. 4. 환경설정(①)
① Expand Filesystem
가장 중요한 설정입니다.
라즈비안을 SD카드에 담을때 자동으로 용량이 작게 설정이 됩니다.
라즈비안을 설치한 후에는 반드시 이 항목을 선택해줌으로써
나머지 공간도 사용할 수 있도록 해주어야 합니다.
26. 4. 환경설정(②)
② Change User Password
라즈비안은 리눅스 운영체제인데 기본으로 최고관리자계정인 root와
일반 계정인 pi가 존재합니다.
그 중 pi의 초기 암호는 raspberry 이므로 꼭 수정해주어야 합니다.
27. 4. 환경설정(③)
③ Enable Boot to Desktop/Scratch
* Console Text console, requiring login (default)
Console로 로그인 하면서 Login을 요청하는 Option 입니다.
우리는 putty로 접속하여 사용할 것이기 때문에 이 항목을 선택하시면 됩니다.
* Desktop Log in as user 'pi' at the graphical desktop
pi 계정으로 로그인되면서 GUI환경으로 접속하게 됩니다.
* Scratch Start the Scratch programming environment upon boot
scratch라는 programming 환경으로 부팅하는 항목인데 무시하셔도 됩니다.
28. 4. 환경설정(④)
④ Internationalisation Options
* Change Locale - Set up language and regional settings to match your location
이 옵션은 언어를 맞추는 옵션인데 라즈비안에서 한글을 사용하기 위해 선택해주는 옵션입니다.
항목 중 en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8, ko_KR.UTF-8 UTF-8 세개를 선택해주시면 됩니다.
선택은 스페이스바로 선택할 수 있고 세 개 모두 선택한 후 tab키로 이동하여 ok를 눌러주시면 됩니다.
29. 4. 환경설정(④)
* Change Timezon - Set up timezone to match your location
Asia를 선택하고 tab키를 눌러 이동하여 ok를 눌러줍니다.
Seoul을 선택하고 tab키를 눌러 이동하여 ok를 눌러줍니다.
* Change Keyboard Layout - Set the keyboard layout to match your keyboard
특별한 키보드가 아니라면 딱히 설정해줄 필요는 없습니다.
30. 4. 환경설정(⑤~⑥)
⑤ Enable Camera
카메라를 사용할 것인지 정하는 옵션인데 카메라를 사용하지 않기 때문에
무시하셔도 됩니다.
⑥ Add to Rastrack
닉네임과 이메일을 입력하면 라즈베리파이의 분포도에 자신의 라즈베리파이가
포함이 됩니다.
아래의 사이트에서 등록된 라즈베리파이의 분포도를 볼 수 있습니다.
무시하셔도 되는 옵션입니다.
31. 4. 환경설정(⑦~⑧)
⑦ Overclock
오버클럭을 하는 옵션인데 큰 성능향상은 없기 때문에 무시하셔도 됩니다.
⑧ Advanced Options
A1 Overscan - You may need to configure overscan if black bars are present on display
구형의 디스플레이를 사용할 경우 이 옵션을 사용하여 설정해줄 수 있지만 무시합니다.
A2 Hostname - Set the visible name for this Pi on a network
네트워크상에서 보여지는 명칭을 변경하는 옵션입니다.
기본적으로 raspberrypi 로 정해져있는데 다른 이름을 임의로 정해줍니다.
A3 Memory Split - Change the amount of memory made available to the GPU
GPU에 할당하는 메모리를 16/32/64/128/256mb 단위로 정해주는 것인데
원격으로 CUI 기반으로 작업할 것이기 때문에 16으로 정해줍니다.
32. 4. 환경설정(⑧~⑨)
A4 SSH - Enable/Disable remote command line access to your Pi using SSH
SSH를 사용할 것인지 묻는 여부인데 SSH를 선택해주어야 원격으로 접속이 가능하기
때문에 꼭 선택해줍니다.
A5 SPI - Enable/Disable automatic loading of SPI kernel module (needed for e.g. PiFace)
SPI kernel module을 자동으로 로딩하는 옵션인데 사용하지 않으므로 무시합니다.
A6 Audio - Force audio out through HDMI or 3.5mm jack
오디오를 HDMI로 출력할 것인지 3.5mm jack으로 출력할 것인지 정하는 옵션인데
자동으로 선택되므로 무시합니다.
A7 Update - Update this tool to the latest version
라즈비안을 최신으로 업데이트 시켜주는 옵션인데 GUI에서 업데이트하는 것보다
CUI에서 업데이트하는 것이 빠르므로 나중에 업데이트 시켜줄 것이기 때문에 무시합니다.
⑨ About raspi-config
이 설정에 관해 소개하는 글입니다. 무시합니다.
* 모든 설정을 마친 후에 Finish를 선택하여 재부팅을 합니다.
34. 5.1. root 계정활성화
초기 설정을 마치면 재부팅을 합니다.
재부팅이 되면 로그인 아이디와 패스워드를 묻는데 당황하지 마시고 계정을 적는 란에는
pi를 입력하시고 Password 에는 초기설정에서 입력하신 패스워드를 입력해줍니다.
패스워드를 수정하지 않았다면 raspberrypi 를 입력합니다.
* 잘 보시면 kkom login 이라고 적혀있는데 앞서 초기설정에서 hostname에
적은 명칭하고 동일한 것을 알 수 있습니다.
라즈비안을 설치하면 root라는 최고관리자 아이디와 pi라는 일반 아이디가 생깁니다.
설치 후 root는 활성화되지 않으므로 아래와 같이 패스워드를 설정함으로써 활성화시켜줍니다.
sudo passwd root
35. 5.2. 계정설정
root계정으로 뭔가 하다가 문제가 되면 새로 깔아야 하는 상황이 발생되므로
왠만하면 root 계정으로 작업하는 것은 지양하고 다른 계정으로만 작업하는 것을 권장합니다.
pi 계정은 기본적으로 만들어지는 계정이므로 다른 계정을 만들고
이 계정은 삭제하는 것이 좋습니다.
계정명은 자신이 정하고 싶은 것을 적어주면 됩니다.
여기서는 kuma119라고 하겠습니다.
아래의 명령으로 계정을 하나 만들어 줍니다.
sudo usseradd kuma119
아래의 명령으로 비밀번호를 설정해줍니다.
sudo passwd kuma119
아래의 명령으로 새로 만든 계정의 디렉토리를 만들어줍니다.
sudo mkdir /home/kuma119
아래의 명령어로 새로 만든 계정의 디렉토리의 소유권을 변경해줍니다.
sudo chown kuma119 /home/kuma119
아래의 명령으로 기존의 pi계정의 설정파일을 새로 만든 계정으로 복사해줍니다.
sudo cp /home/pi/.profile /home/kuma119
sudo cp /home/pi/.bashrc /home/kuma119
sudo cp /home/pi/.bash_logout /home/kuma119
36. 5.2. 계정설정
아래의 명령으로 sudo를 쓸 수 있는 계정을 추가할 수 있도록 환경파일을 열어줍니다.
sudo라는 것은 super user만 사용할 수 있는 명령어를 sudo를 써줌으로써 사용할 수 있게
해주는 명령어입니다.
우리는 super user인 root를 사용하지 않고 따로 만든 계정을 사용할 것이므로
프로그램들을 설치할때 sudo를 사용해줍니다.
sudo nano /etc/sudoers
맨 마지막에 있는 구문을 새로 만든 계정인 kuma119로 수정해 줍니다.
pi ALL=(ALL) NOPASSWD: ALL -> kuma119 ALL=(ALL) NOPASSWD: ALL
수정한 후 ctrl+o를 누르면 저장을 할 것인지 묻는데 엔터를 누르면 저장이 됩니다.
저장을 한 후 ctrl+x를 눌러서 나옵니다.
37. 5.2. 계정설정
아래의 명령어를 입력하여 pi계정을 로그아웃합니다.
logout
새로운 계정으로 로그인한 후 아래의 명령어로 기존의 pi 계정을 삭제해줍니다.
sudo deluser pi
아래의 명령어를 입력하여 홈디렉토리를 삭제해줍니다.
rm -rf /home/pi
43. 8. 터미널 접속(putty)
8.1. SSH 설정
8.2. putty 다운로드
8.3. 터미널 접속
8.4. 터미널 명령어
44. 8.1. SSH 설정
라즈비안 설치 후 나오는 초기 설정화면에서 ssh항목을 사용한다고 설정을 하였다면
추가로 설정할 것은 없습니다.
만약 설정을 하지 않았다면 아래의 명령어를 사용해 환경설정화면으로 진입하여
SSH를 사용한다고 설정을 해주셔야 합니다.
sudo raspi-config
45. 8.2. putty 다운로드
아래의 주소로 접속하여 다운로드 받습니다.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
47. 8.3. 터미널접속
알아낸 ip주소를 Host Name에 적고 SSH를 선택한 후 Open을 눌러서 접속합니다.
48. 8.4. 터미널명령어
/ 디렉토리 표시
. 현재 디렉토리
.. 상위 디렉토리
cd 디렉토리 이동
ls 디렉토리 내용 출력
mkdir 디렉토리 생성
rmdir 디렉토리 삭제
pwd 현재 작업 디렉토리 절대 주소 출력
cp 파일 복사 (디렉토리 포함은 '-r')
mv 파일 이동
rm 파일 삭제 (디렉토리 포함은 '-r')(강제 삭제는 -f)
cat 파일 내용 출력
more 파일 내용 페이지 단위로 출력
less 파일 내용 페이지 단위로 출력
49. 8.4. 터미널명령어
켜는 법은 전원 연결을 하면 됩니다.
전원선이 연결되어 있을 경우는 뺐다가 다시 연결하면 됩니다.
전원을 끄려면 아래의 명령어 중 하나를 쓰시면 됩니다.
sudo shutdown -h now
sudo halt
재부팅을 하시고 싶으시면 아래의 명령어 중 하나를 쓰시면 됩니다.
sudo shutdown -r now
sudo reboot
51. 9.1. 다운로드
아래의 링크에서 파일질라를 다운로드 받습니다.
https://filezilla-project.org/
52. 9.2. 연결방법
설치 후에 사이트관리자를 열어서 설정해줍니다.
호스트에는 아이피를 입력해줍니다.
공유기가 설치되어 있다면 포트포워딩이나 DMZ설정 후에 공유기 ip를 입력해주시면 됩니다.
(포트포워딩과 DMZ는 나중에 설명하겠습니다.)
프로토콜은 SFTP로 선택해주고 로그온 유형은 일반으로 선택해줍니다.
53. 9.3. 편의성
접속시 기본으로 연결되는 디렉토리를 설정할 수 있고 연결된 컴퓨터의 디렉토리와
자동으로 위치 동기화를 시킬 수가 있습니다.
고급탭을 선택해주고 기본 로컬 디렉토리를 자신의 디렉토리로 설정해줍니다.
기본 리모트 디렉토리에 서버의 디렉토리를 적어줍니다.
아파치 설치 후에 /var/www 를 적어주시면 기본적으로 웹에서 접속될 디렉토리로 설정이 됩니다.
그리고 탐색 동기화 기능 사용을 체크해줍니다.
54. 10. nodejs 설치
10.1. 다운로드
10.1.1. wget
10.1.2. FTP
10.2. 압축풀기
10.3. 설치할 디렉토리 이동
10.4. 빌드환경설정
10.5. 빌드
10.6. 설치
10.7. 테스트
55. 10.1. 다운로드
다운받는 방법에는 라즈베리파이에서 바로 다운받을수 있는 방법과
다운받아서 FTP로 업로드하는 방법이 있습니다.
wget으로 바로 다운받는 방법은 버전마다 주소가 변경이 되고
속도를 비교해서도 느리기 때문에 FTP로 업로드하는 방식을 하시는 것을 권장합니다.
56. 10.1.1. wget
다운받아서 저장될 디렉토리로 이동합니다.
cd /home/kuma119
아래의 url은 버전이 바뀔때마다 변경되므로 다운받아서 ftp로 올리는 방법을 추천합니다.
sudo wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz
57. 10.1.2. FTP
아래의 링크로 들어가서 source code를 다운로드 받습니다.
http://nodejs.org/download/
58. 10.2. 압축풀기
wget으로 직접 받거나 웹상에서 다운로드 받아서 FTP로
업로드한 후에 tar 파일을 저장한 디렉토리로 이동합니다.
* FTP로 업로드할 경우에는 업로드할 디렉토리에 쓸 수 있는
권한이 있어야 합니다.
이 부분은 리눅스의 디렉토리 권한에 대해서 조금만
찾아보시면 알 수 있습니다.
앞서 설명한 새로 만든 계정의 홈디렉토리의 소유권을
변경한 것도 이런 이유입니다.
다운로드 받은 파일을 보면 tar형식으로 압축되어 있습니다.
해제하는 명령어는 아래와 같습니다.
cd 명령어를 사용하여 nodejs설치 압축파일이 있는
디렉토리로 이동합니다.
아래의 명령어를 실행하여 압축을 풀어줍니다.
* 명령어에서 "node-v0.10.26.tar.gz"은 버전마다 바뀌므로
ls명령어를 사용하여 다운받은 파일의 이름을 확인하기
바랍니다.
PC에 알집이 설치되어 있다면 알집으로 직접 푸신 후에
FTP로 업로드 하는 것을 추천합니다.
sudo tar xvzf /home/kuma119/node-v0.10.26.tar.gz
59. 10.3. 설치할디렉토리이동
nodejs의 압축을 푼 디렉토리로 이동합니다.
여기서 압축을 푸는 것은 어떤 디렉토리에 해도 딱히 상관은 없습니다.
cd /home/node-v0.10.26.tar.gz
혹시 압축을 푼 후에 어디에 풀렸는지 모를 경우 아래의 명령어로
어디에 압축이 풀렸는지 확인할 수가 있습니다.
find / -name node.js -type f
60. 10.4. 빌드환경설정
리눅스에서는 바이너리코드를 설치하기 위해서 빌드환경설정을 하게 됩니다.
아래의 명령어를 입력하면 자동으로 설정을 합니다.
sudo ./configure
61. 10.5. 빌드
아래의 명령어를 입력하여 설치할 수 있는 상태로 만들어줍니다.
sudo make
* 소요시간 : 최소 3시간 이상
엄청 걸리므로 책 한 권 읽으시기 바랍니다.
62. 10.6. 설치
아래의 명령어를 입력하여 설치를 합니다.
sudo make install
63. 10.7. 테스트
설치 후에 아래의 명령어로 설치여부를 확인합니다.
node -v
아래의 소스를 입력한 후 ftp로 업로드하고 테스트를 해봅니다.
업로드 경로는 어느 곳에 올려도 상관은 없지만 익숙하지 않다면 자신이 만든 아래의 경로에 업로드해줍니다.
/home/kuma119
소스는 아래와 같이 입력하고 test.js 라는 파일명으로 저장해줍니다.
var http = require('http');
var server = http.createServer(function (request, response){
response.writeHead(200, {"Content-Type" : "text/plain"});
response.end("Hello Worldn");
});
server.listen(8000);
console.log("Server running at http://127.0.0.1:8000/");
포트는 기본적으로 설정된 8000입니다.
실행은 아래의 명령어로 하시면 됩니다.
sudo node /var/www/test.js
64. 10.8. 업데이트
아래의 명령어를 차례로 입력하면서 업데이트 해줍니다.
mysql 을 사용하기 위해 설치하는 업데이트입니다.
sudo npm install mysql
ejs는 nodejs에서 사용되는 템플릿 모듈입니다.
sudo npm install ejs
express는 각 요청을 처리해줄 수 있는 서버를 구성해주는 프레임워크입니다.
sudo npm install express
65. 11. APM 설치
11.1. Apache 설치
11.2. MySQL 설치
11.3. PHP 설치
11.4. phpMyAdmin 설치
11.5. phpMyAdmin 확인
11.6. phpMyAdmin 사용-데이터베이스 생성
11.7. phpMyAdmin 사용-유저생성
11.8. phpMyAdmin 확인-테이블 생성
11.9. phpMyAdmin 확인-테스트
66. 11.1. Apache 설치
아래의 명령어를 사용하여 아파치를 설치합니다.
sudo apt-get install apache2
* 만약 설치하려고 할 때 아래와 같은 메시지가 나온다면 다음의 명령어를 실행해주고 다시 설치하면 됩니다.
설치하는 도중에 설치하면 용량이 얼마나 차지하는지 알려주고 설치할지 말지 여부를
물어보는데 쿨하게 y를 누르고 엔터를 쳐서 계속 설치해줍니다.
67. 11.1. Apache 설치
설치 후에 아래의 명령어를 실행하면 새로운 디렉토리가 생긴 것을 알 수 있습니다.
ls –al /var/
/var/www/ 라는 디렉토리인데 이 디렉토리는 아파치 웹서버가 실행될 때 기본적으로
보여주는 디렉토리입니다.
예를 들어 브라우저에 http://라즈베리파이의아이피주소/ 로 접속했을 때 보여주는 디렉토리입니다.
68. 11.1. Apache 설치
이때 /var/www/ 디렉토리의 소유권은 root로 되어 있으므로 아래의 명령어를 사용하여 소유권 변경을 합니다.
여기서 kuma119는 새로 만든 계정입니다.
이렇게 소유권을 변경하는 이유는 FTP로 파일을 올릴 때 해당 디렉토리에 쓸수 있는 권한이 있어야
업로드가 가능하기 때문입니다.
sudo chown kuma119 -R /var/www
아래의 명령어를 사용하여 라즈베리파이가
시작할 때 자동으로 아파치를 실행하도록 해줍니다.
sudo update-rc.d apache2 defaults
69. 11.1. Apache 설치
아래의 명령어를 실행하여 새로 시작하여 테스트를 해줍니다.
shutdown -r now
라즈베리파이가 재시작된 후 /var/www 디렉토리에 아래와 같이 index.html 파일을 만들어 업로드 해줍니다.
<html><body>
hello, World
</body></html>
아파치는 기본적으로 포트는 80입니다.
브라우저에서 보통 아이피를 입력해서 서버에 접속을 하게 되면
기본적으로 80번 포트로 접속을 시도하게 되기 때문에 이렇게 아이피만 입력하면 접속됩니다.
70. 11.2. MySQL 설치
아래의 명령어를 사용하여 mysql을 설치합니다.
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
설치할때 용량이 어느정도 필요한지 나오고 계속할 것인지 물어봅니다.
이 때 y를 입력하고 엔터를 치시면 됩니다.
* install 중간에 password를 입력하라고 나오는데 이때 입력하는 비밀번호는
mysql의 비밀번호이기 때문에 혼동하지 않도록 합니다.
71. 11.2. MySQL 설치
아래의 명령어로 설치여부를 볼수 있습니다.
ps 명령어는 현재 어떤 프로세스들이 실행되고 있는지 보는 명령어입니다.
ps -ef | grep mysqld
mysql이 처음 설치되면 로컬에서만 접속이 되도록 되어 있습니다.
아래의 명령어를 사용하여 환경설정 파일을 수정하는 화면으로 이동합니다.
sudo nano /etc/mysql/my.cnf
아래의 구문을 찾아서 아래와 같이 수정하여 줍니다.
변경전-
bind-address = 127.0.0.1
변경후-
#bind-address = 127.0.0.1
72. 11.3. PHP 설치
아래의 명령어를 사용하여 php를 설치합니다.
sudo apt-get install php5-common php5 libapache2-mod-php5
설치할때 용량이 어느정도 필요한지 나오고 계속할 것인지 물어봅니다.
이 때 y를 입력하고 엔터를 치시면 됩니다.
아래의 파일을 하나 만들어서 phpinfo.php라는 이름으로 저장합니다.
<? phpinfo(); ?>
ftp로 /var/www 디렉토리에 업로드해주고 아래의 url로 확인해봅니다.
http://서버아이피/phpinfo.php
73. 11.4. phpMyAdmin설치
아래의 명령어를 사용하여 phpMyAdmin을 설치합니다.
sudo apt-get install phpmyadmin
설치할 때 용량이 어느 정도 필요한지 나오고 계속할 것인지 물어봅니다.
이 때 y를 입력하고 엔터를 치시면 됩니다.
74. 11.4. phpMyAdmin설치
phpmyadmin 은 딱히 다른 툴로 mysql을 조작할 필요없이 웹서비스 상에서
직접 mysql을 조작할 수 있도록 해주는 php 기반의 프로그램입니다.
우리는 apache를 설치했기 때문에 apache2를 선택해 줍니다.
설치 중에 phpmyadmin 접속시에 사용될 비밀번호를 정해주고 ok를 선택하여
나가줍니다.
75. 11.5. phpMyAdmin확인
접속하여 제대로 설치가 되었는지 확인해봅니다.
http://서버아이피/phpmyadmin
Username에는 root를 입력하고 Password에는 앞서 설정한 비밀번호를 입력해줍니다.
76. 11.6. phpMyAdmin사용-데이터베이스생성
Database 탭을 선택하고 Create new database 에 test_study 라고 입력하고
collation으로 utf8_general_ci 를 선택해줍니다.
collation 이란 데이터베이스에서 사용할 언어셋을 지칭하는데
한글도 사용하기 위해 utf8_general_ci 를 선택합니다.
77. 11.7. phpMyAdmin사용-유저생성
왼편을 보시면 test_study 데이터베이스가 추가된 것을 확인할 수 있습니다.
새로 만든 데이터베이스인 test_study를 사용하기 위해서는
사용할 사용자를 생성한 후 지정해 주어야 합니다.
Privileges 탭을 선택하고 Add a new User를 클릭하여 유저생성을 할 수 있는 화면으로 이동합니다.
78. 11.7. phpMyAdmin사용-유저생성
User name은 임의로 지정을 해주시고 Host에는 Local을 선택해줍니다.
Password에는 사용할 비밀번호를 입력해줍니다.
Password는 지정하기 귀찮다면 Generate password로 패스워드를 자동으로 생성해 줄 수 있습니다.
생성된 비밀번호는 따로 메모해 두어야 합니다.
데이터베이스의 권한은 따로 공부를 해야 하기 때문에 유저명과 동일한 데이터베이스에 관해
모든 권한을 주도록 하는 Create database with same name and grant all privileges 를 선택해줍니다.
이 옵션을 선택해서 유저를 생성해 줄 경우 동일한 이름의 데이터베이스가 생성되기 때문에
앞의 11.6.의 데이터베이스 생성은 무시하고 유저 생성만 해주셔도 됩니다.
81. 11.8. phpMyAdmin사용-테이블생성
SQL탭을 선택하고 테이블 생성쿼리를 입력한 후 Go 버튼을 눌러 실행해 줍니다.
생성 후에 좌측에 테이블이 생성된 것을 확인할 수 있습니다.
create table test_nodejs(
idx int NOT NULL AUTO_INCREMENT,
mem_name char(20),
mem_tel char(20),
mem_addr char(255),
PRIMARY KEY (idx)
);
82. 11.9. phpMyAdmin사용-테스트
자료를 입력합니다.
테이블을 생성할 때 idx 필드를 자동증가로 만들었기 때문에 insert 구문에는 입력하지 않아도 자동으로 증가되어 입력됩니다.
INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES ('터미널', '010-1234-5678', '서울시 광진구 구의동');
INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES ('우체국', '02-5687-1258', '서울시 영등포구 여의도동');
INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES ('횟집', '054-2345-2187', '경북 포항시 남구 오천읍');
84. 11.9. phpMyAdmin사용-테스트
입력된 자료를 수정해봅니다.
우체국의 데이터를 변경해보겠습니다.
우체국의 데이터는 idx가 2이므로 이것을 조건으로 하여 수정하겠습니다.
UPDATE `test_nodejs` SET mem_name='음식점', mem_tel='031-5418-6548', mem_addr='경기 수원시 팔달구' where idx=2
88. 12. 외부와의 통신
12.1. 공유기 접속
12.2. DMZ 설정
12.3. 포트 포워딩
12.4. 아파치 포트변경
12.5. 테스트
89. 12.1. 공유기접속
공유기에 접속을 합니다.
여기서 공유기는 iptime 공유기에 한해 설명하겠습니다.
192.168.0.1 로 접속을 하면 공유기의 접속화면이 나옵니다.
공유기가 연결된 컴퓨터가 외부로 통신을 하기 위해서는
DMZ설정이나 포트 포워딩을 해주어야 합니다.
여기서 문제시 되는 것이 있는데 인터넷 서비스를 제공하는 업체에서는 기본적인 웹서비스 포트인
80번을 막아놓습니다.
그렇기 때문에 우리는 80번 포트가 아닌 2080포트로 외부에서 접속하게 하도록 바꾸어 주어야 합니다.
90. 12.2. DMZ 설정
좌측의 메뉴탐색기에서 고급설정의 NAT/라우터 관리에 들어가서
DMZ/Twin IP설정을 선택하여 들어갑니다.
내부 IP주소에는 라즈베리파이의 ip주소를 적으면 됩니다.
여기서 DMZ란 외부로 모든 포트를 개방한다는 의미인데 하나의 공유기에
하나의 DMZ밖에 설정이 안되고 보안위험이 있으므로 정말 귀찮지 않은 이상에는
포트 포워딩을 해주는 게 더 좋습니다.
91. 12.3. 포트포워딩
포트 포워딩은 외부에서 특정 포트로 요청한 응답을 네트워크 내의 정해진 컴퓨터의 포트로
연결해준다는 뜻입니다.
만약 공유기의 ip 주소가 253.122.323.123이라면 외부에서 접속을 하려면 주소창에
http://253.122.323.123:2080라고 입력을 하게 될 것입니다.
이 때 2080번 포트로 들어오려는 요청을 공유기가 받게 되고 공유기의 설정에 따라
2080번 포트로 들어온 요청일 경우에는 공유기 내의 네트워크의 미리 정해진 컴퓨터의
2080번 포트로 연결해줍니다.
이 것을 포트 포워딩이라고 합니다.
내부 IP주소에는 요청을 받았을 때 연결해줄 PC의 IP주소를 입력해줍니다.
규칙이름은 임의로 rasberry로 적어줍니다.
외부포트와 내부포트는 모두 2080으로 적어주고 추가 버튼을 눌러 등록해줍니다.
92. 12.4. 아파치포트변경
앞서 말한 바와 같이 아파치에서 다른 포트를 연결해주기 위해 설정파일을 변경해줍니다.
우리는 기본 포트 80번이 아닌 2080번으로 연결을 해주도록 하겠습니다.
아래와 같이 포트설정하는 환경파일을 열고 수정해줍니다.
sudo nano /etc/apache2/ports.conf
NameVirtulHost *:80 -> NameVirtulHost *:2080
Listen 80 -> Listen 2080
93. 12.4. 아파치포트변경
아래와 같이 기본적인 가상호스트 설정파일을 열어 포트 부분을 수정해줍니다.
여기서 DocumentRoot 부분은 웹으로 접속시에 기본적으로 보여주는 디렉토리인데
/var/www 을 다른 디렉토리로 변경하셔도 됩니다.
sudo nano /etc/apache2/sites-available/default
<VirtualHost *:80> -> <VirtualHost *:2080>
94. 12.5. 테스트
설정을 한 후에는 아파치 서비스를 재시작 해주어야 합니다.
sudo /etc/init.d/apache2 restart
공유기의 ip는 공유기 접속화면에서 확인한 ip주소가 공유기의 ip주소가 됩니다.
즉, 외부에서 접속할 때 주소창에 입력할 ip주소입니다.
외부에서 통신이 되는지의 여부를 테스트하는 제일 좋은 방법은 핸드폰에서 와이파이를 연결하지 않고
공유기의 ip주소로 연결해보면 됩니다.
아래는 핸드폰으로 접속해본 화면입니다.
95. 13. 각 언어 활용
13.1. nodejs-실행 전설명
13.1.1. nodejs-실행화면
13.1.2. nodejs-소스 다운로드
13.2. php-실행 전설명
13.2.1. php-실행화면
13.2.2. php-소스 다운로드
13.3. slim-실행전설명
13.3.1. slim-실행화면
13.3.2. slim-소스 다운로드
13.4. angularjs-설명
13.4.1. angularjs-slim과의 연동-설정
13.4.2. angularjs-slim과의 연동-소스 다운로드
96. 13.1. nodejs-실행전설명
소스를 올린 경로는 아래와 같습니다.
/var/www/nodejs/app.js
/var/www/nodejs/edit.html
/var/www/nodejs/insert.html
/var/www/nodejs/list.html
상태를 기록하기 위한 파일
log.log
로그파일을 미리 생성합니다.
touch /var/www/nodejs/log.log
백그라운드로 실행하는 명령어는 아래와 같습니다.
sudo node /var/www/nodejs/app.js &
백그라운드로 실행하면서 상태를 파일에 기록하는 명령어는 아래와 같습니다.
sudo node /var/www/nodejs/app.js > /var/www/nodejs/log.log &
백그라운드로 실행하고 기록된 파일을 보는 명령어는 아래와 같습니다.
tail -f /var/www/nodejs/log.log
97. 13.1. nodejs-실행전설명
테스트는 아래의 주소로 합니다.
http://자신의아이피:52273/
포트는 app.js에서 임의로 변경할 수 있습니다.
아래의 소스에서 52273번을 다른 포트로 변경하시면 됩니다.
app.js에서 DB에 연결될 패스워드도 변경해주어야 합니다.
98. 13.1. nodejs-실행전설명
외부에서 접속하기 위해서는 app.js 에서 설정해 준 포트번호를
공유기에서 포트 포워딩을 해주어야 합니다.
12.3.을 참고하여 포트 포워딩을 설정해주시기 바랍니다.
101. 13.2. php-실행전설명
소스를 올린 경로는 아래와 같습니다.
/var/www/php/db_config.php
/var/www/php/list.php
/var/www/php/insert.php
/var/www/php/update.php
/var/www/php/delete.php
db_config.php 소스가 DB연결부분의 설정이므로 자신에 맞게 수정해줍니다.
104. 13.3. slim-실행전설명
slim은 rest 기반의 웹서비스를 쉽게 구현할 수 있는 php의 프레임워크 중 하나입니다.
웹동네님이 가르쳐주신 아래의 url에 기반하여 구축하였습니다.
http://coenraets.org/blog/2011/12/restful-services-with-jquery-php-and-the-slim-framework/
아래의 주소로 slim을 받습니다.
https://github.com/ccoenraets/wine-cellar-php/zipball/master
다운받은 파일의 압축을 풀어 ftp로 /var/www/cellar 디렉토리를 만들어 업로드 합니다.
다운받은 파일 중 cellar.sql 중에 테이블을 만드는 구문과 데이터를 입력하는 insert 구문을
Phpmyadmin에서 실행해줍니다.
11.9.를 참고하여 SQL 구문을 실행해주면 됩니다.
105. 13.3. slim-실행전설명
테이블 만드는 구문-
CREATE TABLE `wine` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`year` varchar(45) DEFAULT NULL,
`grapes` varchar(45) DEFAULT NULL,
`country` varchar(45) DEFAULT NULL,
`region` varchar(45) DEFAULT NULL,
`description` blob,
`picture` varchar(256) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=latin1;
insert구문-
INSERT INTO `wine` VALUES
(1,'CHATEAU DE SAINT COSME','2009','Grenache / Syrah','France','Southern Rhone / Gigondas‘,'The aromas of fruit and spice ….to fish dishes.‘,'saint_cosme.jpg')
,(2,'LAN RIOJA CRIANZA','2006','Tempranillo','Spain','Rioja‘,'A resurgence of interest in …black truffle, this wine will not fail to tickle the taste buds.','lan_rioja.jpg')
,(3,'MARGERUM SYBARITE','2010','Sauvignon Blanc','USA','California Central Cosat','The cache of a fine … transport you back in time.','margerum.jpg')
,(4,'OWEN ROE "EX UMBRIS"','2009','Syrah','USA','Washington','A one-two punch of …award-winning taste sensation.','ex_umbris.jpg')
,(5,'REX HILL','2009','Pinot Noir','USA','Oregon','One cannot doubt that … that everyone will be talking about tomorrow.','rex_hill.jpg')
,(6,'VITICCIO CLASSICO RISERVA','2007','Sangiovese Merlot','Italy','Tuscany','Though soft and rounded in ... buds wholly satisfied.','viticcio.jpg')
,(7,'CHATEAU LE DOYENNE','2005','Merlot','France','Bordeaux','Though dense and chewy, this wine does not ... luxurious experience for thensenses.','le_doyenne.jpg')
,(8,'DOMAINE DU BOUSCAT','2009','Merlot','France','Bordeaux','The light golden color of this wine ... sun-soaked vineyard.','bouscat.jpg')
,(9,'BLOCK NINE','2009','Pinot Noir','USA','California','With hints of ginger and spice, this... dessert fare for a holiday gathering.','block_nine.jpg')
,(10,'DOMAINE SERENE','2007','Pinot Noir','USA','Oregon','Though subtle in its ... finish completes the picture of a fine sipping experience.','domaine_serene.jpg')
,(11,'BODEGA LURTON','2011','Pinot Gris','Argentina','Mendoza','Solid notes of black currant... for varied palates.','bodega_lurton.jpg')
,(12,'LES MORIZOTTES','2009','Chardonnay','France','Burgundy','Breaking the mold of the classics, this ... of adrenaline it brings.','morizottes.jpg');
위의 insert 구문 중 description 필드의 내용은 줄였습니다.
원본 데이터는 cellar.sql 에 있으므로 원본 모두 사용하고 싶으시면
cellar.sql에서 복사해서 사용하시기 바랍니다.
106. 13.3. slim-실행전설명
slim 프레임워크를 사용하려면 apache에서 rewrite 모듈을 활성화 시켜주어야 합니다.
Apache rewrite 모듈이란 http 요청으로 들어온 주소를 임의로 변경해주는 모듈입니다.
예시) http://localhost/users => http://localhost/index.php?url=users
아래의 명령어를 실행하여 rewrite module을 활성화시켜 줍니다.
sudo a2enmod rewrite
아래의 명령으로 설정파일에 들어가서 apache가 rewrite 모듈을
웹서비스에서 사용할 수 있도록 설정에서 변경해 줍니다.
sudo nano /etc/apache2/sites-available/default
AllowOverride None -> AllowOverride all
107. 13.3. slim-실행전설명
설정 후에 apache를 다시 시작해줍니다.
sudo service apache2 restart
rewrite 모듈은 각 디렉토리에 있는 .htaccess 파일을 통하여 주소를 변경해줄 수 있습니다.
이 파일을 활용한다면 slim을 사용하지 않고도 rest 서비스가 가능합니다.
slim의 .htaccess 파일의 위치는 cellar/api/.htaccess 입니다.
108. 13.3. slim-실행전설명
/var/www/cellar/api/index.php 의 파일을 수정해 줍니다.
dbhost 는 127.0.0.1로 놓아두어도 됩니다.
/var/www/cellar/js/main.js 를 수정해 줍니다.
이 때 자신의 아이피는 외부에서 접속할 수 있는 아이피를 입력해 주어야
외부에서도 접속이 가능합니다.
포트는 apache 설정파일에서 정해준 포트번호인 2080입니다.
110. 13.3.2. slim-소스다운로드
원본은 아래의 경로에서 다운받을 수 있습니다.
https://github.com/ccoenraets/wine-cellar-php/zipball/master
아래의 경로에서도 다운받을 수 있습니다.
http://www.groovytrains.com/download/slim.zip
111. 13.4. angularjs-설명
Angularjs는 MVC 기반의 프론트엔드 프레임워크입니다.
쉽게 풀어 말하면 화면상의 보여지는 것의 흐름을 관리할 수 있는 프레임워크입니다.
볼 수 있는 것은 프론트 엔드이고 볼 수 없는 것은 백 엔드라고 생각하시면 됩니다.
데이터베이스에 접속하여 데이터를 가져와서 정제하는 역할을 하는 것은 백 엔드이고
그 정제된 데이터를 한번 더 보기 좋게 정렬하거나 변경하여 보여주는 역할을 하는 것이 프론트 엔드입니다.
데이터를 입력하거나 변경하는 명령을 프론트 엔드에서 받아 백 엔드쪽으로 넘겨주면
백 엔드에서는 적당한 처리를 한 후에 프론트 엔드로 응답을 해주고 프론트 엔드는
화면으로 해당 응답을 보여주는 방식입니다.
114. 13.4.2. angularjs-slim과의연동-소스다운로드
아래의 url을 참고하여 구축하였습니다.
http://coenraets.org/blog/2012/02/sample-application-with-angular-js/
다운받을 수 있는 소스의 위치는 아래와 같습니다.
https://github.com/ccoenraets/angular-cellar/archive/master.zip
아래의 경로에서도 다운받을 수 있습니다.
http://www.groovytrains.com/download/angularjs_slim.zip
116. 14.1. 싱글보드컴퓨터스펙및가격비교
2014년 3월 10일 기준으로 본 가격입니다.
마스보드 A10 : 71,280원 마스보드 A20 : 84,000원 큐비보드 : 86,900원
큐비보드2: 110,000원 비글본블랙 : 77,510원 라즈베리파이 : 53,350원
이 외에도 많은 싱글보드 컴퓨터가 있지만 일반 적인 것만 비교해 보았습니다.
싱글보드 컴퓨터의 스펙 한계가 있기 때문에 아직은 라즈베리파이가 가장 싸면서도
효율적인 것을 알 수 있습니다.
117. 14.2. 다른활용법들
싱글보드 컴퓨터는 사용 전력이 극히 낮아서 24시간 동작해야하는 웹서버나 SVN같은
저장소 용도로 사용할 수 있을 뿐 아니라 각종 전자 센서과 통신을 이용하여 스마트폰으로
홈 오토메이션까지 구축하는 것이 가능합니다.
간단히 LED를 켜고 끌 수 있습니다.
LED제어
초음파 센서로써 앞에 있는 물체의 거리를 감지하는 것이 가능합니다.
응용하면 애완동물과 하루 종일 놀아주는 로봇을 만드는 것이 가능합니다.
초음파 센서 활용
모터도 간단히 제어가 가능하기 때문에 무선으로 잡아주고 스마트폰으로 제어가 가능합니다.
모터제어
라즈베리파이에 연동시켜 좀 더 로봇을 쉽게 만들 수 있도록 해주는 모듈도 있습니다.
로봇 활용
아래와 같이 클러스터링을 이용하여 슈퍼 컴퓨터를 제작하는 것도 가능합니다.
슈퍼 컴퓨터 동영상
라즈베리파이로 영상을 받을 수가 있기 때문에 감시카메라 혹은 아기 돌보기 용으로도 가능합니다.
카메라활용
터치스크린도 있기 때문에 모니터도 필요가 없습니다. 말 그대로 초소형 컴퓨터가 되는 것이지요.
TFT 터치스크린
라즈베리파이보다 하위단계인 아두이노로 만들어본 탱크입니다.
라즈베리파이로 구현한다면 외부에서 wifi를 통하여 움직일 수 있습니다.
동영상링크
119. 15.1. wifi동글
Wifi 동글은 아래의 링크를 통해서 구매했습니다.
아트로봇
Wifi 동글을 USB포트에 연결해줍니다.
120. 15.2. 설정
아래의 명령어를 실행하여 라즈베리파이의 네트워크를 확인합니다.
ifconfig
위의 스크린샷에서 보면 eth0은 유선이고 wlan0은 무선입니다.
그 중 wlan0의 Hwaddr이 연결한 wifi 동글의 mac address 입니다.
공유기에서 mac 인증을 통하여 무선 연결을 허용할 경우 이 mac address를 등록해주어야 합니다.
121. 15.2. 설정
아래의 명령어를 실행하여 무선 네트워크 설정을 수정합니다.
sudo nano /etc/network/interfaces
address에 자신이 사용할 아이피를 적어줍니다.
보통 192.168.0.1~192.168.0.255 사이에서 다른 컴퓨터와
중복되지 않도록 적어줍니다.
wpa-ssid는 공유기의 ssid 입니다.
wpa-psk는 공유기 무선 암호입니다.
wpa-key-mgmt과 wpa-proto는 인증방법입니다.
wpa-pairwise와 wpa-group는 암호화방식입니다.