배운 내용/클라우드 교육

12월4일 - 3tier 구성하기

JooJY 2023. 12. 4. 16:11
반응형

https://www.ncloud.com/intro/architecture/5

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

클라우드 엔지니어 하려면 3tier 구성은 기본으로 할 줄 알아야 한다.

web, was, DB 직접 구성해보기

1. vpc 만들기

2. 서브넷 만들기

3. 서버 만들기

4. web은 퍼블릭 서브넷, was는 프라이빗 서브넷

5. 일단은 로드밸런서 없이, 하나의 가용 영역에 서버 하나 씩.

6. was는 NAT gateway가 있어야 외부와 통신 가능하다.

7. ACG 설정 web 서버용

  • TCP 0.0.0.0/0 80포트
  • TCP 내 IP 22포트(내 IP만 ssh 접속 가능)
  • 아웃바운드는 디폴드(다 열어놓기)

8. ACG was 서버용

  • was는 내 web이랑 db랑만 연결하면 된다.
  • web acg 22포트 추가
  • 아웃은 다 열기

9. web 서버에 mobaxterm으로 접속

10. 아파치 설치

yum install -y httpd
# 아파치 자동 재시작
systemctl enable httpd 
# 아파치 시작
systemctl start httpd

설치 다하고 아파치 접속 되나 확인(공인IP로 접속)

11. 자바 설치

yum list java*jdk-devel
yum install java-1.8.0-openjdk-devel.x86_64
java -version

12. web서버로 was 서버 접속하기

ssh root@비공인ip

13. was에 java 설치하기

yum list java*jdk-devel
yum install java-1.8.0-openjdk-devel.x86_64
java -version

14. was에 tomcat 설치(아파치 톰캣)

지금은 안됨. wget이 안됨. 통신이 안돼서 

cd /etc

15. NAT gateway 연결하기(vpc -nat)

10.20.200.0/24로 nat용 서브넷 하나 생성

nat 공인ip로 was에서 나간다.

16. 라우트 테이블 수정하기(vpc -route table)

라우트 테이블 하나 생성

연관 서브넷 설정

라우트 설정

17. 다시 was 톰캣 다운로드하고 설치하기

# tomcat 설치
cd /etc
wget http://archive.apache.org/dist/tomcat/tomcat-10/v10.0.6/bin/apache-tomcat-10.0.6.tar.gz
tar zxvf apache-tomcat-10.0.6.tar.gz
cd /etc/apache-tomcat-10.0.6/bin
# 톰캣 시작
./startup.sh
# 톰캣 끄기
./shutdown.sh

18. 다시 web으로 이동하고 패키지 설치

yum -y install gcc gcc-c++ httpd-devel

19. tomcat-connector 설치 - 아파치 톰캣 싸이트에서 파일을 다운받아 오브젝트 스토리지에 업로드 후 서버에서 다운로드

cd /etc

20. 오브젝트 스토리지 만들기

공개로 버킷 생성

일단 내 컴퓨터에 아파치 커넥터 다운로드 받고 오브젝트 스토리지에 올리기

https://tomcat.apache.org/download-connectors.cgi

 

Apache Tomcat® - Tomcat Connectors (mod_jk) Downloads

You must verify the integrity of the downloaded files. We provide OpenPGP signatures for every release file. This signature should be matched against the KEYS file which contains the OpenPGP keys of Tomcat's Release Managers. We also provide SHA512 checksu

tomcat.apache.org

파일 권한관리 - 공개 설정

21. wget으로 파일 주소로 다운 받기

cd /etc
wget https://kr.object.ncloudstorage.com/web-object/tomcat-connectors-1.2.49-src.tar.gz

다운 받은거 압축 풀기

