๐Ÿ“• [DainWiki] ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…


๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ & ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด


์ „์ฒด ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ“ DainWiki/
โ”œโ”€โ”€ ๐Ÿ“ bookstack/         # BookStack ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ๋ฐ ๋ฐ์ดํ„ฐ
โ”‚   โ””โ”€โ”€ ...                # ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ๋งˆ์šดํŠธ๋จ
โ”œโ”€โ”€ ๐Ÿ“ bookstack_db/      # MariaDB ๋ฐ์ดํ„ฐ
โ”‚   โ””โ”€โ”€ ...                  # (.frm, .ibd ๋“ฑ DB ํŒŒ์ผ๋“ค)
โ”œโ”€โ”€ ๐Ÿ“ certs/             # ์ธ์ฆ์„œ ์ €์žฅ์†Œ (์ž๋™ ์ƒ์„ฑ๋จ)
โ”œโ”€โ”€ ๐Ÿ“ html/              # nginx ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์ €์žฅ์†Œ
โ”œโ”€โ”€ ๐Ÿ“ vhost.d/           # ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ์„ค์ • (์ž๋™ ์ƒ์„ฑ๋จ)
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.yml   # ์ „์ฒด ๋„์ปค ์„ค์ •


bookstack container

๐Ÿ“ /app/www/
โ”œโ”€โ”€ ๐Ÿ“„ .env                  # Laravel ํ™˜๊ฒฝ ๋ณ€์ˆ˜
โ”œโ”€โ”€ ๐Ÿ“„ artisan               # Laravel CLI ์ง„์ž… ํŒŒ์ผ
โ”œโ”€โ”€ ๐Ÿ“ config/               # ์•ฑ ๋ฐ DB ์„ค์ •
โ”‚   โ”œโ”€โ”€ app.php
โ”‚   โ””โ”€โ”€ database.php ๋“ฑ
โ”œโ”€โ”€ ๐Ÿ“ routes/               # ์›น ๋ผ์šฐํŠธ ์„ค์ •
โ”‚   โ””โ”€โ”€ web.php ๋“ฑ
โ”œโ”€โ”€ ๐Ÿ“ resources/            # ๋ทฐ ํ…œํ”Œ๋ฆฟ, ์–ธ์–ด ๋ฆฌ์†Œ์Šค
โ”‚   โ”œโ”€โ”€ views/
โ”‚   โ””โ”€โ”€ lang/
โ”œโ”€โ”€ ๐Ÿ“ storage/              # ์บ์‹œ, ์—…๋กœ๋“œ, ๋กœ๊ทธ ์ €์žฅ์†Œ
โ”‚   โ”œโ”€โ”€ logs/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ””โ”€โ”€ framework/
โ””โ”€โ”€ ๐Ÿ“ public/               # ์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ
    โ””โ”€โ”€ ๐Ÿ“ uploads/          # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ €์žฅ์†Œ


bookstack_db container

๐Ÿ“ /
โ”œโ”€โ”€ ๐Ÿ“ var/
โ”‚   โ””โ”€โ”€ ๐Ÿ“ lib/
โ”‚       โ””โ”€โ”€ ๐Ÿ“ mysql/              # โฌ…๏ธ ์ด๊ณณ์ด ํ•ต์‹ฌ: ์‹ค์ œ DB ํŒŒ์ผ ์ €์žฅ์†Œ
โ”‚           โ”œโ”€โ”€ ๐Ÿ“ bookstack/     # BookStack์—์„œ ์‚ฌ์šฉํ•˜๋Š” DB ํ…Œ์ด๋ธ”๋“ค
โ”‚           โ”‚   โ”œโ”€โ”€ users.ibd
โ”‚           โ”‚   โ”œโ”€โ”€ pages.ibd
โ”‚           โ”‚   โ””โ”€โ”€ ...
โ”‚           โ”œโ”€โ”€ mysql/           # ์‹œ์Šคํ…œ DB (์‚ฌ์šฉ์ž, ๊ถŒํ•œ ๊ด€๋ฆฌ)
โ”‚           โ”œโ”€โ”€ performance_schema/
โ”‚           โ””โ”€โ”€ ibdata1, ib_logfile0 ๋“ฑ
โ”œโ”€โ”€ ๐Ÿ“ etc/
โ”‚   โ””โ”€โ”€ my.cnf                    # MariaDB ์„ค์ • ํŒŒ์ผ
โ””โ”€โ”€ ๊ธฐํƒ€ Linux ๊ธฐ๋ฐ˜ ๋„์ปค ํŒŒ์ผ๋“ค


