관리 메뉴

공부공부 공부공부내용

[5] 오픈스택 실습4 (쉘 스크립트로 인스턴스 올리고 워드프레스 설치) 0702 미완성 본문

클라우드 구성 및 관리/프라이빗 클라우드 [오픈스택]

[5] 오픈스택 실습4 (쉘 스크립트로 인스턴스 올리고 워드프레스 설치) 0702 미완성

wkdth04 2020. 7. 2. 14:35

sed - setream editor
vi 대신 사용하는 setream editor

ex) sed -i 's/localhost/xyz/g' hosts 
s는 교체하겠다는 것
localhost를 (g옵션)찾아서 xyz로 바꾸겠다는 예시 _ sed활용도이해
sed -i '1s/localhost/xyz/g' hosts    // 1이 s앞에 붙으면 라인을 지정하는 것.
sed -i '2,3s/localhost/xyz/g' hosts    // 이번에는 범위를 지정하는 것.

cat <<EOF>> a.txt     ->  유용한 리다이렉션 설명 예시
------------------------------------------------------------------

php --> DB접속하기 위한 패키지 mysql



쉘 설명
cloud config 는 관리자 권한으로 실행하게된다.

 

실습환경

Single VM (CPU:2, Memory:2G) Wordpress + Mariadb(MySQL)
Add Repository (PHP: 7.4, Mariadb: 10.1, MySQL: 5.6)

 

< Instance 구성 script >

< yum 오류 >

  • ps -ef | grep yum
  • kill -9 명령어 사용
  • rm -rf /var/run/yum.pid

 


오늘의 실습 예정 -> 단일 vm 만들고 -> 클라우드 config구성 -> 이후 멀티구성 -> heat로 완전자동화 (실습5)

 

먼저 실습4  -쉘을 사용하여 Intance생성하고 wordpress 올리기 - cloud-init 활용 !!

Single VM (CPU:2, Memory:3G) Wordpress + Mariadb(MySQL)

Add Repository (PHP: 7.4, Mariadb: 10.1, MySQL: 5.6)

Installing Package 패키지 설치

Wordpress Donwload 워드프레스 다운

Wordpress Unarchive 워드프레스 아카이브 압축 풀기

Database/Table/User/Privilege

Editing wp-config.php

Starting/Enable Service

 

1. 강사님 쉘

강사님 쉘 스크립트

#!/bin/sh

#MariaDB 준비
cat << EOF > /etc/yum.repos.d/maria.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

yum -y install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
yum-config-manager --disable remi-safe
yum-config-manager --enable remi-php74
yum -y install httpd php php-mysqlnd MariaDB-server MariaDB-client

#wordpress설치파일 다운로드
curl -o /root/wp.tar.gz https://wordpress.org/latest.tar.gz
tar xf /root/wp.tar.gz -C /var/www/html

systemctl start mariadb
systemctl enable mariadb


#wordpress 데이터베이스 준비
mysql -u root -e 'CREATE DATABASE wordpress_db'
mysql -u root -e "CREATE USER 'wp-admin'@'localhost' IDENTIFIED BY 'P@ssw0rd'"
mysql -u root -e "GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp-admin'@'localhost' IDENTIFIED BY 'P@ssw0rd'"
mysql -u root -e "FLUSH PRIVILEGES"

cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

sed -i '23s/database_name_here/wordpress-db/g' /var/www/html/wordpress/wp-config.php
sed -i '26s/username_here/wp-admin/g' /var/www/html/wordpress/wp-config.php
sed -i '29s/password_here/P@ssw0rd/g' /var/www/html/wordpress/wp-config.php

systemctl start httpd
systemctl enable httpd

 


2. 강사님하고 살짝 다른 내 쉘

1) 먼저 쉘을 짠다.

#!/bin/bash

#아파치 설치
yum -y install httpd
systemctl start httpd
systemctl enable httpd


