2014-01-06

라즈베리파이로 웹서버 만들기

웹서버를 만들어 보자.

 

1. 안전을 위해 비밀번호를 바꿔준다. 기본 계정은 pi다. 비밀번호를 잊어먹지 않는다!

passwd pi

 

2. 웹서버의 날짜가 중요하다. 날짜와 시간을 정확히 맞추자. 지역을 선택하면 알아서 맞춰준다.

sudo dpkg-reconfigure tzdata

 

3. 웹서버를 설치하고 재시작한다.

sudo apt-get install apache2 php5 libapache2-mod-php5

sudo service apache2 restart

 

*** 에러발생?

restart 시 에러가 발생할 수 있다. 

pi@iu ~ $ sudo service apache2 restart
[....] Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

 

에러 해결법 설정파일을 연다.

sudo nano /etc/apache2/apache2.conf 

 

다음을 파일의 맨 끝에 추가한다.

ServerName localhost

*** 에러해결!

 

4. 테스트를 해 본다.

내부 ip를 웹브라우저에 적으면 It works 라고 나올 것이다.

 

5. MySQL을 설치한다.

sudo apt-get install mysql-server mysql-client php5-mysql

 

6. 만들어진 웹 서버의 파일저장소의 소유권을 가진다.

sudo chown -R pi /var/www

 

6. 파일서버(ftp)를 설치한다.

sudo apt-get install vsftpd

 

7. 파일서버를 수정한다.

sudo nano /etc/vsftpd.conf

 

편의상 주석처리한 후 다시 쓰겠다.

anonymous_enable=YES 를 #anonymous_enable=YES 로 주석처리한다.

 

파일의 끝에다가 이것을 붙여 넣는다.

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/ftp

 

마지막엔 이것도 추가한다. (웹서버를 위한 것 /var/www/)

force_dot_files=YES

 

파일서버를 재시작한다.

sudo service vsftpd restart

 

8. 홈폴더(~/)에다 바로가기를 만들어 준다.

ln -s /var/www/ ~/www

 

9. DDNS와 포트포워딩을 한다. 포트는 80번이다. 귀찮으면 DMZ로 한다.

 

임시로 만들어진 웹 페이지이다. 이제 열심히 웹 프로그래밍을 공부하자.

Screen Shot 2014 01 06 at 4 33 17

 

 

추가: 아파치2 문제 해결

 

간혹 에러가 뜬다.

Screen Shot 2014 01 06 at 4 55 00

 

해결방법은 이렇다.

 

새 문서를 만든다.

sudo nano /etc/apache2/conf.d/name

 

문서는 비어있고 다음을 적는다.

ServerName localhost

 

아파치를 재시작한다.

sudo service apache2 restart 

 

추가: MySQL 에러?

 

에러처럼 보이는데 에러가 아닙니다. 정상 메세지 입니다.

[info] Checking for tables which need an upgrade, are corrupt or were not closed cleanly..

 

참고:

http://www.wikihow.com/Make-a-Raspberry-Pi-Web-Server

 

아파치2문제해결(본문이 아니라 밑의 첫 리플이 해답)

http://aslamnajeebdeen.com/blog/how-to-fix-apache-could-not-reliably-determine-the-servers-fully-qualified-domain-name-using-127011-for-servername-error-on-ubuntu

 

마이에스큐엘 에러?

http://www.2by2host.com/articles/corrupt-not-cleanly-closed-upgrade-needing-table/

라즈베리파이로 FTP 파일 서버 만들기

FTP 서버를 만들어 보자.

 

1. 파일서버를 설치한다.

sudo apt-get install vsftpd

 

2. 설정파일을 고친다.

sudo nano /etc/vsftpd.conf

 

편의상 주석처리한 후 다시 쓰겠다.

anonymous_enable=YES 를 #anonymous_enable=YES 로 주석처리한다.

 

파일의 끝에다가 이것을 붙여 넣는다.

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/ftp

 

마지막엔 이것도 추가한다. (웹서버를 위한 것 /var/www/)

force_dot_files=YES

 

3. 서버를 재시작한다.

sudo service vsftpd restart

 

4. 파일폴더를 만들고, 권한설정을 한다. <user>는 pi로 바꾸면 된다.