1. SSH๋กœ ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„ ์ ‘์†

Linux, macOS, WSL, ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„, VSCode ํ„ฐ๋ฏธ๋„

ssh -i ~/ํ‚ค์ด๋ฆ„.pem ubuntu@your-lightsail-ip

์œˆ๋„์šฐ (Windows PowerShell / CMD)

ssh -i "C:\Users\aweso\pem\ํ‚ค์ด๋ฆ„.pem" ubuntu@your-lightsail-ip


2. home ์ ‘์†
cd DainWiki


3. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ
docker exec -it bookstack bash


4. Laravel ์•ฑ ๊ฒฝ๋กœ๋กœ ์ด๋™
docker exec -it bookstack bash
cd /app/www
ls -al .env


5. Laravel ์„ค์ • ์บ์‹œ ์ •๋ฆฌ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ•์ œ ์‹คํ–‰
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan migrate --force


6. maria db ๋ช…๋ น์–ด ์“ฐ๋Š” ๊ณณ
docker exec -it bookstack_db bash ์—ฌ๊ธฐ์„œ ์‹คํ–‰
mysql -u root -p
๋น„๋ฒˆ rootpassword

์ ‘์†์„ฑ๊ณต์‹œ
Welcome to the MariaDB monitor...
MariaDB [(none)]>


7. ๋‚จ์€ ์ €์žฅ์†Œ ์šฉ๋Ÿ‰ ํ™•์ธ
df -h



#1. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ž๋™ SSL ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๋ฒ•


โš ๏ธ ๋ฌธ์ œ


๐Ÿ” ์›์ธ ๋ถ„์„


โšก ํ•ด๊ฒฐ๋ฐฉ๋ฒ•


๊ธฐ์กด ๊ตฌ์„ฑ

๐Ÿ“ DainWiki/
โ”œโ”€โ”€ ๐Ÿ“ bookstack/
โ”œโ”€โ”€ ๐Ÿ“ bookstack_db/
โ”œโ”€โ”€ docker-compose.yml

yml ํŒŒ์ผ ์ˆ˜์ • ํ›„

๐Ÿ“ DainWiki/
โ”œโ”€โ”€ ๐Ÿ“ bookstack/         # BookStack ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ๋ฐ ๋ฐ์ดํ„ฐ
โ”œโ”€โ”€ ๐Ÿ“ bookstack_db/      # MariaDB ๋ฐ์ดํ„ฐ
โ”œโ”€โ”€ ๐Ÿ“ certs/             # ์ธ์ฆ์„œ ์ €์žฅ์†Œ (์ž๋™ ์ƒ์„ฑ๋จ)
โ”œโ”€โ”€ ๐Ÿ“ html/              # nginx ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์ €์žฅ์†Œ
โ”œโ”€โ”€ ๐Ÿ“ vhost.d/           # ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ์„ค์ • (์ž๋™ ์ƒ์„ฑ๋จ)
โ”œโ”€โ”€ docker-compose.yml   # ์ „์ฒด ๋„์ปค ์„ค์ •

image.png


๐Ÿ“Œ โ‘  Let's Encrypt ์ธ์ฆ์„œ ๋ฐœ๊ธ‰์šฉ ์„ค์ •

service:
- VIRTUAL_HOST=dainwiki.com
- LETSENCRYPT_HOST=dainwiki.com
- LETSENCRYPT_EMAIL=your@email.com

๐Ÿ“Œ โ‘ก APP_URL ๊ฐ’ http โ†’ https๋กœ ๋ณ€๊ฒฝํ•จ

-      - APP_URL=http://dainwiki.com
+      - APP_URL=https://dainwiki.com

โ†’ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ https ์ฃผ์†Œ๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

๐Ÿ“Œ โ‘ข nginx-proxy ๋ฐ letsencrypt ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€

nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
    networks:
      - bookstack_net

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    restart: always
    environment:
      - NGINX_PROXY_CONTAINER=nginx-proxy
      - DEFAULT_EMAIL=your@email.com
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
    depends_on:
      - nginx-proxy
    networks:
      - bookstack_net

โ†’ ์ž๋™ ํ”„๋ก์‹œ + SSL ๋ฐœ๊ธ‰๊ธฐ ์—ญํ• 



#2. www ๋„๋ฉ”์ธ 503 ๋ฆฌ๋””๋ ‰์…˜ ๋ฌธ์ œ


โš ๏ธ ๋ฌธ์ œ

image.png

image.png


๐Ÿ” ์›์ธ ๋ถ„์„


โšก ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
VIRTUAL_HOST=dainwiki.com,www.dainwiki.com
LETSENCRYPT_HOST=dainwiki.com,www.dainwiki.com
LETSENCRYPT_EMAIL=you@example.com

๋ณ€๊ฒฝ ํ›„์—๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘

docker-compose down
docker-compose up -d

์ด ์„ค์ •์„ ํ†ตํ•ด



#3. DB ์ดˆ๊ธฐํ™” & ๋ฐ์ดํ„ฐ ๋ณด์กด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…


โš ๏ธ ๋ฌธ์ œ


๐Ÿ” ์›์ธ ์ถ”์ •


โšก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•


๐Ÿ“‚ ๊ตฌ์กฐ ๊ฐœ์š”

๐Ÿ“ DainWiki/
โ”œโ”€โ”€ ๐Ÿ“ bookstack/        # BookStack ์•ฑ ์„ค์ •, ์ด๋ฏธ์ง€
โ”œโ”€โ”€ ๐Ÿ“ bookstack_db/     # MariaDB ๋ฐ์ดํ„ฐ (์œ„ํ‚ค ํฌ์ŠคํŠธ, ๊ณ„์ • ๋“ฑ)
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.yml
โ””โ”€โ”€ ๐Ÿ“„ .env


โœ… yml. ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ €์žฅ ์œ„์น˜

bookstack:
  volumes:
    - ./bookstack_data:/config

bookstack_db:
  volumes:
    - ./db_data:/var/lib/mysql

๋ฐ์ดํ„ฐ๋Š” ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ(bind mount)๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค.


โœ… ์‹ค์ œ ํ˜ธ์ŠคํŠธ ์ €์žฅ ๊ฒฝ๋กœ ๋ณด๊ธฐ

docker inspect bookstack


โœ… ๋‚จ์€ ๊ณต๊ฐ„ ํ™•์ธ

df -h

image.png



#4. ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ํ›„์—๋„ ๋ณด์•ˆ๊ฒฝ๊ณ  ๋œจ๋Š” ๋ฌธ์ œ


โš ๏ธ ๋ฌธ์ œ


๐Ÿ” ์›์ธ ๋ถ„์„

๐Ÿง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•


SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๋กœ๊ทธ ํ™•์ธ

docker logs letsencrypt

image.png

๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ ‘์†

docker exer -it nginx-proxy sh
docker exer -it nginx-proxy bash


์ธ์ฆ์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

ls /etc/nginx/certs/

image.png



#5. Git์— READ.md ํŒŒ์ผ๋งŒ ์žˆ์„๋•Œ ๋กœ์ปฌ์—์„œ ์ฒ˜์Œ push ํ•˜๋Š” ๊ฒฝ์šฐ


โš ๏ธ ๋ฌธ์ œ


๐Ÿ” ์›์ธ ๋ถ„์„

๋ช…๋ น์–ด

์‚ฌ์šฉ ์‹œ์ 

์˜๋ฏธ ๋ฐ ์ž‘๋™ ๋ฐฉ์‹

git pull origin main --allow-unrelated-histories

โœ… ์ตœ์ดˆ 1ํšŒ๋งŒ

์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ๋‘ Git ํžˆ์Šคํ† ๋ฆฌ๋ฅผ

๊ฐ•์ œ๋กœ ๋ณ‘ํ•ฉ

git pull origin main --rebase

โŒ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ (์ดˆ๊ธฐ์—๋Š”)

