์น ์๋ฒ(Web Server) ์ ๋ํ ์ดํด
์น ์๋ฒ(Web Server)
ํ์ผ ์ ๋ฌ์ ์ญํ ์ ์ํ
- ์น ์๋ฒ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ์ผ์ ์์ฒญํ์ฌ, ๋จ์ง ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ผ ๋ฟ์ด๋ค.
๊ทธ๋ผ, ์ด๋ป๊ฒ ํ์ผ์ ์์ฒญํ๋๊ฐ?
- ํ๋กํ ์ฝ์ ์ด์ฉ
- url ์ฐฝ์ ํตํด์ ์์ฒญ
- url : ์น์๋ฒ์์ ์๋ฃ๋ฅผ ์์ฒญํ๋ ์ ๊ตฌ.
URL
URL (Uniform Resource Locator)
URL์ด๋ ์น ์๋ฒ์์ (์ธํฐ๋ท ์์ ์๋) ์๋ฃ๋ฅผ ์์ฒญํ๋ ๊ฐ
[Protocol]://[ Domain or IP Address ]:[Port]/[File/Path]/[Query/Params]
- Protocol : http ํน์ https ๋ฑ์ ์๋ฏธ
- Domain or IP Adress : www.naver.com ์ด๋ 192.168.xxx.xxx ๋ฅผ ์๋ฏธ
- Port : ํฌํธ ๋ฒํธ๋ฅผ ์๋ฏธ
- File/Path : ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ค ํ์ผ์ ๊ฒฝ๋ก
- ๋ฏธ๊ธฐ์ ์ - index.html์ ๋ณด์ฌ์ค(์๋ต)
- Query/Params : ์๋ฃ ์์ฒญ์ ์ํ ์ฟผ๋ฆฌ(Query)์ ํ๋ผ๋ฏธํฐ(Parameter)
- ex) http://๋ณธ์ธip์ฃผ์:ํฌํธ/ํ์ผ๋ช
์ฐ๋ ผ ํฌํธ(์ฌํ์ ์ฝ์, ๊ท๋ฒ)
http : 80 https : 443 ssh : 22 ftp :23
์ฐ๋ ผ ํฌํธ์ ํํด, url์ ํฌํธ ๋ฒํธ ์๋ต ๊ฐ๋ฅ
(์์์ ๋ค๋ฅธ port๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ, protocol์ ๋ฐ๋ฅธ default๋ก ์ฌ์ฉ๋๋ port๋ก ์์ฒญ)
์ด์ธ์ ํฌํธ ๋ฒํธ๋ ์๋ต ๋ถ๊ฐ๋ฅ(์ด ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ํฌํธ ๋ฒํธ๋ฅผ ๊ธฐ์ ํด ์ฃผ์ด์ผ ํจ)
(http๊ฐ 80์ด์ง๋ง ๋ค๋ฅธ ํฌํธ ๋ฒํธ๋ก ํ๋ค๊ณ ์ถฉ๋์ด ๋ฐ์ํ๊ฑฐ๋ ํ์ง ์์, ํ์ง๋ง "๊ฐ๋ฅํ๋ฉด 80์ ์จ๋ผ" ๋ผ๋ ๋ถ๋ฌธ๋ฅ ์ ์ฝ์์ ํ ๊ฒ) - url ์ฐฝ์ ์ ๋ ฅํ๋ ์๊ฐ ํฌํธ๊ฐ ์ ์ ํ์์ผ๋ฉด ์์์ 80์ ์ ๋ ฅํ๊ณ ์ ์กํ๋ ๊ฒ์ด๋ค.
Web Root ๊ฒฝ๋ก
์น ๋ฃจํธ(Web Root)๋, ์น ์๋ฒ(Web Server)๊ฐ ์คํ๋๊ณ ์๋ ์์น๋ฅผ ๋งํ๋ค.
ํด๋ผ์ด์ธํธ(Client)๊ฐ ํ์ผ์ ์์ฒญํ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก ์น ์๋ฒ(Web Server)๊ฐ ์คํ๋ ์์น(์น ๋ฃจํธ)๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฒญ(Request)๋ฅผ ๋ณด๋ธ๋ค.
- /var/www/ : ์ผ๋ฐ์ ์ธ ๊ฒฝ๋ก