mkdir /home/<user>/ftp
mkdir /home/<user>/ftp/files
chmod a-w /home/<user>/ftp

 

5. 상단 공유기에서 21번 포트를 열어줘야 한다. FTP는 21번 SFTP는 22번이다. 귀찮으면 DMZ ip로 설정하면 된다.(단 보안에 주의)

 

6. DDNS설정을 한다. ddns서버 이름을 적으면 외부에서도 접속이 가능하다. ftp://주소 이것도 가능.

 

사용방법은 다음과 같다. 파일질라가 유명하다.

Screen Shot 2014 01 06 at 3 38 03

 

웹에서 ftp://주소 로 들어가도 된다.

Screen Shot 2014 01 06 at 3 43 20

 

7. 공유기 설정

인터넷라인 — 공유기1 — 공유기2 — 서버

 

최상단 공유기1의 설정이다. (유럽은 아직도 느린 ADSL회선이다. 한국이랑 전화방식 모뎀이 틀리다.)

DDNS 설정은 최상단에서 해야한다.

Screen Shot 2014 01 06 at 3 46 46

 

하단 공유기2 DMZ 설정이다.

Screen Shot 2014 01 06 at 3 49 08

 

 

참고:

http://www.ducky-pond.com/posts/2013/Aug/install-an-ftp-server-on-rpi/

맥에서 라즈베리파이 Raspbian-wheezy SD Card 굽기

맥에서 편하게 라즈베리파이 SD Card를 만들 수 있다. 하지만 정해진 방법을 따르지 않으면 에러가 난다. 자 해보자.

 

Mac OS X Mavericks에서 진행하였다. 잘 된다.

 

1. 공식 SD Formatter를 받는다. 이걸로 포맷을 안 하고, 맥 기본 유틸로 하면 에러난다. 반드시 이것을 쓰자.

https://www.sdcard.org/downloads/formatter_4/eula_mac/

 

2. RPi Card Builder 를 받는다.

http://alltheware.wordpress.com/2012/12/11/easiest-way-sd-card-setup/

 

3. 라즈베리파이 공식 OS인 Raspbian wheezy를 받는다.

http://www.raspberrypi.org/downloads

 

밑에 있는걸로 받는다. NOOBS 이거 아니다.

 Screen Shot 2014 01 05 at 21 08 15

 

직접 받거나 토렌트로 받는다. 토렌트가 더 빨리 받아진다.

 

4. 파일이 제대로 되었는지 확인한다. sha1 checksum을 해본다. 이것은 파일이 원본과 같은지 검증하는 과정이다.

 

맥에서 터미널을 연다.

openssl sha1 파일이름.zip

 

위 스샷에 나온 것과 같은지 대조해 본다. 위에는 

체크섬: ade48c874f8e4b694175de4c87d7357960961fbf

 

비교해 보고 같으면 파일을 맞게 받은 것이다. 압축을 풀면 img 파일이 나온다.

 

5. 설치한다. 과정은 간단하다. 하지만 함정이 있다.

 

sd-formatter로 포맷 한다. 관리자 암호를 물어본다. 퀵포맷으로 한다.

Screen Shot 2014 01 05 at 21 14 16

 

RPi Card Builder 실행시킨다. 이미지 파일이 어딨냐고 물어본다. 그러면 카드를 꼽았냐고 물어본다. 여기서 조심해야 한다!

Screen Shot 2014 01 05 at 21 16 01

 

먼저 Select None을 누르고 해당 카드를 선택해야 한다. 안 그러면 모든 하드가 다 날라간다!!!!!

 

기다리면 끝난다.

 

 

참고:

http://elinux.org/RPi_Easy_SD_Card_Setup

 

라즈베리파이 외장하드 연결 시 "Cannot check root file system because it is not mounted read-only. [FAIL] failed!"

오랫만에 재부팅 했더니 이런 메세지가 나온다. 빨간색으로 뭔가 치명적인 포스를 풍기는 에러다.

 

Cannot check root file system because it is not mounted read-only. [FAIL] failed!

 

이유는 외장 usb 하드가 파일시스템 boot보다 빨리 로딩이 되는 바람에(…얼마나 느리다는 거냐 ㅠㅠ) 이런 에러가 난다고 한다.

 

이를 수정하려면 /boot/cmdline.txt 파일을 수정해야 한다.

 

