[네이버클라우드] AIaaS 개발자 과정/Linux

[네이버클라우드캠프] 2023.5.4 Linux - Ubuntu Linux 초기설정 자동화하기

_꼬마돌 2023. 5. 6. 13:18
반응형
오늘은 네이버클라우드캠프의 첫 과목인 리눅스 수업의 마지막 날이다. 이제 조금 리눅스와 친해진 것 같은데 벌써 마지막 수업이라는 게 아쉽다. 오늘 수업에서는 그동안 배웠던 것들을 종합적으로 실습해보는 시간을 가졌다.
강사님께서 네이버클라우드 서버에서 리눅스를 구동하고 설정하는 부분까지 다뤄주셨지만 그 부분은 클라우드를 본격적으로 사용할 때 블로그에서 다뤄볼 예정이다.

Ubuntu Linux 초기설정 자동화하기

2023.05.03 - [[네이버클라우드] AIaaS 개발자 과정/Linux] - [네이버클라우드캠프] 2023.5.3 8일차(1) - Shell Script

 

[네이버클라우드캠프] 2023.5.3 8일차(1) - Shell Script

Shell Script (Shell Programming) Shell의 종류 Bourne Shell (sh) 79년. Bell연구소 Steven Bourne이 개발 C Shell (csh) 버클리 대학교에서 Bill Joy가 개발 C언어와 비슷한 문법을 사용 TC Shell (tcsh) C Shell의 확장판 Korn Shell

tiny-stone.com

8일차(1) 포스팅에서 패키지 설치 자동화에 대해서 다뤘었는데, 오늘은 아무것도 설치되어 있지 않은 완전 초기 상태의 이미지를 불러와서 처음부터 진행해볼 것이다. 다른 것들 보다 패키지 설치와 초기 환경 설정과 같은 귀찮지만 필요한 작업들을 자동화하는 방법을 정리해두면 응용해서 사용할 수 있는 방법이 많을 것 같아서 이 내용을 중점적으로 정리하기로 했다.


설치 후 아무것도 하지 않은 비어있는 이미지를 불러와서 작업했다.

vi my_init.sh              

--편집기 입력 내용--
  1 ## UbuntuLinux(22.04.2 LTS) 초기 세팅 스크립트
  2 ## File name    : ~/my_init.sh
 
  7 ## 시간설정
  8 timedatectl set-timezone 'Asis/Seoul'
  9 now=`date +%Y년%m월%d일::%H시%M분`
 10 ## 작업 시작 시간
 11 echo $now >> ~/out.txt
 12
 13 ## alias 설정
 14 cat > ~/.bash_aliases << END
 15 alias h='history'
 16 alias l='ls -AlF'
 17 alias c='clear'
 18 alias cp='cp -i'
 19 alias mv='mv -i'
 20 alias df='df -h'
 21 alias du='du -sh'
 22 alias li='ls -Ali'
 23 alias lh='ls -Alh'
 24
 25 ## root only
 26 alias ai='apt -y install'
 27 alias aq='apt list --installed | grep '
 28 alias ac='apt list --installed | wc -l'
 29 alias pq='ps -ef | grep'
 30 alias sss='systemctl start'
 31 alias ses='systemctl restart'
 32 alias up='tail -7 /etc/passwd && ls /home'
 33 END
 34
 35 ## vimrc 설정
 36 cat > ~/.vimrc << END
 37 se nu ai ci si
 38 se ts=4 sw=4
 39 se ruler title showmatch
 40 syntax on
 41 hi comment ctermfg=red
 42 END
 43 ## 패키지 설치 전 패키지 수
 44 apt list --installed | wc -l >> ~/out.txt
 45 ## 패키지 설치 시작 시간
 46 echo $now >> ~/out.txt
 47
 48 ## 필요 패키지 설치
 49 apt -y install php php-curl php-gd php-intl php-mbstring php-soap php-xml \
 50 php-xmlrpc php-zip php-mysql  apache2  mysql-server gcc g++ default-jdk \
 51 tomcat9 lynx sendmail glibc-doc mandoc sqlite3 quota rdate rename tree \
 52 mailutils
 53 ## 패키지 설치 후 패키지 수
 54 apt list --installed | wc -l >> ~/out.txt
 55 ## 패키지 설치 마친 시간
 56 echo $now >> ~/out.txt
 57
 58 ## 웹 페이지나 파일을 저장할 디렉터리 생성
 59 mkdir ~/public_html
 60 ## 일반 사용자 shell 설정
 61 useradd -D -s /bin/bash
 62 ## ~/.profile(shell 설정파일) 실행
 63 . ~/.profile
 64
 65 ## $PATH 환경 변수에 현재 디렉토리 추가
 66 echo "PATH=$PATH:." >> ~/.profile
 67
 68 ## my_init.sh 파일에 실행 권한 부여
 69 chmod +x my_init.sh
 70 ## 모든 작업 마친 시간
 71 echo $now >> ~/out.txt
 
 실행 : bash my_init.sh
 파일 실행이 끝나고 nl out.txt 로 작업 정보를 볼 수 있다.

