*참고 사항: /home/song 은 내 디렉토리 위치다!
django-admin startproject mysite
→ django 프로젝트 만들기: /home/song에서
python3 -m venv .venv
→ .을 찍으면 숨김파일이라 우리 프로젝트에서 영향을 안받으니까 .venv 가상환경 만들기
→ mysite에서 가상환경 만들기

source ./.venv/bin/activate
deactivate : 원래 나의 환경으로 돌아오는 명령어settings 수정 vi mysite/settings.py
DEBUG=False
ALLOWED_HOSTS = ["192.168.21.137", "localhost", "127.0.0.1"]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db' / 'db.sqlite3',
}
} #DATABASES 경로 변경
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'www_dir' / 'static' #추가
CSRF_TRUSTED_ORIGINS = [
'http://127.0.0.1:8080', 'http://127.0.0.1',
'http://localhost:8080', 'http://localhost',
**'http://192.168.11.132:9090', 'http://192.168.11.132',**
] #내용 추가
cd /home/song/mysite로 이동(가상환경이나 혹은 root에서 실행, django project를 만든 경로에서 진행해야 한다.)python manage.py collectstatic
sudo mkdir /etc/django vi /etc/django/secret_key.txt```python
SECRET_KEY = 'django-insecure-3nso(+#*o=h)9t535e^31c4p#+%x22+tq-)63qyz_op&ly5gyd'
# 이중에서 '' 안에 시크릿키만 복사해서 secret_key.txt 에 저장함
```
이후에 vi settings.py에서 시크릿키 삭제 후 아래 내용 변경해줌
```python
# SECURITY WARNING: keep the secret key used in production secret!
with open('/etc/django/secret_key.txt') as f:
SECRET_KEY = f.read().strip()
#아래 키는 삭제
SECRET_KEY = 'django-insecure-3nso(+#*o=h)9t535e^31c4p#+%x22+tq-)63qyz_op&ly5gyd'
```mkdir db python3 [manage.py](http://manage.py/) migrate
-> mysite/db폴더를 만들고 mysite에서 migrate를 진행하면 자동으로 db 아래에 db.sqlite3가 생겨서 mv 안해줘도 된다.
mv db.sqlite3 ./db
권한 주기
chmod 777 ./db chmod 666 ./db/db.sqlite3
이외에 로그 파일 폴더 만들기
mkdir logs && chmod 777 logs && touch logs/mysite.log && chmod 666 logs/mysite.log
python manage.py createsuperusersudo apt-get install nginx
vi /etc/nginx/sites-available/mysite_nginx.conf```python
server {
listen 9090;
index index.html index.htm index.nginx-debian.html main.html main.htm;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# Django 관련 설정들 ########
location /static/ {
root /home/song/mysite/www_dir;
}
location / {
proxy_pass http://127.0.0.1:9091;
}
#######################
}
```cd /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/mysite_nginx.conf mysite_nginx.confsudo systemctl restart nginxapt-get install gunicorn which gunicorncd /home/song/mysitegunicorn -b 127.0.0.1:9091 mysite.wsgi

→ 해결방법: CSRF 권한에 vmware IP, vmware IP:포트번호 추가하니까 로그인 가능

이런 식으로 css가 깨짐..
→ 그래서 /home/song/mysite에서 www_dir에 모든 권한을 줘도 css 적용 안되더라..
→ 다시 www_dir을 삭제하고 collectstatic을 하고 chmod로 권한을 줘도 여전히 css가 깨진다.
→ nginx.conf의 /static/ 경로를 root, alias를 사용해서 다양하게 해봤지만 다 실패

우선 /home/song/mysite/에 있는 manage.py에서 collect static 적용하기
python [manage.py](http://manage.py/) collectstatic
그러면 myiste/www_dir 폴더가 생기는데 위에 말한 내용과 같이 권한을 아무리 변경해줘도 css 적용이 안된다..
www_dir(static 디렉토리가 있는)의 위치를 변경해주기
/home/song/mysite/www_dir을 /var/www/ 밑으로 이동해줬다.
`sudo mv ./www_dir /var/www/
→ 이제 static 위치는 /var/www/www_dir/static/
nginx 수정하기
vi /etc/nginx/sites-available/mysite_nginx.conf
root /var/www/www_dir;```
# Django 관련 설정들
location /static/ {
**root /var/www/www_dir**; #변경
#기존 설정: root /home/song/mysite/www_dir/static;
#alias /home/song/mysite/www_dir_static_admin;
}
```alias /var/www/www_dir/static/;```
# Django 관련 설정들
location /static/ {
**alias /var/www/www_dir/static/; #변경**
#기존 설정: root /home/song/mysite/www_dir/static;
#alias /home/song/mysite/www_dir_static_admin;
}
```🎈🎈🎈🎈🎈해냈다ㅠㅠㅠㅠㅠㅠ!!!!


이외에 mysite 모듈이 존재하지 않거나 불러올 수 없는 경우 → /home/song/mysite로 이동하지 않고 gunicorn을 실행해서 그럴 수도 있으니까 꼭 위치 확인하고 gunicorn 실행하기
6주차 후기: 일단.. 일주일동안 Django 배웠는데 조금 정신이 없었지만 결과가 뭔가 확 보이니까 뿌듯함이 있었다.. 다만, gunicorn까지 연결해서 구성할 때 다 잘 따라했는데, 대체 왜 안돼!!라고 했지만, 다들 안되길래 오히려 되는게 더 큰 문제군 이라고 생각했고ㅋㅋㅋㅋㅋ
css 깨지는 문제때문에 주말에 매달려서 혼자서 해낸거에 스스로 큰 만족감을 느꼈다. 권한이 없어서 열리지 않는 문제들, 그리고 구글링이나 chat GPT에 질문을 많이 찾아다니면서 질문하는 방법을 조금 알아갔달까.. 그래서 난 Djnago를 잘 알고 있냐? 물어보면 그건 아니다. 이거만 3번 만들어봤는데 다음주에 다시 만드려니 또 헤매고 있는 날 보면서 대체 난.. 그치만 그래도 한 번이 어렵지 하면 할수록 늘겠지 라는 생각..
이 7-8주차에는 docker를 했는데..그건 추후 후기 업로드하겠습니다...하 .. 힘내자