# 톰캣 경로 확인
find / -name tomcat* 
# 커넥터 압축 풀기
tar xvf tomcat-connectors-1.2.49-src.tar.gz
# 압축 푼 것 native로 이동
cd /etc/tomcat-connectors-1.2.49-src/native
# 컴파일 하기
./configure --with-apxs=/usr/bin/apxs
make
make install
cd /etc/tomcat-connectors-1.2.49-src/native/apache-2.0/
# mod_jk.so 모듈생성확인
# 심볼릭 링크 만들기 (아파치 모듈들이 있는 디렉토리에 카피함)
cp mod_jk.so /usr/lib64/httpd/modules/mod_jk.so 
# 오버라이트 y
# 복사한 모듈에 실행권한을 줌 
chmod 755 /usr/lib64/httpd/modules/mod_jk.so
# 아파치 설정파일에 해당 모듈 적용 
cd /etc/httpd/conf
vi httpd.conf

아래 내용 붙여 넣기

# jk모듈 불러오기
LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so 
# (경로중요-새로생성예정)
<IfModule mod_jk.c>
    JkWorkersFile /etc/httpd/conf/workers.properties            
    JkShmFile run/mod_jk.shm
    JkLogFile logs/mod_jk.log
    JkLogLevel info
    JkLogStampFormat "[%y %m %d %H:%M:%S] "
