그 동안 소규모 게시판과 ftp 서버로 사용하던 fedora core2가 file system 오류로 문제가 생겼다.
겸사겸사 새로나온 fedora core4로 upgrade 하려고 했는데, 막상 설치 단계에서 fedora core4가 첫번째 시디가
읽기 오류가 생기면서 설치가 되지않았다.
주변을 살펴보니 유일한 대안은 몇달전 신청해서 받은 ubuntu hoary hedgehog 시디 뿐이었다.
설치는 무척 쉽게 끝났지만, 다 설치하고 보니 OTL...
ubuntu가 데스크탑용으로 제작된거라 아파치같은 서버 프로그램은 하나도 설치되지 않는 것이 아닌가....
google을 찾아 헤매가며 겨우 관련 프로그램들 설치하고 정상적으로 서비스를 복구했다.
다음에 또 설치할 기회가 있다면 당연히 redhat 계열로 가야겠다고 생각 되지만, 혹시나 하는 마음에 우분투 설치 과정을 정리해 놓기로 했다.
서버의 명칭은 109 이므로
prompt는 109~%, 109~# 와 같이 표시된다.
1. 먼저 루트 계정이 기본적으로 사용되지 않는 우분투에 루트 계정을 활성화109~%sudo passwd root
2. 루트로 로그인109~%su -
앞의로의 작업은 모두 루트 계정으로 수행
3. aptget 소스 추가109# vi /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ warty main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ warty main restricted universe
추가
109# apt-get update
109# apt-get install php
109# apt-get install mysql
109# apt-get install apache2
109# apt-get install vsftpd
109# apt-get install telnetd
109# apt-get install ssh
109# apt-get install squid
참고로 게시판은
GNUboard 4를 사용했다.
그누보드 설치에 관련된 사항은 위의 홈페이지에서 찾을 수 있다.
4. 설치된 apache2와 php가 연동되어 사용될 수 있도록 설정109# vi /etc/php4/apache/php.ini
register_globals = On
5. 기존 페도라에서 수행되던 서비스 파일 복구기존에 있던 /var/lib/mysql 내의 모든 db 파일들을 복사하여 DB 복구
또 기존의 /var/www/html/ 밑에 있던 모든 파일들을 /var/www 아래로 복사
우분투의 apache2는 기본 http root 위치가 /var/www로 설정.
이런 복구 작업에서 제일 신경쓰이는 것이 기존 사용자 id와 새 사용자 id가 변경되는 점이다.
uid, gid가 변경되므로 copy를 한 다음에는 일일히 확인한 다음에 chown 명령으로 잡아준다.
6. 인터넷 공유를 위한 dhcp3과 iptables 설정109# vi /etc/dhcp3/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 168.126.63.1;
subnet 192.168.0.0 netmask 255.255.255.224 {
range 192.168.0.2 192.168.0.20;
}109# vi /etc/init.d/iptables
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/conf/all/forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A POSTROUTING -o eth0 -t nat -j MASQUERADE
/sbin/iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -j ACCEPT
/sbin/iptables -A FORWARD -o eth1 -j ACCEPT109# chmod 755 iptables
109# update-rc.d /etc/init.d/iptables defaults
7. ftp 설치109# apt-get install vsftp
8. 회사 방화벽을 우회해서 접속 가능하도록 telent 접속 포트 변경109# vi /etc/services
telnet 21/tcp ===> telnet 26/tcp9. 서비스 시작
109# /etc/init.d/squid start
109# /etc/init.d/apache2 start
109# /etc/init.d/mysqld start
10. 텔텟 접속시 영문을 사용하도록 설정 변경우분투 설치할 때 한글로 설정을 했더니, putty로 텔넷 접속하니 한글이 정상적으로 나타나지 않는다. 그래서 아예 기본 문자셋을 en_US로 변경.
109~# vi /etc/environment
#LANGUAGE="ko_KR:ko:en_GB:en"LANGUAGE="en_US:en:ko_KR"ko#LANG=ko_KR.UTF-8LANG=en_US11. 기타 apache2, php4 관련 프로그램의 추가 설치 109~# apt-get install php-devel php-domxml php-gd php-imap php-ldap php-mysql php-pear php-xmlrpc php-rrdtool curl curl-devel perl-libwww-perl ImageMagick
109~#/etc/init.d/apache2 restart
12. user 별 개인 홈 서비스를 위한 설정 변경109# vi /etc/apache2/apache2.conf
다음 항목을 활성화
# UserDir is now a module
UserDir public_html
UserDir disabled root
AllowOverride FileInfo AuthConfig Limit
Options Indexes SymLinksIfOwnerMatch IncludesNoExec
13. HTTP server에서 한글을 기본 언어로109# vi /etc/apache2/apache2.conf
LanguagePriority ko en da nl et fr de el it ja no pl pt pt-br ltz ca es sv tw
AddDefaultCharset EUC-KR14. 개인 홈페이지를 사진 갤러리로 설정하기 위한 php script 설치먼저 gd library를 활성화 (설치는 좀 전의 apt-get install php-gd로 되어있어야 함)
http://www.jakeo.com/software/fotopholder/index.php 다운 설치
109# cd ./fotopholder25
109# cp ./index.php /home/user/public_html/index.php
109# mkdir /home/user/public_html/_cache
109# chmod 777 /home/user/public_html/_cache
그런 다음 user 홈페이지에 처음으로 접속하면 web browser에서 환경 설정이 시작된다.
환경 설정이 완료되면 /home/user/public_html/_cache 밑에 config.php가 생성된다.
15. 개인 홈페이지 제목 변경
109# vi /home/user/public_html/_cache/config.php
Album_name 설정을 다음과 같이 바꿔주면 각 사용자 id 기준으로 제목이 표시됨
$album_name = substr($_SERVER["PHP_SELF"],2,strlen($_SERVER["PHP_SELF"])-12)."'s Photo gallery"; //The name of your album16. 기본 설정된 user directory를 새로 생성되는 사용자마다 적용되도록 함109# cp –r /home/user/* /etc/skel
17. 만일의 file system 오류에 대비해 mysql db의 백업하루 단위로 db를 백업하므로 .etc/cron.daily 에 해당 스크립트를 넣어두면 매일 새벽 실행됨.
db 사이즈가 크지 않으므로 mysqldump 명령으로 데이터베이스 단위로 백업하는것보다
모든 mysql db를 한꺼번에 그대로 백업하는 것이 효과적일 듯해서...
백업 수행 전에 어제 날짜 파일은 yesterday.db.tar.bz2로 이름을 변경한다.
이렇게 하면 언제나 어제와 오늘자 파일만 백업으로 저장할 수 있다.
어제 날짜의 인식은 시간 설정이 한국시간대인 GMT+9 이고, cron의 실행이 매일 새벽 4시 경에 이루어 지는 점을 이용하여 date -u
+%y%m%d 명령을 수행할 경우 universal 시간, 즉 GMT 날짜가 나오는 것을 이용하였다.
109# vi /etc/cron.daily/109dbbackup
#! /bin/bashif [ -f /data/util/109backup/`date -u +%y%m%d`.db.tar.bz2 ] ; then mv -f /data/util/109backup/`date -u +%y%m%d`.db.tar.bz2 /data/util/109backup/yesterdata.db.tar.bz2fitar -cvvf /data/util/109backup/`date +%y%m%d`.db.tar /var/lib/mysql/bzip2 -z /data/util/109backup/`date +%y%m%d`.db.tarexit 018. 만일의 file system 오류에 대비해 웹서버 파일 백업db 이외의 게시판 파일이나 게시판의 첨부 파일 등은 모두 /var/www 폴더에 저장된다.
사이즈가 무척 크므로 이 파일들은 한 달에 한 번씩 백업하기로 하고 etc/cron.monthly 에 스크립트를 넣어 실행되도록 하였다.
백업 수행 전에 이전에 한 달 전에 백업된 파일의 지우도록 한다.
109# vi /etc/cron.monthly/109wwwbackup
#! /bin/bashif [ -f /data/util/109backup/*.www.tar ] ; then rm -f /data/util/109backup/*.www.tarfitar -cvvf /data/util/109backup/`date +%y%m%d`.www.tar /var/www/exit 019. Ddns 서비스를 위한 no-ip 설치
http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
gzip -d noip-duc-linux.tar.gz
tar xvf noip-duc-linux.tar
cd ./noip-2.1.1
cp ./noip2-linux /usr/local/bin/noip2
cp debian.noip2.sh /etc/init.d/noip2
/usr/sbin/update-rc.d noip2 defaults
/etc/init.d/noip2 start