62일차

●62일차(20250313062.php)
su stack
cd ~
cd horizon
> jango로 되있다는걸 알 수 있다

mysite.cmd
--------------------------------
@echo off
cd c:\projects\django
c:\venvs\mysite\scripts\activate
--------------------------------

cmd
mysite
cd c:\projects\django

pip install django
django-admin startproject config .

python manage.py runserver
> http://127.0.0.1:8000/
> django 웹페이지가 뜸
> 명령어 안되면 config 안에 들어가서 명령어 쳐보자

config\setting.py를 보면
> openstack_dashboard에 있는 setting.py와 닮아있다

config\setting.py
LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'
> 바꿔주니 한글로 바뀌었다


#앱 만들기
서버 올려져있는 상태로 새로운 cmd창 띄워서
mysite
django-admin startapp security
> django에 security 디렉토리가 만들어지면서 안에 파일들이 저절로 만들어진다
> http://127.0.0.1:8000/security > url 작업하라고 반응함
> config\urls.py에 경로를 넣어줘야함
> flask\view에 만들어준 것처럼

[config\urls.py]
from security import views
path('security/', views.index),
> 추가

[security\views.py]

from django.http import HttpResponse
def index(request):
	return HttpResponse("장고입니다")
	pass
> 함수 만들어주기
> 웹페이지 새로고침
> 장고입니다가 뜸

config\urls.py

from django.contrib import admin
from django.urls import path, include
from security import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('security/', include('security.urls')),
]
> include 추가 후 에러남

[security\urls.py]

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]
> security에 urls.py 만들어서 함수 추가
> http://127.0.0.1:8000/security/에 제대로 뜬다

[config\settings.py]
'DIRS': [BASE_DIR / 'templates'],
> templates 부분에 추가

django\templates\security 디렉토리를 만들어주자
> 그 안에 index.html 파일 만들어주기

[security/views.py]

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
	logs = {'key':'value'}
	return render(request,'security/index.html',logs)
> 딕셔너리를 사용해야함

[templates\security\index.html]

{% if key %}
	{% for value in key %}
	<li>{{value}}
	{% endfor%}
{% else %}
	<li>데이터가 없다!
{% endif %}
<br>
A
> if logs로 찾는것이 아닌 딕셔너리 안에 있는 key로 if문을 돌려야한다
> http://127.0.0.1:8000/security/에 키값이 뜬다


#syslog 템플릿 넣어주기
[setting.py]

STATIC_URL = 'static/'
STATICFILES_DIRS = [
	BASE_DIR / 'static'
]
> 추가
> flask static을 django 아래에 넣어주기

[templates\base.html] <link href="{% static 'css/sb-admin-2.min.css' %}" rel="stylesheet">
> 수정(flask 가져옴)

[templates\security\index.html]
> flask에서 가져옴
> 에러나는거 지워버려 (페이징)

[security\views.py]
logs = {'syslog':'1'}
> 데이터 없음에서 빈 표가 나온다

#데이터 베이스 연결

로컬에 mysql 설치
https://dev.mysql.com/downloads/mysql/
> 8.44 LTS
> MSI installer

models.py를 수정한다
[장고용]

from django.db import models

class SystemEvents(models.Model):
    # 테이블 이름 정의
    class Meta:
        db_table = 'SystemEvents'

    # 필드 정의
    ID = models.AutoField(primary_key=True)  # 자동 증가하는 ID 필드
    CustomerID = models.BigIntegerField(null=True, blank=True)  # BigInteger 타입
    ReceivedAt = models.DateTimeField(null=True, blank=True)  # DateTime 타입
    DeviceReportedTime = models.DateTimeField(null=True, blank=True)  # DateTime 타입
    Facility = models.SmallIntegerField(null=True, blank=True)  # SmallInteger 타입
    Priority = models.SmallIntegerField(null=True, blank=True)  # SmallInteger 타입
    FromHost = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    Message = models.TextField()  # TextField는 null=False로 설정되어 있음
    NTSeverity = models.IntegerField(null=True, blank=True)  # Integer 타입
    Importance = models.IntegerField(null=True, blank=True)  # Integer 타입
    EventSource = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    EventUser = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    EventCategory = models.IntegerField(null=True, blank=True)  # Integer 타입
    EventID = models.IntegerField(null=True, blank=True)  # Integer 타입
    EventBinaryData = models.TextField(null=True, blank=True)  # TextField (null=True로 설정)
    MaxAvailable = models.IntegerField(null=True, blank=True)  # Integer 타입
    CurrUsage = models.IntegerField(null=True, blank=True)  # Integer 타입
    MinUsage = models.IntegerField(null=True, blank=True)  # Integer 타입
    MaxUsage = models.IntegerField(null=True, blank=True)  # Integer 타입
    InfoUnitID = models.IntegerField(null=True, blank=True)  # Integer 타입
    SysLogTag = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    EventLogType = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    GenericFileName = models.CharField(max_length=60, null=True, blank=True)  # CharField (60자까지)
    SystemID = models.IntegerField(null=True, blank=True)  # Integer 타입

    # 모델의 문자열 표현 정의 (옵션)
    def __str__(self):
        return f"Event {self.ID} from {self.FromHost}"
[config\setting.py]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # MySQL 백엔드
        'NAME': 'Syslog',  # 데이터베이스 이름
        'USER': 'rsyslog',  # MySQL 사용자 이름
        'PASSWORD': '123456',  # MySQL 비밀번호
        'HOST': 'localhost',  # 호스트 (로컬호스트)
        'PORT': '3306',  # MySQL 포트 (기본값 3306)
    }
}
pip install mysqlclient
pip install pymysql

mysql 웹에서 다운로드한거 제대로 설치
> root 123456

workbench
> local host로 접속
> connection name: mysql
> name 아무거나 해도 됨

CREATE DATABASE syslog;
CREATE USER 'rsyslog'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON Syslog.* TO 'rsyslog'@'localhost';
FLUSH PRIVILEGES;

Edit connection
> Username : rsyslog
> Default Schema : Syslog


> 연결 > syslog라는 데이터베이스가 만들어져있음
> cmd에서 server run을 해주면 연결됐다고 뜰거임

[security\apps.py]
> name이 security로 되어있음

[config\settings.py]

INSTALLED_APPS = [
	'security.apps.SecurityConfig',
> 앱이름 추가

마이그레이션 진행
cmd
mysite

python manage.py makemigrations
> 내가 만든 모델 추가

python manage.py migrate
> INSTALLED_APPS에 있는거 기본 추가


워크벤치에서 확인
> SystemEvents 테이블이 생김
> 안에 모델에 넣었던 필드명들이 다 있음


[security\views.py]

from django.shortcuts import render
from django.http import HttpResponse
from .models import SystemEvents

# Create your views here.

def index(request):
	syslog = SystemEvents.objects.order_by('-ID')
	context={'syslog':syslog}
	return render(request,'security/index.html',context)
> syslog를 가져옴
> 웹에서 새로고침
> 데이터 없음이 뜸


sudo mysqldump -u rsyslog -p Syslog > syslog.sql
> 95번에서 sql을 뺌