</IfModule>
# 80포트로 접속 tomcat이 실행
<VirtualHost *:80>                                                     
    JkMount /* tomcat
    ServerName localhost
</VirtualHost>

/etc/httpd/conf/workers.properties   파일 생성 후 내용 붙여 넣기

vi /etc/httpd/conf/workers.properties
worker.list=tomcat
worker.tomcat.port=8009
# local 호스트 대신 was 서버 비공인 ip 넣기
worker.tomcat.host=[비공인ip]
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

worker.list=tomcat
worker.tomcat.port=8009
# local 호스트 대신 was 서버 비공인 ip 넣기
worker.tomcat.host=10.20.10.6
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

:wq 로 저장

22. was로 이동

cd /etc/apache-tomcat-10.0.6/conf
vi server.xml

이 부분을 찾아서 수정하기

  // 주석 처리 제거 후  <!--   -->  :이 표시가 주석처리
<Connector protocol="AJP/1.3"
   address="0.0.0.0"                                         //ipv4로 변경
   secretRequired="false"                                  // 추가항목 : ssl사용안한다는 선언
   port="8009"
   redirectPort="8443"/>               로 수정

아래처럼 수정하기

아래쪽 이 부분 찾기

 // 아래 쪽으로 이동 후 
<Engine name="Catalina" defaultHost="localhost">   // 이 항목에 추가 jvmRoute="tomcat"
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">  // 최종 수정 값

아래처럼 바꿔주기

:wq로 저장

23. 톰캣 재시작하기

cd /etc/apache-tomcat-10.0.6/bin
./shutdown.sh
./startup.sh

포트 열렸는지 확인

8009는 나오는데 8008은 안나옴. 원래 나와야 하나??

netstat -anlp | grep :8008
netstat -anlp | grep :8009

24. web 서버 이동 후 아파치 재시작

systemctl restart httpd

웹 서버 공인 ip 넣어서 아파치 페이지가 아니라 톰캣 페이지 뜨는지 확인하기

접속이 안된다. was 서버 ACG를 변경해준다.

TCP 0.0.0.0/0 8009포트를 열어준다.

웹서버 공인ip로 접속해도 아파치가 아니라 톰캣이 뜬다.

-보통 80 포트임, 다른 포트는 8080씀

https : 443포트

톰캣은 8009 포트 - 임의로 변경 가능


DB 만들기

1. 콘솔에서 관리형 db 만들기

adminuser / qwer1234%

- was 에서 mysql connector 설치하기

cd /etc

wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j_8.0.32-1debian10_all.deb

sudo yum -y install epel-release 

sudo yum repolist

sudo yum install dpkg-devel dpkg-dev -y

dpkg -x mysql-connector-j_8.0.32-1debian10_all.deb mysql_jdbc

mv /etc/mysql_jdbc/usr/share/java/mysql-connector-j-8.0.32.jar /etc/apache-tomcat-10.0.6/lib/

cd /etc/apache-tomcat-10.0.6/bin

./shutdown.sh

./startup.sh

- mysql.jsp파일 수정

jsp 파일 새로 만들기

cd /etc/apache-tomcat-10.0.6/webapps/ROOT
vi mysql.jsp

안에 내용 수정하기

mysql_server_ip에 내 db 도메인 주소 넣고, db user, db 비번을 넣는다.

도메인 주소 뒤에는 mysql 안에 있는 DB 이름을 넣어야 한다.

DB 상세보기에서 database 관리에서 db를 생성할 수 있다. 여기서 생성한 이름을 넣는다.

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=utf-8" %>
<%
         String DB_URL = "jdbc:mysql://<mysql_server_ip>/<생성한db>";   ---------------- mysql_server_ip -> db 프라이빗 도메인 , db_name -> 처음 만들었던 db_name(이게 아니고 DB 이름을 넣어야 한다.)
         String DB_USER = "<username>";                          --------- db user name
         String DB_PASSWORD= "<password>";                   --------- db password
         Connection conn;
         Statement stmt;

         try {
              Class.forName("com.mysql.jdbc.Driver");
              conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
              stmt = conn.createStatement();
              conn.close();
              out.println("MySQL Connection Success!");
         }
         catch(Exception e){
              out.println(e);
         }
%>

:wq! ---------------------마지막 저장

DB ACG 수정하기

혹시 몰라서 was, web ACG 둘 다 추가함.

크롬에서 web 서버 ip 주소 다음에 /mysql.jsp 를 넣으면 아래와 같이 나오면 된다.


db 서버 접속 및 php 연동하기

- 접속하려는 서버(web)에서 Mysql 설치

yum install mysql
mysql -h ① Private 도메인명 -u ②user_id -p --port ③DB 접속 포트           //DB접속  

mysql -h db-jv3pk.vpc-cdb.ntruss.com -u edu174 -p --port 3306(내꺼)

- db 테이블 생성

show databases;
use test;
CREATE TABLE exam (
id int NOT NULL AUTO_INCREMENT,
name varchar(30),
email varchar(40),
num varchar(30),
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

- web서버에서 php 설치

yum -y install wget

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
yum install yum-utils
yum-config-manager --enable remi-php72

yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y

php -v

- apache랑 php 연동하기

vi /etc/httpd/conf/httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html        ------------>    DirectoryIndex index.html index.php  (index.php 추가)
</IfModule>


AddType text/html .shtml         
AddOutputFilter INCLUDES .shtml  ---------------- 이 부분 찾아서 아래 두 줄 추가

AddType application/x-httpd-php .html .htm .php .inc
AddType application/x-httpd-php-source .phps



<VirtualHost *:80>
    JkMount /* tomcat   --------------------> JkMount /*.jsp tomcat
    ServerName localhost
</VirtualHost>

!wq
systemctl restart httpd

- signup.php 파일생성

vi /var/www/html/signup.php
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>예제 회원가입</title>
    </head>

    <body>
        <form method="post" action="./signup_action.php">
            <label>이름 <input type="text" name='name'> </label><br>
            <label>이메일 <input type="email" name='email'> </label><br>
            <label>학번 <input type="number" name='num'> </label><br>
            <input type="submit" value='가입하기'>
        </form>
    </body>
</html>


:wq!

- signup_action.php 만들기

vi /var/www/html/signup_action.php

<?php $name=$_POST['name'];
$email=$_POST['email'];
$num=$_POST['num'];
$con = mysqli_connect("<db도메인주소>","<db유저명>","<db유저비번>","<사용할데이터베이스>") or die ("Can't access DB");
$query = "insert into exam (name,email,num) values('".$name."','".$email."','".$num."')";
$resut=mysqli_query($con,$query);
if(!$result)
{?>
    <script> alert('회원가입이 완료되었습니다.'); location.href=".."; </script>
<?php
} else {?>
    <script> alert('회원가입에 실패했습니다.\n다시 시도해 주세요.'); location.href=".."; </script>
<?php } ?>

- 여기까지하고 http://175.45.200.198/signup.php << 여기 쳐서 로그인 화면 나와야 하고 가입하기 한 다음

db에 내용이 있어야 함.

--------------- Database로 넘어가서 -----------------

MySQL [(none)]> use <db이름>;                                             // 데이터베이스 선택
MySQL [edu]> select * from exam; 명령어 쳐서 확인                             // 웹페이지에서 입력한 내용 확인

반응형