처음 만나는 클라우드 보안

[AWS]아마존리눅스-RDS를 활용한 웹서버 구축: 쉘스크립트오류+그누보드오류 해결 본문

클라우드 기초/Amazon AWS

[AWS]아마존리눅스-RDS를 활용한 웹서버 구축: 쉘스크립트오류+그누보드오류 해결

영민하게 2022. 6. 14. 10:19
반응형

연결 구상도: 아마존 리눅스(web)-RDS(DB) 


1. DB 생성

RDS에서 Private네트워크로 생성, 퍼블릭 액세스 '아니요' 선택

 

- EC2를 통한 DB 연결

: 엔드포인트를 통한 워크벤치 접속 불가(보안 그룹을 Anywhere로 해도 불가) 하기 때문에 EC2로 접속해야 함

 

$ sudo yum update

$ sudo yum install mysql        // mysql클라이언트 기능 사용 가능

$ sudo mysql -h경로 -u계정 -p

 

$ sudo mysql -h(엔드포인트) -u(yngmin) -p

Enter password: RDS생성 시 지정한 비밀번호

create database gnuboard;

 

이하 입력 불필요 (gnuboard에서 세팅)

create user board@'%' identified by 'info12#$';

grant all privileges on gnuboard.* to board@'%';\

 

2. 웹서버 생성

EC2 아마존 리눅스 인스턴스 생성, 쉘 스크립트로 자동화

 

Shell Script 작성

반복되는 Shell 명령어들은 스크립트 형태로 간편하게 작성 가능
  1. 선언문 상단에는 항상 #!/bin/bash
  2. 작성본은. sh 포맷으로 저장 후 S3에 업로드
  3. wget으로 웹서버로 다운로드 및 실행
#!/bin/bash
yum update -y
amazon-linux-extras install -y lamp-mariadb10.2-php7.4 php7.4
yum install -y httpd mariadb-server 
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type -d -exec chmod 2775 {} \;
find /var/www -type -f -exec chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

yum install git
cd /var/www/html
git clone https://github.com/gnuboard/gnuboard5
cd gnuboard5
mkdir data
chmod 777 data
yum install php php-mariadb php-common php-gd php-fpm php-xml php-json php-curl
systemctl restart httpd

3. 스크립트 다운 후 실행

$ sudo yum update

$ sudo wget 'https://yngmin.s3.ap-northeast-2.amazonaws.com/test5.sh'

$ sudo chmod 700 amazn1.sh   // 초기 다운 파일은 권한이 낮음

$ sudo sh amzn1.sh  // 셸 스크립트 시작 httpd설정 + 웹 툴 + gnu보드 설치


■ 트러블슈팅

▶쉘 스크립트의 개행 문자로 인한 실행오류

위와 같이 작성된 쉘 스크립트를 실행했지만, 계속해서 설치에 실패했다. 스크립트는 지정된 경로를 찾지 못했고 끝부분에? 가 붙은 오류 파일들만 생겨났다. 찾아보니 이러한 오류는 쉘 스크립트의 '(CR:Carriage Return) \r'로 발생한 것이었고, 일반적인 에디터가 아닌 리눅스 vi -b 스크립트 파일명을 이용해 확인할 수 있다. 

쉘스크립트 오류 발생

해결 방법: vi  -b 커맨드 모드에서 개행 문자들을 모두 공백으로 치환해준다.

:%s/^M/ /g      ----(참고) ^M은 ctrl+v와 crtl+m으로 입력 가능

(좌) 개행문자로 오류를 발생시킨 스크립트 (우) 개행문자 제거 후 모든 설치가 정상적으로 이루어진다


▶아마존 우분투의 php7.4 버전업 이슈

최종적으로 웹서버에 설치된 그누보드의 설정을 통해 데이터베이스 접속을 완성 짓는 단계에서 공란의 에러 창이 발생했다. 커멘드 창의 오류를 통해 아마존 리눅스 사용에는 php7.4 번전이 필요로 함을 알 수 있다.

 

커멘드창이 알려주는 설치 명령어를 그대로 입력하여 php업그레이드를 진행한다.

해결방법: sudo amazon-linux-extras install php7.4       // 아마존 리눅스의 php 버전 7.4에 대한 의존성 해결

php업데이트 후 웹페이지는 정상적으로 작동한다.


참고자료

 - https://www.sierracloud.kro.kr/m-%EA%B0%9C%ED%96%89%EB%AC%B8%EC%9E%90%EB%A1%9C-%EC%9D%B8%ED%95%9C-shell-script-%EC%98%A4%EB%A5%98/

 

^M 개행문자로 인한 Shell Script 오류 | IT Garage

Shell Script bad interpreter error Shell Script를 윈도우 환경에서 작성했거나 FTP로 전송하고 리눅스 환경에서 실행하면 아래와 같은 에러 메시지를 마주할 때가 있습니다. [root@localhost ~]# ./temp.sh -bash: ./tem

www.sierracloud.kro.kr

 

반응형
Comments