์น ์๋ฒ(Web Server)๊ฐ ์คํ๋๊ณ ์๋ ์์ฐจ๊ฐ ์น ๋ฃจํธ(Web Root) ๊ฒฝ๋ก๊ฐ ๋๊ณ , ์น ๋ฃจํธ ๊ฒฝ๋ก๊ฐ ์ด๋์ธ๊ฐ์ ๋ฐ๋ผ ์ ๊ทผ ๊ฐ๋ฅํ(์์ฒญ ๊ฐ๋ฅํ) ์๋ฃ๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
- ์น ๋ฃจํธ ๊ฒฝ๋ก ๋ฐ์ ํ์ผ์ ์์ฒญํ ์ ์์
ex) ์น ๋ฃจํธ(Web Root) ๊ฒฝ๋ก ๋ฐ์ ํ์ผ ์์ฒญ ํ ์คํธ
ํ์ผ์ ๊ฒฝ๋ก๊ฐ ์๋์ ๊ฐ์ ๋
webBasic
โ test_pic.jpeg
โ test_dir
โ test.txt
web Root๊ฐ test_dir์ด๋ผ๋ฉด?
http://Ip Adress:80/test.txt ๋ ์ ๊ทผ(์์ฒญ)์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง! http://Ip Adress:80/../test_pic.jpeg ๋ ๊ฐ๋ฅํ ๋ฏ ๋ณด์ด์ง๋ง, root ๋ฐ์ผ๋ก ๋๊ฐ๊ธฐ์ ๋ถ๊ฐ๋ฅ
(ํ ์คํธ ์ cache ๋๋ฌธ์ ์๊ฐ์ ์ผ๋ก ๋์จ ๊ฒ ์ฒ๋ผ ๋ณด์ผ ์ ์์.)
๋ง์ฝ Web Root ๊ฒฝ๋ก๊ฐ / (๋ฃจํธ) ๊ฒฝ๋ก๋ผ๋ฉด?
๋ชจ๋ ํ์ผ์ ๋ํ์ฌ ์์ฒญ ๊ฐ๋ฅํ ์ฌ์์ด ๋ฐ์(๋ชจ๋ ์์คํ ์ ๊ทผ ๊ฐ๋ฅ)
- ๋ฐ๋ผ์ ์ด๋๋ฅผ ๋ฃจํธ ๊ฒฝ๋ก๋ก ์ผ์์ง๊ฐ ์น ๊ฐ๋ฐ์ ์์ด ๋งค์ฐ ์ค์ํ๋ค.
์ ์ ํ์ด์ง vs ๋์ ํ์ด์ง
์ ์ ํ์ด์ง - Static
Web Server ๋ ์ ์ ํ์ด์ง์ด๋ค.
- ์น ์๋ฒ๋ ๋จ์ ๋ฌด์, ํ์ผ์ ์ ๋ฌํ๋ ๊ฒ !
๋์ ํ์ด์ง - Dynamic
WAS : Web Application Server - ๋์ ํ์ด์ง
[ - ] ๋ง์ฝ?! ์ฑ์ ํ๋ฅผ ๋๋ ์ฃผ๋ ์น ์๋ฒ๋ฅผ ์ ์ ํ๋ค๋ฉด...
ํ์ : A, B, C ...
์น์๋ฒ : A_score.txt, B_score.txt, C_score.txt. ...
ํ์ ์๊ฐ ์ ๋ค๋ฉด ์ถฉ๋ถํ ๊ฐ๋ฅ
ํ์ง๋ง !
ํ์ ์๊ฐ ๋ง์์ง๋ค๋ฉด ์ฌ์์ด ๋ฐ์
๋ฌด์ธ๊ฐ๋ฅผ ์ผ๊ด์ ์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด ์ผ์ผ์ด ๋ ธ๊ฐ๋ค๋ก ๋ฐ๊ฟ์ผํ๋ ์ ๋ง์ ์ธ ์ํฉ์ด ์๊น
- ์ด์ ์ด ํ์ผ๋ค์ ๋ค์ด๋๋ฏน(Dynamic)ํ๊ฒ ๋ฐ๊ฟ, ๊ทธ๋ ๊ทธ๋ ํ์ํ ํ์ด์ง๋ฅผ ๋์์ฃผ๋ ๋์ ํ์ด์ง๊ฐ ํ์ํ๋ค.
์น์ ๋์ ๋ฐฉ์(๊ตฌ์กฐ)
์น ๋์ ๋ฐฉ์์ ๋ํ ์ดํด - Web Server vs WAS

