웹마스터 팁

아래 스크립트는 제가 개인서버를 운영하면서 계정 등록시 사용목적으로 작성했습니다.
레드햇 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
제목 글쓴이 날짜
[JavaScript] 창의 사이즈 변경 금지 시키기 SM 2002.02.24
[JavaScript] 랜덤 듀레이션 효과 - 페이지 들어오고 나갈때 벗겨지는 효과 보여주기 [1] SM 2002.02.24
[JavaScript] 홈에 머문시간을 제목표시줄과 상태바에 실시간으로 알려줍니다 [1] SM 2002.02.24
[JavaScript] 오늘 날짜와 요일 넣기 SM 2002.02.24
[JavaScript] 가짜 카운터 달기 SM 2002.02.24
[JavaScript] 텍스트 상자에서 메세지가 타이핑 됩니다 SM 2002.02.24
[JavaScript] 전체화면으로 페이지 열기 [2] SM 2002.02.24
[JavaScript] 채널모드로 윈도우 열기 SM 2002.02.24
[JavaScript] 일반적인 형태의 전체크기 윈도우 열기 SM 2002.02.24
[JavaScript] 시간대별로 각기 다른 배경 이미지를 보여주는 스크립트 [1] SM 2002.02.24
[JavaScript] 마우스를 대기만 해도 다른 사이트로 이동합니다 [3] SM 2002.02.24
[JavaScript] 마우스를 대기만 하면 팝업창을 엽니다 SM 2002.02.24
[JavaScript] 문서 새로고침 버튼(링크) 만들기 [11] SM 2002.02.24
▩(JAVA)랜덤으로 이미지 출력 되기 [1] ▩윤미 2002.02.24
스크롤배너 + 마우스 이벤트 - 초이스 응용 버젼임당...^^* file choice 2002.02.25
[JavaScript] 입력필드에 마우스를 클릭하면 초기문자열이 사라집니다 [2] SM 2002.02.25
[JavaScript] 시간대별로 각각 다른 인삿말을 합니다 SM 2002.02.25
[JavaScript] 매일 매일 다른 메세지를 보여줍니다 [1] SM 2002.02.25
[JavaScript] 랜덤 추천 사이트 링크버튼 만들기 (추천) [4] SM 2002.02.25
▩키보드글씨가 그대로 화면에 나타나는 스크립트 [5] ▩윤미 2002.02.26