๊ณตํ†ต ์กฐ์ƒ์ด ์žˆ์–ด์•ผ

rebase ๊ฐ€๋Šฅํ•จ โ†’ ์ด ์ƒํ™ฉ์—์„  ์—๋Ÿฌ๋‚จ

์ฒ˜์Œ 1ํšŒ๋งŒ pull ํ•  ๋•Œ --allow-unrelated-histories๋ฅผ ์จ์•ผ ํ•œ๋‹ค.

๋‘ ์ €์žฅ์†Œ๊ฐ€ '๊ณตํ†ต ์ปค๋ฐ‹'์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Git์€ ์„œ๋กœ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— --rebase๋Š” ์•ˆ ๋œ๋‹ค.

--allow-unrelated-histories๋Š” ๊ณตํ†ต ์ปค๋ฐ‹ ์ด๋ ฅ์ด ์•„์˜ˆ ์—†๋Š” ๋‘ ์ €์žฅ์†Œ๋ฅผ ๋ณ‘ํ•ฉํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์“ฐ๊ณ  ๋‚˜๋ฉด,

๋กœ์ปฌ๊ณผ ์›๊ฒฉ์ด X โ†’ A โ†’ B โ†’ C ์ฒ˜๋Ÿผ ๊ฐ™์€ ์ด๋ ฅ์„ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” ํ•„์š”๊ฐ€ ์—†๋‹ค.


โšก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
# 1. ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€
git remote add origin https://github.com/๋‚ด์•„์ด๋””/๋ ˆํฌ์ด๋ฆ„.git

# 2. ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋จผ์ € ๊ฐ€์ ธ์˜ค๊ธฐ
git pull origin main --allow-unrelated-histories

# 3. ์ถฉ๋Œ ๋‚ฌ๋‹ค๋ฉด ํ•ด๊ฒฐ ํ›„ ์ปค๋ฐ‹

# 4. ์ด์ œ ์ •์ƒ์ ์œผ๋กœ ํ‘ธ์‹œ ๊ฐ€๋Šฅ
git push origin main

์ดํ›„๋ถ€ํ„ฐ๋Š” git pull ๋˜๋Š” git pull --rebase ํ•œ๋‹ค.


#6. The current branch master has no upstream branch. ๋ฌธ์ œ


โš ๏ธ ๋ฌธ์ œ
The current branch master has no upstream branch.

$ git push fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master To have this happen automatically for branches without a tracking upstream, see 'push.autoSetupRemote' in 'git help config'.


๐Ÿ” ์›์ธ ๋ถ„์„


๐Ÿง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
git branch -m master main
git push -u origin main
# (GitHub์—์„œ default branch ์„ค์ • ๋ณ€๊ฒฝ)
git push origin --delete master   # (์„ ํƒ)


1. ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ•

git branch -m master main

2. ์›๊ฒฉ(origin)์— ์ƒˆ ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ

git push -u origin main

3. GitHub์—์„œ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ฅผ main์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

  1. GitHub ์›น์‚ฌ์ดํŠธ โ†’ ํ•ด๋‹น ์ €์žฅ์†Œ๋กœ ์ด๋™
  2. Settings โ†’ Branches ๋ฉ”๋‰ด ํด๋ฆญ
  3. Default branch๋ฅผ master โ†’ main์œผ๋กœ ๋ณ€๊ฒฝ

4. ๊ธฐ์กด master ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

git push origin --delete master


๐Ÿ’ก ์ฐธ๊ณ 

๋งŒ์•ฝ์— master๋กœ ๊ณ„์† ์“ธ๊ฑฐ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ --set-upstream ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

git push --set-upstream origin master

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด origin/master ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์—ฐ๊ฒฐํ•ด์„œ master ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ(origin)์— ํ‘ธ์‹œํ•œ๋‹ค.

๋‚˜์ฒ˜๋Ÿผ ์ง€๊ธˆ master ๋ธŒ๋žœ์น˜์— ์žˆ๊ณ , ์•„์ง ์›๊ฒฉ ์ €์žฅ์†Œ์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜์„ ๋•Œ,

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•ž์œผ๋กœ๋Š” git push, git pull๋งŒ ์ณ๋„ origin/master์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.