SQLite3 소스 컴파일 설치 자동화

SQLite3는 예시이고, 다른 패키지들도 이런 식으로 자동화하면 좋을 것 같다.

vi s3_auto_install.sh

--편집기 입력내용--
  1 ## sqlite 자동 설치 스크립트
  2 ## filename : ~/s3_auto_install.sh
  3
  4 if [ -d /down2 ]
  5     then 
  6     rm -rf /down2                 => down2 디렉터리가 있다면 삭제
  7 fi
  8
  9
 10 if [ -d /sql3 ]
 11     then
 12     rm -rf /sql3                  => sql3 디렉터리가 있다면 삭제 
 13 fi
 14
 15 apt -y install wget               => wget 설치
 16 TARGET_DIR=/sql3                  
 17 mkdir /down2 && cd /down2
 18 wget https://sqlite.org/snapshot/sqlite-snapshot-202305021634.tar.gz   => sqlite3 압축파일 설치
 19
 20 tar xf sqlite-snapshot-202305021634.tar.gz    => 압축해제
 21
 22 cd sqlite-snapshot-202305021634
 23
 24 ./configure --prefix=$TARGET_DIR              => 위에서 TARGET_DIR을 sql3로 지정했기 때문에 컴파일된 소스코드는 sql3에 저장된다.
 25
 26 chmod +x s3_auto_install.sh
 27
 28 make
 29 make install
 30 /sql3/bin/sqlite3
 
 
 실행 : bash ~/s3_auto_install.sh

일반 사용자 설정하기

root@kwc:~# cd /etc/skel
root@kwc:/etc/skel# mkdir public_html
root@kwc:/etc/skel# cp ~/.vimrc .
root@kwc:/etc/skel# cat > /etc/skel/.bash_aliases << EOF
> alias h='history'
> alias l='ls -AlF'
> alias c='clear'
> alias cp='cp -i'
> alias mv='mv -i'
> alias df='df -h'
> alias du='du -sh'
> alias li='ls -Ali'
> alias lh='ls -Alh'
> EOF

oot@kwc:/etc/skel# useradd -D -s /bin/bash
root@kwc:/etc/skel# vi /etc/login.defs    => 빈 칸에 CREATE_HOME yes 추가 입력

리눅스로 이메일 보내기

엄청엄청엄청 간단하다.

sendmail 과 mailutils 패키지를 설치해주고,

root@kwc:~# mail [이메일 받을 주소]   => []는 지우고!
Cc: 참조. 없으면 그냥 엔터쳐서 넘어가면 된다.
Subject: 안녕
안녕 이메일이야!

내용 입력 후 Ctrl+D 누르면 전송된다.

리눅스에서 송신은 가능하지만 수신은 안 된다. 정식 도메인을 구매하면 가능!

요렇게 스팸함으로 메일이 온다.


 

반응형