웹마스터 팁

아래 스크립트는 제가 개인서버를 운영하면서 계정 등록시 사용목적으로 작성했습니다.
레드햇 7.3 에서 작동확인 했으며 정상 작동했습니다.
이번 스크립트에는 logrotate 설정 내용이 추가되어 있습니다.
네임기반 가상 호스트 설정에서 기존에는 ip 주소를 넣어야 했지만 도메인을 넣어도 정상 작동합니다.

#!/bin/bash
# Usage : ./adduser id password e-mail
# 2002/11/3 최초 작성
# 2002/11/4 제로보드 설치지원 추가,
#                 메일보내기 지원, 안내페이지 변경, 사용자 체크
# 2002/12/5 logrotate 설정 추가

dateis=$(date +%Y/%m/%d)
timeis=$(date | awk '{print $4}')

# ./adduser.sh 실행시 변수가 있는지 체크
if [ $# = 0 ]
         then
                 echo "Usage: ./adduser.sh id pass e-mail"
                 exit 1
         fi

# 사용자 계정 생성
# public_html 은 /etc/skel/ 에 위치해서 계정생성시 자동으로 생성
# public_html 퍼미션은 /etc/skel 생성 후 퍼미션 지정 해주면 지정해준 퍼미션으로 생성됨
# user 추가시 해당 유저 디렉토리 퍼미션은 /etc/login.defs 에 UMASK    076 을 추가해 퍼미션이701 로 생성됨
        if useradd -g hosting $1
        then
        echo $2 | /usr/bin/passwd --stdin $1

# 제로보드 설치 지원
        echo -n "Zeroboard Install? - [Y/N](default N) : "
        read zero
        if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
                 cp -R /home/chicpro/bbs/ /home/$1/public_html/
                 chown -R $1.hosting /home/$1/public_html/bbs
                 chmod 707 /home/$1/public_html/bbs
                 chmod 707 /home/$1/public_html/bbs/data
                 chmod 707 /home/$1/public_html/bbs/icon
        fi

# weblogs 디렉토리 생성
         mkdir /home/$1/public_html/weblogs

# Mysql 에 새로운 DB 를 추가합니다.
        echo -n "MYSQL DB Create? - [y/n](default n) : "
        read db
        if [ "$db" = "y" ] || [ "$db" = "Y" ]; then
                echo -n "MYSQL root password: "
                read pass
                touch /tmp/mysql_dbusersetup_temp
                echo "create database $1;" >> /tmp/mysql_dbusersetup_temp
                echo "insert into db values('localhost','$1'+ ','$1','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" >> /tmp/mysql_dbusersetup_temp
                echo "insert into user values('localhost','$1',password('$2'),'N','N','N','N','N','N','N','N','N','N','N','N','N','N');" >> /tmp/mysql_dbusersetup_temp
                /usr/bin/mysql -u root -p$pass mysql < /tmp/mysql_dbusersetup_temp
                rm -f /tmp/mysql_dbusersetup_temp
                /usr/bin/mysqladmin -u root -p$pass reload
        fi

# quota 설정
#         edquota -u $1

# 아파치 vhost.conf 파일에 가상호스트 부분을 추가함
         echo " " >> /etc/httpd/conf/vhost.conf
         echo "<VirtualHost www.cable.websamo.net>" >> /etc/httpd/conf/vhost.conf
         echo "    ServerAdmin $3" >> /etc/httpd/conf/vhost.conf
         echo "    DocumentRoot /home/$1/public_html" >> /etc/httpd/conf/vhost.conf
         echo "    ServerName  $1.cable.websamo.net" >> /etc/httpd/conf/vhost.conf
         echo "    ThrottlePolicy Volume 100M 1d" >> /etc/httpd/conf/vhost.conf  #<-- mod_throttle 없다면 라인삭제
         echo "    ErrorLog logs/$1-error_log" >> /etc/httpd/conf/vhost.conf
         echo "    CustomLog logs/$1-access_log combined env=!nosave" >> /etc/httpd/conf/vhost.conf
         echo "</VirtualHost>" >> /etc/httpd/conf/vhost.conf

# 사용자별 Webalizer 설정
        echo "LogFile        /var/log/httpd/$1-access_log" >> /etc/webalizer/$1-webalizer.conf
        echo "LogType   clf" >> /etc/webalizer/$1-webalizer.conf
        echo "OutputDir      /home/$1/public_html/weblogs" >> /etc/webalizer/$1-webalizer.conf
        echo "HistoryName       webalizer.hist" >> /etc/webalizer/$1-webalizer.conf
        echo "Incremental       yes" >> /etc/webalizer/$1-webalizer.conf
        echo "IncrementalName   webalizer.current" >> /etc/webalizer/$1-webalizer.conf
        echo "HostName       $1.websamo.net" >> /etc/webalizer/$1-webalizer.conf
        echo "PageType  htm*" >> /etc/webalizer/$1-webalizer.conf
        echo "PageType  cgi" >> /etc/webalizer/$1-webalizer.conf
        echo "PageType  php" >> /etc/webalizer/$1-webalizer.conf
        echo "PageType  php3" >> /etc/webalizer/$1-webalizer.conf

        echo "/usr/local/bin/webalizer -c /etc/webalizer/$1-webalizer.conf" >> /root/cron/webalizer.cron

# logrotate 설정 추가 (로그 파일의 크기가 너무 커지지 않게 유지)
        echo " " >> /etc/logrotate.d/apache
        echo "/var/log/httpd/$1-access_log {" >> /etc/logrotate.d/apache
        echo "    missingok" >> /etc/logrotate.d/apache
        echo "    postrotate" >> /etc/logrotate.d/apache
        echo "        /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
        echo "    endscript" >> /etc/logrotate.d/apache
        echo "}" >> /etc/logrotate.d/apache
        echo " " >> /etc/logrotate.d/apache
        echo "/var/log/httpd/$1-error_log {" >> /etc/logrotate.d/apache
        echo "    missingok" >> /etc/logrotate.d/apache
        echo "    postrotate" >> /etc/logrotate.d/apache
        echo "        /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
        echo "    endscript" >> /etc/logrotate.d/apache
        echo "}" >> /etc/logrotate.d/apache

# 계정별 사용량 체크 추가
        echo "/usr/bin/du -sh /home/$1 >> /home/chicpro/usage.txt" >> /root/cron/usage.cron

# 안내페이지 생성
# 안내페이지의 일부분 내용은 /etc/skel/public_html/index.html 에 포함되어 있음
# 아래 내용이 첨부되어 완전한 페이지 완성
        echo "                 <td><p><b>웹사모의 가족이 되신 것을 진심으로 축하드립니다!!<br>" >> /home/$1/public_html/index.html
        echo "                          현재</b>($dateis $timeis)<b> $1 님의 계정이 발급되었습니다.<br>" >> /home/$1/public_html/index.html
        echo "                          아래 내용은 신청하신 정보입니다.</b><br><br>" >> /home/$1/public_html/index.html
        echo "                          ID : $1 / 신청하신 Password / E-mail : $3<br>" >> /home/$1/public_html/index.html
        echo "                          웹주소 : http://$1.websamo.net<br>" >> /home/$1/public_html/index.html
        echo "                          FTP : ftp.websamo.net 포트 9585 / SSH : ssh.websamo.net 포트 22<br>" >> /home/$1/public_html/index.html
        if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
        echo "                          제로보드 설치지원 : <a href=http://$1.cable.websamo.net:9000/bbs/install.php target=_blank>제로보드설치</a><br><br>" >> /home/$1/public_html/index.html
        else
        echo "                          <br>" >> /home/$1/public_html/index.html
        fi
        echo "                          <b>기타 문의 사항은 </b><a href=http://websamo.net><b>http://websamo.net</b></a><b> 을 방문해 주시기 바랍니다</b></p>" >> /home/$1/public_html/index.html
        echo "                          </td>" >> /home/$1/public_html/index.html
        echo "              </tr>" >> /home/$1/public_html/index.html
        echo "            </table>" >> /home/$1/public_html/index.html
        echo "          </td>" >> /home/$1/public_html/index.html
        echo "          <td bgcolor=#76CBED width=1></td>" >> /home/$1/public_html/index.html
        echo "        </tr>" >> /home/$1/public_html/index.html
        echo "        <tr>" >> /home/$1/public_html/index.html
        echo "          <td colspan=3><img src=title_error02.gif width=586 height=9 border=0></td>" >> /home/$1/public_html/index.html
        echo "        </tr>" >> /home/$1/public_html/index.html
        echo "      </table>" >> /home/$1/public_html/index.html
        echo "     </td>" >> /home/$1/public_html/index.html
        echo "  </tr>" >> /home/$1/public_html/index.html
        echo "</table>" >> /home/$1/public_html/index.html
        echo "        </td>" >> /home/$1/public_html/index.html
        echo "    </tr>" >> /home/$1/public_html/index.html
        echo "</table>" >> /home/$1/public_html/index.html
        echo " </body>" >> /home/$1/public_html/index.html
        echo "</html>" >> /home/$1/public_html/index.html

# 계정 발급 완료 메일 보내기 (sendmail 이용)
        title="계정 발급 안내 입니다."          # 메일 제목

        echo " 계정 발급 및 세팅이 완료되었습니다." > /tmp/contents         # 보낼 메일 내용
        echo " ==================================" >> /tmp/contents      # 보낼 메일 내용
        echo " 계정 세팅이 완료 되었습니다. ($dateis $timeis)" >> /tmp/contents
        echo " 아래는 신청하신 정보입니다." >> /tmp/contents
        echo " 일치하지 않으면 메일 (chicpro@korea.com) 주세요." >> /tmp/contents
        echo " " >> /tmp/contents
        echo " ID : $1" >> /tmp/contents
        echo " PASS : $2" >> /tmp/contents
        echo " e-mail : $3" >> /tmp/contents
        echo " " >> /tmp/contents
        echo " WEB주소 : http://$1.websamo.net" >> /tmp/contents
        echo " FTP주소 : ftp.websamo.net 포트 9585" >> /tmp/contents
        echo " SSH주소 : ssh.websamo.net 포트 22" >> /tmp/contents
        echo " " >> /tmp/contents
        echo " 웹주소로 접속하면 안내페이지를 보실 수 있습니다." >> /tmp/contents
        echo " " >> /tmp/contents
        echo " 기타 궁금하신 점은 http://websamo.net 을 방문해주세요." >> /tmp/contents

        cat /tmp/contents >> /tmp/data.txt
        rm -f /tmp/contents

        mail -s "$title" $3 < /tmp/data.txt
        rm -f /tmp/data.txt

# 아파치 서버 재 구동
         /etc/init.d/httpd restart

        exit 0

         else
         echo " User $1 already exist!!"
         exit 1

        fi
제목 글쓴이 날짜
qmail-1.03설치⑦ (qmailadmin 큐메일 웹관리툴) 비츠로 2003.02.28
qmail-1.03설치⑥ (qmail-scanner 스팸필터링) 비츠로 2003.02.28
qmail-1.03설치⑤ (courier-imap연동) 비츠로 2003.02.28
qmail-1.03설치③ (qmail설치) 비츠로 2003.02.28
php-accelerator <- zend보다 빠른 phpcache [6] 푸른하늘 2003.02.20
레드햇 8.0 에 젠드옵티마이져(Zend optimizer) 2.1.0 설치-왕초보용 [7] 정인배 2003.02.13
[JSP설치2탄]mod_jk를 이용한 Apache와 Tomcat의 연동[for Windows98/NT/2000] [1] 한희진 2003.02.06
htaccss를 활용하자! 1탄 에러페이지 만들기 [10] [쿨럭]블루엔젤 2003.01.23
[Lindox] cron - 기본편[수정] [6] NeSTY♨™ 2003.01.18
보안쉘 ssh Dopesoul 2003.01.13
무료 호스팅 서버 만들기 -3부 장동민 2003.01.04
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (3 of 3) [2] Dopesoul 2002.12.21
리눅스 rpm 명령어 활용(1): MRTG 설치 정인배 2002.12.14
레드햇(redhat)리눅스에서 rpm 관리 명령어 정인배 2002.12.09
계정 등록 스크립트 [8] 편리 2002.12.05
[계정삭제 스크립터] 편리님이 만드신 계정추가랑 연동됩니다. [4] file 김동현 2002.12.04
[FreeBSD] qmail+mysql+vpopmail+qmailadmin 설치 [1] DeX™ 2002.11.26
[FreeBSD] bind를 몰아낼 djbdns 설치하기 [5] DeX™ 2002.11.26
Apache + PHP + Mysql확실한 연동 및 리눅스 재설치 정보 [2] file 최종우 2002.11.26
리눅스 서버를 구축해 보자! #2 [5] 꼬토 2002.11.22