》 Django 기능 이용
[ AWS : S3 ]
》 버킷 만들기
2023.03.15 - [분류 전체보기] - [Cloud] S3 : 버킷 내 객체 공유하기
[ Django ]
》 PyCharm Project 이용
● Django project 생성 + 기본 세팅
#장고 설치
pip install django
#설정 파일 만들기
django-admin startproject config .
#앱 추가
python .\manage.py startapp app01
● Django 에 DB 연결
① 리눅스 설정
#mysql-server 설치
yum install mysql-server
#mysql 실행
systemctl start mysqld
systemctl enable mysqld
mysql -u root
#연동할 데이터베이스 생성
create database [데이터베이스명];
#계정 생성
create user '[사용자명]'@'%' identified by '[비밀번호]';
#권한 주기
grant all privileges on [데이터베이스명].* to '[사용자명]'@'%';
#재시작
systemctl restart mysqld
#방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
② Django 설정
》 설치
pip install boto3 django-storages
》 settings.py 파일 설정
#INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01', #추가했던 앱
'storages', #s3 연동
]
#DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[데이터베이스명]',
'USER': '[사용자명]',
'PASSWORD': '[비밀번호]',
'HOST': '[db server ip]',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
}
}
}
#S3 연동
AWS_REGION = 'ap-northeast-2' #사용지역 (서울 : ap-northeast-2)
AWS_STORAGE_BUCKET_NAME = '[S3에서 만든 버킷명]'
AWS_ACCESS_KEY_ID = '[액세스 키ID]'
AWS_SECRET_ACCESS_KEY = '[액세스 키-secret access key]'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (AWS_STORAGE_BUCKET_NAME, AWS_REGION)
#Static Setting
STATIC_URL = "https://%s/static/" % AWS_S3_CUSTOM_DOMAIN
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
#Media Setting
MEDIA_URL = "https://%s/media/" % AWS_S3_CUSTOM_DOMAIN
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
≫ 액세스 키 발급 : 우측 상단 이름 클릭 》 보안 자격 증명 》 액세스 키 만들기
》 명령어 실행
python .\manage.py collectstatic
》 이미지 업로드 / 조회 기능 추가
#models.py
class Picture(models.Model):
img = models.ImageField(upload_to="image", blank=True)
#urls.py
urlpatterns = [
#이미지 업로드
path('img/',app01.views.img),
path('img_up/',app01.views.img_upload),
#이미지 조회
path('img_down/',app01.views.img_download),
]
#views.py
def img(request): #이미지 저장 페이지 불러오기
return render(request, 'img_up.html')
def img_upload(request): #이미지 저장
image = request.FILES.getlist("image")
for img in image:
s3_img = Picture()
s3_img.img = img
s3_img.save()
return redirect('/img_down/')
def img_download(request): #이미지 조회
result = Picture.objects.all()
info = {"result" : result}
return render(request, 'img_down.html',info)
#img_up.html
<body>
<form action="/img_up/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" multiple name="image">
<button type="submit">upload</button>
</form>
</body>
#img_down.html
<body>
{% if result %}
{% for img in result %}
<img src="https://[버킷명].s3.[사용지역].amazonaws.com/{{img.img}}" alt="">
{% endfor %}
{% endif %}
</body>
☞ 확인하기 ☜
》 Django 에서 이미지 업로드, 조회 시 S3에 이미지 저장
'CLOUD > Public Cloud' 카테고리의 다른 글
[AWS] Load Balancer DNS 설정 (0) | 2023.03.16 |
---|---|
[AWS] S3 : React 프로젝트 업로드 (0) | 2023.03.15 |
[AWS] S3 : 버킷 내 객체 공유하기 (0) | 2023.03.15 |
[AWS] RDS : Master(온프레미스) - Slave(AWS Cloud) 서버 구축 (2) | 2023.03.14 |
[AWS] RDS : Master - Slave 서버 구축 (0) | 2023.03.14 |