1. 혹시 모르니 파일을 백업하자.

sudo   cp   /boot/cmdline.txt   /boot/cmdline.txt.original

 

2. 파일을 수정한다. ro 라는 문자열을 넣어 주어야 한다. 원본 파일은 줄 바꿈이 없이 되어 있다. 혹시 모르니 줄 바꿈을 만들지는 말자.

 

파일을 열어보자.

sudo nano /boot/cmdline.txt

 

그러면 대략 이런 모습이다. 아래와 같은 문자열을 찾자.

[중략...] root=/dev/mmcblk0p2 rootfstype=ext4 [중략...]

 

이것을 이렇게 바꾼다. ro를 중간에 끼워 넣는다.

[중략...] root=/dev/mmcblk0p2 ro rootfstype=ext4 [중략...]

 

수정된 모습은 다음과 같다.

Screen Shot 2014 01 05 at 20 40 34

 

 

참고:

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=9475

http://www.blog.happytec.at/index.php?mode=view&id=308

라즈베리파이 전원 끄기 및 안전 종료

이런 기초적인 포스트를 쓸 줄은 몰랐다.

 

내가 주로 했던 종료방식은 sudo halt 였다. 그런데 이 것이 문제가 있었다.

 

문제가 뭐냐면 external HDD un-mount가 안되고 종료가 되버려서 하드 분리시에 에러가 날 수가 있었다.

 

모든 하드를 umount 하고 종료하려면 shutdown 을 써야 한다. shutdown now 라고만 치면 종료가 안 된다. 비밀번호 물어보면서 재부팅.

 

제대로 된 종료 명령은 이렇다.

sudo shutdown -h now


리눅스/라즈베리파이 부팅로그 확인하기 (bootlogd)

부팅하면 가끔 에러메세지가 나오는데, 이걸 확인하기가 힘들다. bootlogd 라는 것으로 확인이 가능하다.

 

1. 설치한다. bootlogd

sudo apt-get install bootlogd

 

2. 파일을 만든다.

sudo nano /etc/default/bootlogd 

 

3. 저장하고 종료

# Run bootlogd at startup ?

BOOTLOGD_ENABLE=yes

 

4. 재부팅 하고 부트로그 확인. 그냥 하면 아직 없다고 나온다.

cat /var/log/boot

 

5. 폰트깨짐과 칼라링 수정

 

기본적으로는 이렇게 나온다.

Screen Shot 2014 01 05 at 18 53 57

 

 

하지만 명령어를 바꾸면 이쁘게 잘 나온다. 이것은 현재 데비앙 버그라고 한다. 고쳐주겠지 언젠간.

sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot

 

출력은 다음과 같이 잘 나온다.

Screen Shot 2014 01 05 at 21 59 08

 

7. 매번 이렇게 길게 적기 힘드니까 스크립트로 만들자.

sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot 이것은 너무 길다.

 

~/.profile에 추가한다.

alias bootlogd-sed = "sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot"

 

바로가기를 만들면, bootlogd-sed 라고 만 치면 된다.

 

alias 만들기는 다음을 참조:

http://jonghyunkim816.blogspot.de/2013/10/755.html

 

 

참고:

http://rasp485berry.wordpress.com/elements/master-central-unit/setup/1-system-boot-log-enable/

http://forums.debian.net/viewtopic.php?f=30&t=84590

 

기본 메뉴얼:

https://wiki.debian.org/bootlogd

 

폰트깨짐과 칼라문제 해결:

http://stackoverflow.com/questions/10757823/display-file-with-escaped-color-codes-boot-messages-from-bootlog-daemon

2014-01-05

현재 등록된 update-rc.d 시작 프로그램의 리스트를 확인하기

명령어를 친다.

ls /etc/rc?.d

 

다음과 같이 나온다.

Screen Shot 2014 01 05 at 5 20 36

 

나는 시작프로그램은 jong-blahblah 와 같은 형식으로 만들었다.

 

grep 검색어로 지정해서 찾는다. 

ls /etc/rc?.d | grep jong-

 

Screen Shot 2014 01 05 at 5 21 00

 

ls /etc/rc0.d 로 확인해 보는 게 더 깔끔하겠다.

 

다음과 같이 나온다.