Django์ uwsgi ๋ฐฐํฌ ์ค ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. $ sudo cat /var/log/nginx/error.log[crit] 1212317#1212317: *1 open() "/var/lib/nginx/tmp/uwsgi/1/00/0000000001" failed (13: Permission denied) while reading upstream, client: Server IP, server: domain.com, request: "POST /data HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/application.sock:", host: "domain.com", referrer: "https://domain.com" ํ๋ก ํธ ๋จ์์๋ HTTP2_PR..
์ ์ฒด
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwRIrz%2FbtssTpsoPXG%2F23kf4xYZB3OKkmgvzK61Tk%2Fimg.png)
์นดํ์นด Kafka Apache Kafka๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ถ์ฐ ์์คํ
์ผ๋ก, ๊ณ ์ฑ๋ฅ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ, ์คํธ๋ฆฌ๋ฐ ๋ถ์, ๋ฐ์ดํฐ ํตํฉ์ ์ํด ์ฌ์ฉํ๋ ์คํ ์์ค ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ด๋ค. ์นดํ์นด๋ ์ฌ๋ฌ ๋ฉ์ธ์ง ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก๋ ๋ถ์ฐ ์์คํ
์ด๋ฏ๋ก, ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ์ด๋ค. ์๋ฒ์ ๊ท๋ชจ์ ๋ฐ๋ผ ๋ธ๋ก์ปค, ํํฐ์
, ์ปจ์๋จธ๋ฅผ ๋๋ ค๊ฐ๋ฉฐ ์ ์ฐํ๊ฒ ํ์ฅํ ์ ์๋ค. ๋ํ, ๋ฐฐ์นBatch์ ์ก์ด ๊ฐ๋ฅํ๋ฐ, ์ฌ๊ธฐ์ ๋ฐฐ์น ์ ์ก์ ์ํ๋ ์ผ์ ํฌ๊ธฐ๋ฅผ ๋ฌถ์ด์ ๋ณด๋ด๊ณ , ๋ฌถ์ด์ ๋ฐ๋ ๊ตฌ์กฐ์ด๋ค. ์ ์กํ ์๋ฃ๊ฐ 10๊ฐ๊ฐ ์๋ค๋ฉด, 10๊ฐ๋ฅผ ๋ชจ๋ ์ผ์ผ์ด ๋ณด๋ด๋ 10๊ฐ์ ์ ์ก์ด ์ด๋ฃจ์ด์ง๋ ๋ฐฉ์๋ณด๋ค, ํ ๋ฒ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ๋์ด ํจ์ฌ ์ข๋ค. ๊ตฌ์กฐ 1. ํ๋ก๋์ Producer Kafka์๊ฒ ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค์ด์ ์ ์กํ๋ค. 2. ์ปจ์๋จธ Consumer ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctawP7%2FbtssUJbqwmD%2F1M9LKUtsdReVbv9mXFNgkk%2Fimg.png)
Docker๋ฅผ ์ด์ฉํด์ ์๋ฒ๋ฅผ ์๋ ๋ฐฐํฌ๋ฅผ ์ค์ ํด๋๋๋ฐ.. ์ด๋์ ์ฝ๋๋ฅผ ๋ฐ๊พผ ๋ด์ฉ์ด ์ ์ฉ๋์ง ์์๋ค.. ๊นํ๋ธ ๋ฌธ์ ์ธ์ง, ์ฝ๋ ๋ฌธ์ ์ธ์ง ์ฌ๋ฌ ๊ฐ์ค์ ์ธ์ฐ๊ณ ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด๋ค๊ฐ.. Action ๋ก๊ทธ์์ ๋ค์์ ๋ฐ๊ฒฌํ๋ค..! Action ์ ๊ณ์ ์ฑ๊ณตํ๋ค๊ณ ๋์์ง๋ง, ์ด๋ฐ ์๋ฌ๊ฐ ์จ์ด์์๋ค.. (์ด๋ด๊ฑฐ๋ฉด ๊ทธ๋ฅ ์คํจํ๋ค๊ณ ํ์ง) ๋์ด์ ๋จ์ ์ฉ๋์ด ์๋ค๊ณ ๋์ค๋๋ฐ, EC2์ ์ฉ๋์ ๋ค ์ธ๋ฆฌ๊ฐ ์์๋ค. ํ ํ๋ก์ ํธ๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ๋ชจ๋ ์ฉ๋์ ์ธ ์ผ์ด ์์๋ค... ๊ทธ๋์ ์๋ ๋ช
๋ น์ด๋ก EC2 ๋ณผ๋ฅจ ์ฌ์ฉ๋์ ํ์ธํด๋ณด์๋ค. df -hT /dev/xvda1 ๊ทธ๋ฐ๋ฐ .. ๋ณผ๋ฅจ์ 96%๋ฅผ ์ด๋ฏธ ์ฌ์ฉ์ค์ด๋ผ๊ณ ๋์๋ค ..! ๊ตฌ๊ธ๋งํ๋ฉฐ ์ฐพ์๋ณด๋.. ๋์ปค๋ฅผ ์ค๋ ๊ธฐ๊ฐ pull ํ๊ณ , run ํ๊ณ ๋ฑ๋ฑ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ค๋ธ์ ํธ ํ..
Django ํ๋ก์ ํธ๋ฅผ uwsgi ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ๋ฐฐํฌ๋ฅผ ํ๊ณ , nginx์ ์ฐ๋ํ๋๋ staticfile๋ค์ ๊ฐ์ ธ์ฌ ์ ์์๋ค. (404) ์ด์ ๋ ๋ช ๊ฐ์ง๊ฐ ์๋๋ฐ.. 1. debug = False๋ก ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์ staticํ์ผ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ์ค์ง ์๋๋ค. 2. uwsgiํ๋กํ ์ฝ ์ฌ์ฉ์ runserver๊ฐ ์๋๊ธฐ ๋๋ฌธ์ static ํ์ผ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ์ค์ง ์๋๋ค. ํ
์คํธ ํ๋ฉด์ runserver๋ฅผ ํตํด ์๋ฒ๋ฅผ ๊ตฌ๋ํ๋ฉด static์ ์ ๊ฐ์ ธ์์ํ
๋ฐ, ์ค์ ๋ฐฐํฌํ๋๋ ๊ทธ๋ ์ง ์์๋ค. ๊ทธ๋์ nginx๋จ์์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๊ณ ์ฒ๋ฆฌํ๋๋ก ํ๋ค. /etc/nginx/nginx.conf http { ... server { ... location /static { alias /home/ec2-u..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYLNr%2FbtssUJvIxNo%2F0k9Z6Nv31FutsKbS99fk40%2Fimg.png)
GitHub Action์ ํตํด์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ Docker๋ก ๋ฐฐํฌํ๋๋ฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. 1. GitHub์ ์ฌ๋ฆฌ์ง ์๋ ํ์ผ - application.yml ์ ์ฉ ์๋ฒ์ ํ์ํ applicationํ์ผ์ ํ๋ก์ ํธ์ ์ ์ฉํด์ผ ํ๋๋ฐ, raw ํ์ผ์ ๊ทธ๋๋ก github์ ์ฌ๋ ค์ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์์๋ค. ๋ฐ๋ผ์ GitHub Action ์คํฌ๋ฆฝํธ์ ๋ค์์ ์ถ๊ฐํ๋ค. gradle.yml ... - name: Set YML run: | mkdir -p src/main/resources echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > src/main/resources/application.yml find src ... Action Secret์ ๋ฏธ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSIrGR%2FbtssT4z4NLx%2FzGVEpLYAY5NcJTIFLEjrL0%2Fimg.png)
https://nginxstore.com/blog/nginx/nginx-%EC%84%B1%EB%8A%A5-%ED%99%95%EC%9E%A5%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%84%A4%EA%B3%84-%EB%B0%A9%EB%B2%95/ NGINX๋ Master Process์๋ ์ฌ๋ฌ worker์ helper๊ฐ ์๋ค. # ps -ef --forest | grep nginx root 32475 1 0 13:36 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 32476 32475 0 13:36 ? 00:00:00 _ nginx: worker process nginx 32477 32475 0..