#php 설치
#대화형이아니기때문에 설치시 -y 옵션 필수
yum -y install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
yum-config-manager --disable remi-safe
yum-config-manager --enable remi-php74
yum install -y php php-mysqlnd


#Maria DB 준비
cat << EOF > /etc/yum.repos.d/maria.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF


#Maria DB 서비스 시작
yum install -y MariaDB-server
yum install -y MariaDB-client
systemctl start mariadb
systemctl enable mariadb

#wordpress 데이터베이스 준비
mysql -u root -e  'CREATE DATABSE wordpress';
mysql -u root -e  "CREATE USER 'jang'@'localhost' IDENTIFIED BY 'dkagh1.'";
mysql -u root -e  "GRANT ALL PRIVILEGES ON wordpress.* TO 'jang'@'localhost' IDENTIFIED BY 'dkagh1.'";
mysql -u root -e  "FLUSH PRIVILEGES";

#Wordpress 설치 파일 다운로드, 파일 압축 해제, wordpress 파일 /var/www/html 로 복사, /var/www/html 에 apache 사용자 쓰기 권한 추가
curl -o latest.tar.gz https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
cp -r wordpress/* /var/www/html/
setfacl -Rm u:apache:rwX /var/www/html

cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

sed -i '23s/database_name_here/wordpress/g' /var/www/html/wordpress/wp-config.php
sed -i '26s/username_here/jang/g' /var/www/html/wordpress/wp-config.php
sed -i '29s/password_here/dkagh1./g' /var/www/html/wordpress/wp-config.php


systemctl restart httpd






2) 인스턴스를 생성한다.  생성할 때 짠 쉘을 두가지 방법중 하나를 정해 넣는다 (파일 자체넣기 또는 쉘 때려박기)

 

 

sy-instance 생성함
중요한건 쉘을 sh파일형식으로 저장 후, 파일 자체를 넣을 수도 있고 두번째 방법으로는 사용자정의스크립트에 그냥 복붙해서 넣어도 된다.

 

 

 

3)인스턴스를 생성하면 커스터마이징 한 쉘이 잘 생성이 되고 있는지, 설치파일들이 잘 설치되고있는지 로그를 통해 볼 수 있다.

 

 

 

 

4) 콘솔창에서 로그인 화면이 뜨면 ssh 키인증방식으로 접속 할 수 있다.

 

 

 

 

5) 키 인증방식으로 접속하기 위해서 유동아이피를 연결해준다.

 

 

 

 

 

6) 이후 유동아이피 주소로  ssh 접속한다.

 

 

 

 

7) 로그파일 확인을 하면 ssh 창에서 설치가 잘 되고 있는지 알 수 있고 , 오류가 나면 어느 부분에서 오류가 나는지 확인할 수 있다.

 

 

 

 

 

이후 패키지 설치가 모두 끝나면

워드프로세스에 접속해 확인해볼 수 있다.

설정한 아이디와 패스워드로 접속해보면되는데.............노트북이 꼬져서 요거랑 다음 실습 모두 결과를 확인못했다^____________^

개느령

 

 

- #!/bin/sh
    - #! → 스크립트를 실행할 쉘을 지정하는 선언문
    - /bin/bash → bash 쉘에 링크를 걸어두고 있다.

- php

    yum -y install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
    yum-config-manager --disable remi-safe
    yum-config-manager --enable remi-php74
    yum install -y php php-mysqlnd

- yum repolist와 yum list는 repo패키지가 있는지 확인할 때 사용.

- yum-config-manager을 사용하여 remi-safe를 disabled 시킨다. → 사용하지 않기 때문

- 반대로 remi-php74는 사용할것이기 때문에 enable(활성화)시킨다.

- php v7.4는 이전 버전과 차이를 주기위해 데몬이 php-mysqlnd이다.

 

 

- mariadb

cat << EOF >> /etc/yum.repos.d/mariadb.repo
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.5/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    EOF
    yum-config-manager --enable mariadb
    yum install -y MariaDB-server MariaDB-client
    systemctl start mariadb
    mysql -u root -e 'CREATE DATABASE wordpress_db'
    mysql -u root -e "CREATE USER 'wp-admin'@'localhost' IDENTIFIED BY 'dkagh1.'"
    mysql -u root -e "GRANT ALL PRIVILEGES ON wordpress_db.* to 'wp-admin'@'localhost' IDENTIFIED BY 'dkagh1.'"
    mysql -u root -e "FLUSH PRIVILEGES"

 

- 참고 [https://downloads.mariadb.org/mariadb/repositories/#mirror=harukasan](https://downloads.mariadb.org/mariadb/repositories/#mirror=harukasan)

- cat << EOF >> a.txt

→ a.txt파일에 쉽게 내용을 입력할 수 있다. EOF를 입력하면 입력 종료.

- cat 명령어로 mariadb.repo파일을 설정해주었다.

- mysql → -e 명령어를 사용하여 mysql에 들어가지않고 해당 명령어를 실행시킨다.

 

 

- wordpress

curl -o latest.tar.gz https://wordpress.org/latest.tar.gz
    tar zxf latest.tar.gz
    cp -r wordpress/* /var/www/html
    setfacl -Rm u:apache:rwX /var/www/html
    cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
    sed -i '23s/database_name_here/wordpress_db/g' wp-config.php
    sed -i '26s/username_here/wp-admin/g' wp-config.php
    sed -i '29s/password_here/dkagh1./g' wp-config.php

- cloud-init은 cd등의 명령어를 실행하지 못한다. → 위치를 항상 유의해야한다.

- wp-config.php파일이 초반에는 없으므로 wp-config-sample.php파일을 복사해줘야한다.

- sed 명령어로 vi 편집기에 들어가지 않고 파일의 내용을 편집할 수 있다.

- sed -i 's/database_name_here/wordpress_db/' hosts

→ 제일 처음의 값만 바꾼다.

- sed -i 's/database_name_here/wordpress_db/g' hosts

→ g → 파일 전체

- sed -i '23s/database_name_here/wordpress_db/g' hosts

→ 전체에서 23번째 줄의 내용을 바꾼다.

 

 

- 오류

- db 설정할때 → 대문자!

- 로그를 보고 yum 부터 막히면

- /etc/resolv.conf 파일에 nameserver 8.8.8.8 추가

- 혹은 network → DNS 8.8.8.8 추가

 


-cloud-config : 커스터마이징 가능.

-userdata : shell 스크립트

-쉘짤때는 cd커맨드가 안되기 때문에 꼭 절대경로로 경로써줘야함

 

 

 

대쉬보드에서 생성할때 파일로 제공해도 되고 인스턴스 생성 부분에서 사용자정의 스크립트로 넣어도 됨.

vi a.sh

 

sh a.sh

 

chmod +x a.sh

 

file a.sh // asci text file

 

#! 샤뱅

 

 

echo $? -> return code 이전 코드를 가져와서 ? 한 명령어 // 정상 유무 확인하는 코드 볼수있음

0으로 입력되야 정상종료이다. 0가 아닌 모든 수는 오류.

 

------------------------------

/var/log/cloud-init.log

yum.log

messages

로 로그확인이 가능

 

[centos@sy-instance instance]$ history

1 systemctl restart httpd

2 sudo systemctl restart httpd

3 sudo systemctl status httpd

4 cd /var/log

5 ls

6 cat cloud-init.log

7 sudo cat cloud-init.log

8 cd /var/lib/cloud/

9 ls

10 ls -l instance

11 cd instance

12 ls

13 cat user-data.txt

14 sudo cat user-data.txt

15 tail /var/log/yum.log

16 sudo tail /var/log/yum.log

17 sudo tail -f /var/log/yum.log // f 옵션은 실시간으로 되고있는 것 확인할 때.

18 history