- Web Server - WAS - DB
- Web Server : ํ์ผ์ ์ ๊ณต - ์ ์ ํ์ด์ง/ ์ ์ ๋ฆฌ์์ค
- WAS : ๋์ ํ์ด์ง
- ํด๋ผ์ด์ธํธ๊ฐ request.php ๋ฅผ ์์ฒญํ๋ค๋ฉด, ์น ์๋ฒ๊ฐ WAS์๊ฒ ๋์ ํ์ด์ง๋ฅผ ์ด๋๋ก ํ๋ค.
- <?php ?> ์ฌ์ด์ ์๋ฒ์ธก ์คํฌ๋ฆฝํธ ยท ๋ฒก์๋ ์ฝ๋์์ ์ฒ๋ฆฌ ํ, ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ , ์๋ฒ์ ์ ๋ฌํ๋ค.
ํ๋ผ๋ฏธํฐ์ ์ ๋ฌ ๋ฐฉ์ - ๋ฉ์๋(Method)
GET / POST
method = "GET"
- $_GET : GET Method๋ก ์ ๋ฌ๋ฐ์ ํ๋ผ๋ฏธํฐ (์น ์๋ฒ์ ์
๋ ฅ๋ฐ์ ํ๋ผ๋ฏธํฐ)
- ํ๋ผ๋ฏธํฐ : ์ฌ์ฉ์๊ฐ ์น ์๋ฒ์๊ฒ ์ ๋ฌํ๋ ๋ฐ์ดํฐ
- GET์ ํ๋ผ๋ฏธํฐ๋ฅผ URL์๋ค๊ฐ ๋ถ์ฌ์ ์ ๋ฌ
- http://ip adress:port/get.php?name=parameter&
- ? ๋ ํ๋ผ๋ฏธํฐ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ตฌ๋ถ์
- & ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๊ตฌ๋ถ์
- name ๋ณ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ ๋ณด๋
- http://ip adress:port/get.php?name=parameter&
method = "POST"
- POST๋ GET๊ณผ ๋ฌ๋ฆฌ URL์ ๋ณด์ฌ์ฃผ์ง ์์
- Request์ Body ๋ถ๋ถ์ ๋ฃ์ด์ ๋ณด๋
- URL์ ๋ณด์ฌ์ฃผ์ง ์์์ผ๋ก์ ๋ฐ์ดํฐ๋ฅผ ์จ๊ธฐ๋ ํจ๊ณผ
- ex) ๋ก๊ทธ์ธ ํ์ด์ง, GET์ ์ฌ์ฉํ๋ฉด ์ ๋ณด๊ฐ ๋ ธ์ถ
์ค์ต
๋ชจ์ ํดํน ์คํฐ๋ 1์ฃผ์ฐจ ์ค์ต
๋ชจ์ ํดํน ์คํฐ๋ - ์ค์ต 01์ฃผ์ฐจ
๋ชจ์ ํดํน ์คํฐ๋ 1์ฃผ์ฐจ ์ค์ต ์ค์ต ํ๊ฒฝ VMware : ๊ฐ์ ๋จธ์ (.ova) - VMware ์ค์น ๋ฐ ๋คํธ์ํฌ ์ค์ Ubuntu 22.04.3 LTS Docker 20.10.24 Apache2 php 8.1 MySQL Termius - Termius ์ค์น ๋ฐ ํ๊ฒฝ์ค์ VScode ์ค์ต ์ค๋น ์ ๊ณต๋ ๊ฐ
codegear-archive.tistory.com
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์