●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을 뺌