printf("ho_tari\n");

ep.26 파이썬 기반 서버프로그램 구현(Git&Docker 활용) 본문

두산 로보틱스 부트캠프 ROKEY/DevOps 교육

ep.26 파이썬 기반 서버프로그램 구현(Git&Docker 활용)

호타리 2024. 8. 12. 16:10

2024.8.12

 

Mysql 외부접속 설정

디비 접속 계정 생성

시작전 root 계정 전환
sudo su –
nano /etc/mysql/mysql.conf.d/mysqld.cnf 실행한다
주석해제 진행
저장 ctrl+x → Y 저장

방화벽 포트가 비활성화 라면 활성화 적용

sudo ufw enable

systemctl restart mysql (데몬 재구동 진행)
Mysql 재구동 확인

• create user ‘tester2’@’%’ identified by ‘0000’ ; 접속 계정생성
• Grant all privileges on *.* to ‘tester2’@’%’; 권한
• Flush privileges;
• Exit ;
• Systemctl restart mysql 재구동
• 계정 새로 생성하면서 권한 적용 필
• Root 계정으로 진행

파이썬 DB 연결을 위한 모듈 설치

• pip install pymysql

Create table test (id int,name varchar(20))

• pip install mysql-connector-python

 

Pymysql , tkinter 활용, gui 기반 DB출력

파이썬에서 MySQL 활용
◦ MySQL에 데이터 입력을 위한 파이썬 코딩 순서
◦ 데이터베이스 구축 실습
• pymysql을 임포트한 후에, pymysql.connect (host=서버, user=사용자, passoword=암호, db=데이터베이스, charset=문자세트)문으로 데이터 베이스 연결

• 커서 생성
• 데이터베이스에 SQL문을 실행하거나, 실행된 결과를 돌려받는 통로로 생각

• 테이블 만들기
• 테이블을 만드는 SQL문을 커서이름.execute() 함수의 매개 변수로 넘겨주면 SQL문이 데이터베이스에 실행됨

• 데이터 입력

• 입력한 데이터 저장
• 입력한 데이터는 데이터베이스에 완전히 저장된 것이 아니고 임시로 저장된 상태
• 확실하게 저장하는 것을 커밋(commit)이라고 함

• 데이터베이스 닫기
• 데이터베이스를 모두 사용했다면 연결한 데이터베이스를 닫아야 함

◦ 데이터 입력 프로그램 작성
• userTable에 [Enter]를 입력할 때까지 반복해서 한 행씩 데이터 입력

GUI를 활용한 데이터 입력/조회 프로그램
◦ GUI 화면에서 데이터의 입력 및 수정

 

소개• Python으로 작성된 오픈 소스 웹 프레임워크
주요기능• 마이크로 웹 프레임워크로 다양한 웹 엔진과 붙여 사용하기 용이
대분류• 시스템 SW
소분류• SW공학도구
라이선스형태• BSD license
사전설치 솔루션• Python 3
버전• 3.x(2024년 08월 기준)
특징• 코드도 비교적 단순하며 API 서버 구축에 편리함
• 다른 프레임 워크에 비해 비교적 확장하기 용이하고 유연함
개발회사/커뮤니티 • Pallets TEAM
공식 홈페이지
• https://flask.palletsprojects.com/en/2.2.x

 

Flask 활용

가상환경 설정

• sudo apt install python3-venv
• python3 -m venv web(가상 공간 이름)
• cd web
• source 가상 환경 경로/bin/activate
• deactivate

플라스크 설치

• 가상 공간안에 → pip install Flask

 

Docker 이해

특징

• Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼, 특정한 서비스를 패키징하고 배포하는데 유요한 오픈소스 프로그램이다. 컨테이너에는 라이브러리, 시스템 도구 , 코드 , 런타임 등 소프트웨어를 실행하는데 필요한 모든것이 포함되어 있다. 가상머신에 비해 꼭 필요한 것만 담겨서 구동되기 때문에 이미지를 만들 경우 용량이 대폭 줄어든다.

사용이유

• 애플리케이션 독립성을 가진다. 호스트 OS, 다른 컨테이너와도 독립된 공간을 보장받아 충돌이 발생하지 않는다.
• 컨테이너 내부에 작업 후 배포하려 한다면 도커 이미지로 만들어서 운영서버에 전달만 하면 된다.
• 마이크로 서비스 구조로 변화가 쉽다. 컨테이너 하나당 하나의 기능을 제공하는 모듈로 만드는 등 조정이 가능하다.
• 다시 말해, Docker을 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포, 확장할 수 있다.

도커라이징(Dockerizing)
Docker 컨테이너를 사용하여 응용프로그램(application)을 패킹(packing), 배포(deploying), 실행(running) 하는 전 과정

Docker command
• # 컨테이너 만들기 docker run [옵션] 이미지명[:태그명] [인수]
• docker run --name [만들 컨테이너 이름] -it [pull 시킬 이미지]
• # 컨테이너 port 번호로 실행
• docker run -p 8080:80 nginx:latest
• # 컨테이너 이름 바꾸기
• docker rename [현재 이름] [바꿀 이름]
• # 실행(Up) 중인 컨테이너들의 목록을 확인
• docker ps -a

# 컨테이너 시작 : docker start
# -ai 옵션 : 해당 컨테이너 내부로 접근
docker start -ai [컨테이너명]
# 실행 중인 컨테이너를 종료 : docker stop
docker stop [컨테이너명]
# 컨테이너 접속
docker exec -it [컨테이너명] /bin/bash

# docker stats : 동작 중인 컨테이너의 상태와 사용 중인 리소스의 양을 확인할 때 사용
# 상태 확인이 끝나면 Ctrl + C를 눌러 명령을 종료
# 부하 테스트를 할 수 있는 임의의 컨테이너(test)를 실행시킨 후, docker stats으로 확인해 보았습니다.
# [CONTAINER ID] : 컨테이너 ID
# [NAME] : 컨테이너 이름
# [CPU %] : CPU 사용률
# [MEM USAGE / LIMIT] : 메모리 사용량 / 컨테이너에서 사용할 수 있는 메모리 제한
# [MEM %] : 메모리 사용률
# [NET I/O] : 네트워크 I/O
# [BLOCK I/O] : 블록 I/O
# [PIDS] : 사용 중인 PID의 수(프로세스의 수)
root@DH:~# docker run -dit --name test --cpus=0.3 stress
E1f401b606f3c1cbee21f2bbe83a656cf22c1382495055076451ceef90aee7d4
root@DH:~# docker stats

# docker rm
# 컨테이너를 삭제
# 동작 중인(Up) 컨테이너를 삭제하려면 stop 명령어를 사용해 종료(Exited) 후 삭제하거나,
# rm 명령어에 -f 옵션을 사용해 삭제할 수 있습니다.
root@DH:~# docker rm test
Error response from daemon: You cannot remove a running container
e900da8137a077c9a82f3936899e9ac0d3f167a6a6e759cfacdcce17ef940979. Stop the container before attempting
removal or force remove
(실행중이므로 삭제를 할수 없습니다.)
에러시
root@DH:~# docker rm -f [컨테이너명]
# 이미지 삭제
docker rmi [이미지명]
ip addr <- 네트웍 확인