협업 > 관리 > 2026비교과 과정
강의계획1안
| 일수 | 내용 | 날짜 |
|---|---|---|
| 1일차 | 2026-10-27 18:00 ~ 22:00 | |
| 2일차 | 2026-11-03 18:00 ~ 22:00 | |
| 3일차 | 2026-11-10 18:00 ~ 22:00 | |
| 4일차 | 2026-11-17 18:00 ~ 22:00 | |
| 5일차 | 2026-11-24 18:00 ~ 22:00 |
강의계획2안
| 일수 | 내용 | 날짜 |
|---|---|---|
| 1일차 | 2026-10-27(화) 18:00 ~ 20:00 | |
| 2일차 | 2026-10-29(목) 18:00 ~ 20:00 | |
| 3일차 | 2026-11-10 18:00 ~ 22:00 | |
| 4일차 | 2026-11-17 18:00 ~ 22:00 | |
| 5일차 | 2026-11-24 18:00 ~ 22:00 | |
| 6일차 | 2026-11-10 18:00 ~ 22:00 | |
| 7일차 | 2026-11-17 18:00 ~ 22:00 | |
| 8일차 | 2026-11-24 18:00 ~ 22:00 | |
| 9일차 | 2026-11-24 18:00 ~ 22:00 | |
| 10일차 | 2026-11-24 18:00 ~ 22:00 |
1.RabbitMQ
RabbitMQ는 프로그램끼리 메시지를 전달해 주는 메시지 브로커(Message Broker)입니다.
쉽게 말하면 "프로그램 A가 보낸 데이터를 RabbitMQ가 받아서 프로그램 B에게 전달해 주는 중간 우체국"이라고 생각하면 됩니다.
OpenStack, Python, MQTT, ROS2, 서버 구축을 공부한다면 RabbitMQ를 이해해 두는 것이 상당히 도움이 됨
2.핵심구조
Producer
↓
Exchange
↓
Queue
↓
Consumer
Producer : 메시지를 보내는 프로그램
Exchange : 메시지를 어떤 Queue로 보낼지 결정
Queue : 메시지를 저장하는 대기열
Consumer : Queue에서 메시지를 가져가는 프로그램
Broker : 전체 메시지 중계 시스템 = RabbitMQ
3.RabbitMQ의 큰 장점
RabbitMQ를 사용하는 가장 큰 이유 중 하나는 Producer와 Consumer를 분리할 수 있다는 것입니다.
4.RabbitMQ와 MQTT차이
MQTT : IoT 장치 통신에 매우 적합(ESP8266)
RabbitMQ : 서버 내부의 애플리케이션 간 메시지 처리에 많이 사용
5. RabbitMQ를 한 장으로 정리하면
apt -y install python3-pika
apt -y install rabbitmq-server
rabbitmqctl add_user admin password
rabbitmqctl list_users
rabbitmqctl change_password admin strongpassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl delete_user admin
rabbitmq-plugins enable rabbitmq_management
https://(IP address):15672
참고자료
https://www.server-world.info/en/note?os=Ubuntu_24.04&p=rabbitmq&f=1
응용MQTT를 이용한 DDos공격 탐지 시스템 만들기
2일차 내용
Zabbix를 이용한 서버 모니터링 이해
Install Zabbix 7.0 LTS which is an enterprise open source monitoring system.
APM환경에서 동작함
서버와 클라이언트로 구성됨
어떻게 알람을 받을것인가?
아이템 추가
3일차 내용
4일차 내용 ROS2에 대해 알아보자!
5일차 내용 ROS2에 대해 알아보자!
1일차 내용
1. GNS3 설치하기
2. VirtualBox설치하기
3. 라우터 이미지 다운받기
4. 스위치 이미지 다운받기
2일차 내용
IP와 서브넷마스크의 이해
[20250525_2]
서브넷 마스크에 대한 설명으로 옳지 않은 것은?
① IP Address 체계에서 Network ID와 Host ID로 구분한다.
② 목적지 호스트가 동일한 네트워크상에 있는지 확인한다.
③ Class A는 기본 서브넷 마스크로 ′254.0.0.0′을 이용한다.
④ 서브넷 마스크의 Network ID 필드는 이진수 ′1′로, Host ID의 필드는 이진수 ′0′으로 채운다.
[20250525_4]
C Class인 네트워크의 서브넷 마스크가 ′255.255.255.192′ 이라면 둘 수 있는 서브넷의 개수는?
① 2
② 4
③ 192
④ 1024
[20250525_12]
다음 중 사설 IP주소로 옳지 않은 것은?
① 10.100.12.5
② 128.52.10.6
③ 172.25.30.5
④ 192.168.200.128
[20250223_2]
IP Address 중 Class가 다른 주소는? ① 191.234.149.32
② 198.236.115.33
③ 222.236.138.34
④ 195.236.126.35
C Class 네트워크에서 6개의 서브넷이 필요하다고 할 때 가 장 적당한 서브넷 마스크는?
① 255.255.255.0
② 255.255.255.192
③ 255.255.255.224
④ 255.255.255.240
[20241103_2]
IP Address ′11101011.10001111.11111100.11001111′ 가 속한 Class는?
① A Class
② B Class
③ C Class
④ D Class
[20241103_2]
IP Address ′127.0.0.1′ 이 의미하는 것은?
① 모든 네트워크를 의미한다.
② 사설 IP Address를 의미한다.
③ 특정한 네트워크의 모든 노드를 의미한다.
④ 루프 백 테스트용이다.
[20240825_1]
′B Class′를 6개의 네트워크로 구분하여 사용하고 싶을 때, 가장 적절한 서브넷 마스크 값은?
① 255.255.224.0
② 255.255.240.0
③ 255.255.248.0
④ 255.255.255.0
[20240825_6]
다음 중 사설 IP주소로 옳지 않은 것은?
① 10.100.12.5
② 128.52.10.6
③ 172.25.30.5
④ 192.168.200.128
실기문제풀이
계층별 프로토콜은 반드시 암기해 주세요!!
3일차 내용
DHCP 설치 및 설정
4일차 내용
웹서버 설치 및 설정
5일차 내용
6일차 내용
7일차 내용
8일차 내용
9일차 내용
10일차 내용
cd \
mkdir venvs
cd venvs
python -m venv mysite
cd C:\venvs\mysite\Scripts
activate
(mysite) C:\venvs\mysite\Scripts>
deactivate
pip install django
python -m pip install --upgrade pip
cd \
mkdir projects
cd projects
mkdir django
cd django
django-admin startproject config .
python manage.py runserver
http://127.0.0.1:8000/
C:/venvs/mysite.cmd
@echo off
cd c:/projects/mysite
c:/venvs/mysite/scripts/activate
<윈도우키+R> 키를 입력하여 다음처럼 sysdm.cpl 명령을 입력
에디터 설정하기
[파일이름: projects/mysite/config/settings.py]
(... 생략 ...)
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
python manage.py runserver
11일차 내용
리눅스 서버 구축
위치 : /home/master
sudo hostnamectl set-hostname chfi
sudo reboot
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
sudo apt update
sudo apt install python3-venv
mkdir projects
mkdir venvs
cd venvs
nano mysite.env
FLASK_APP=chfi
FLASK_DEBUG=true
APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
nano mysite.sh
#!/bin/bash
cd ~/projects/flask
export FLASK_APP=chfi
export FLASK_DEBUG=true
export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
. ~/venvs/mysite/bin/activate
nano .profile
alias mysite='export FLASK_APP=chfi;export FLASK_DEBUG=true;export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py;cd ~/projects/flask;. ~/venvs/mysite/bin/activate'
cd venvs
python3 -m venv mysite
cd mysite
cd bin
. activate
pip install wheel
pip install flask
pip install flask-migrate
pip install flask-wtf
pip install email_validator
pip install flask-markdown
cd ~/projects
unzip flask.zip
cd flask
flask db init
flask db migrate
flaks db upgrade
flask run --host=0.0.0.0
pip install gunicorn
cd ~/projects/flask
gunicorn --bind 0:5000 "chfi:create_app()"
gunicorn --bind unix:/tmp/mysite.sock "chfi:create_app()"
[파일명: /etc/systemd/system/mysite.service]
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=master
Group=master
WorkingDirectory=/home/master/projects/flask
EnvironmentFile=/home/master/venvs/mysite.env
ExecStart=/home/master/venvs/mysite/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/mysite.sock \
"chfi:create_app()"
[Install]
WantedBy=multi-user.target
sudo systemctl start mysite.service
sudo systemctl enable mysite.service
sudo apt install nginx
cd /etc/nginx/sites-available/
sudo nano mysite
server {
listen 80;
server_name XXX.XXX.XXX.XXX;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/master/projects/flask/chfi/static;
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/mysite.sock;
}
}
cd /etc/nginx/sites-enabled/
sudo rm default
sudo ln -s /etc/nginx/sites-available/mysite
sudo systemctl restart nginx
sudo nginx -t
sudo systemctl stop nginx
sudo systemctl start nginx
윈도우 환경 구축
C:\> mkdir venvs
C:\> cd venvs
C:\venvs> python -m venv mysite
C:\venvs> cd C:\venvs\mysite\Scripts
C:\venvs\mysite\Scripts> activate
(mysite) C:\venvs\mysite\Scripts>
pip install flask
python -m pip install --upgrade pip
pip install flask_migrate
pip install requests
pip install flask_wtf
pip install pymysql
개발 환경 분리하기
(mysite) c:\projects\flask>mkdir config
config/__init__.py
config/default.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
development.py
from config.default import *
SQLALCHEMY_DATABASE_URI = 'sqlite:///{}'.format(os.path.join(BASE_DIR, 'md.db'))
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = "dev"
production.py
from config.default import *
SQLALCHEMY_DATABASE_URI = 'sqlite:///{}'.format(os.path.join(BASE_DIR, 'md.db')) SQLALCHEMY_TRACK_MODIFICATIONS = False SECRET_KEY = b'Zb3\x81\xdb\xf1\xd9\xd7-Knb\x8eB\xa5\x18'
[파일명: C:/venvs/mysite.cmd]
@echo off
cd c:/projects/flask
set FLASK_APP=chfi
set FLASK_DEBUG=true
set APP_CONFIG_FILE=c:\projects\flask\config\development.py
c:/venvs/mysite/scripts/activate
C:\projects\flask
flask run <윈도우+R> 키를 입력하여 다음처럼 sysdm.cpl
참고사이트
https://wikidocs.net/book/4542(점프투플라스크)
python manage.py runserver
12일차 내용
init.py 수정과정
step1
md.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_pybo():
return 'Hello, Pybo!'
step2
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello_pybo():
return 'Hello, Pybo!'
return app
step3
from flask import Flask
def create_app():
app = Flask(__name__)
from .views import main
app.register_blueprint(main.bp)
return app
step4
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
import config
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
app.config.from_object(config)
# ORM
db.init_app(app)
migrate.init_app(app, db)
# 블루프린트
from .views import main_views
app.register_blueprint(main_views.bp)
return app
main.py
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
@bp.route('/hello')
def hello_pybo():
return 'Hello, Pybo!'
@bp.route('/')
def index():
return 'Pybo index'
13일차 내용
14일차 내용
15일차 내용
참고사이트
플라스크
장고