๋ชจ์ ํดํน ์คํฐ๋ 1์ฃผ์ฐจ ์ค์ต
์ค์ต ํ๊ฒฝ
- VMware : ๊ฐ์ ๋จธ์ (.ova) - VMware ์ค์น ๋ฐ ๋คํธ์ํฌ ์ค์
- Ubuntu 22.04.3 LTS
- Docker 20.10.24
- Apache2
- php 8.1
- MySQL
- Termius - Termius ์ค์น ๋ฐ ํ๊ฒฝ์ค์
- VScode - VScode Plugin (sftp) ์ค์น ๋ฐ ์ค์
์ค์ต ์ค๋น
- ์คํฐ๋์์ ์ ๊ณต๋ ๊ฐ์๋จธ์ SegFault_WEBdev.ova ์ ์ด์ฉ
- VMware๋ฅผ ํตํด .ova ํ์ผ import
- ์ ๊ณต๋ id / pw ์ด์ฉํ์ฌ ๋ก๊ทธ์ธ
VMware
- ifconfig ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ๋ด ip์ฃผ์ ํ์ธ
- ens33 ์ด์ฉ - Host ์ถ๊ฐ
Termius
- ํฐ๋ฏธ์ฐ์ค(Termius) : VMware ๋ณด๋ค ๋ณด๊ธฐ ํธํ๊ธฐ ์ํด ์ฌ์ฉ
- ํธํฐPuTTY vs ํฐ๋ฏธ์ฐ์ค(Termius)
- ์ค๋ฌด์์๋ PuTTY๊ฐ ๋ ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ
- ํฐ๋ฏธ์ฐ์ค๋ ๋คํธ์ํฌ ๊ด๋ฆฌ์์ ๋ง์ด ์ด์ฉ
- SFTP (ํ์ผ ์ ์ก ํ๋กํ ์ฝ) ๊ฐ๋ฅ
VS Code
- VScode๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ
- sftp ํ๋ฌ๊ทธ์ธ ์ค์น ํ ์ด์ฉ ๊ฐ๋ฅ
์ ์ ์ปจํ ์ธ ์์ฒญ ์ค์ต
- ์น ์๋ฒ๋ฅผ ์ด์ฉํ์ฌ ์ธํฐ๋ท ๋ง์ ํ์ผ ๊ณต์
- sudo python3 -m http.server 80 (. py ์ด์ฉ)
- (80๋ฒ port๋ก http ์คํ) - ์๋ฒ ์ด๊ธฐ
- sudo python3 -m http.server 80 (. py ์ด์ฉ)
- URL : [Protocol]://[Domain or IP Address]:[Port]/[File/Path]
- url์ ํตํด .txt , .jpeg ์์ฒญ
- http://๋ณธ์ธip์ฃผ์:80/ํ์ผ๋ช
ls ~
test_dir test.txt picture.jpeg
ls ~/test_dir
test.txt
(ํ์ผ์ ์์น๊ฐ ์์ ๊ฐ๋ค๋ฉด)
[Web root] ๊ฐ ~ ์ธ ๊ฒฝ์ฐ
- http://192.168.xxx.xxx:80/test_dir/test.txt
- http://192.168.xxx.xxx:80/test.txt
- http://192.168.xxx.xxx:80/picture.jpeg
[Web root] ๊ฐ tesr_dir ์ธ ๊ฒฝ์ฐ
- http://192.168.xxx.xxx:80/test.txt
http://192.168.xxx.xxx:80/ ../picture.jpeg- (์น ๋ฃจํธ๊ฐ ~์ธ ๊ฒฝ์ฐ์ ๋ถ๋ฌ์๋ ๊ฒฝ์ฐ cache ๊ฐ ๋จ์์ ์๊ฐ์ ์ผ๋ก ๋์จ ๊ฒ ์ฒ๋ผ ๋ณด์ผ ์ ์์)
- But, ๋ถ๊ฐ๋ฅ : root ๋ฐ์ผ๋ก๋ ๋๊ฐ ์ ์๋ค.
- ์น์๋ฒ๊ฐ ์คํ ๋ ์์น๊ฐ ๊ธฐ์ค (์น ๋ฃจํธ ๊ฒฝ๋ก)
- ์น ๋ฃจํธ ๊ฒฝ๋ก ๋ฐ์ ํ์ผ์ ์์ฒญํ ์ ์๋ค.
์น ์๋ฒ๋ ์๋ฌด๋ฐ ๋๊ฐ ์์ด ์ฌ๋๋ค์ด ํ์ผ์ ๊ณต์ ํ ์ ์์
BUT, ๋คํธ์ํฌ๊ฐ ์์ด์ผํจ - NAT Network - NAT ์ ๋ํ ์ดํด
๋์ ํ์ด์ง ์ค์ต
๊ฐ์๋จธ์ ์ ์ค์น๋์ด์๋ Docker์ด์ฉ
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker rm -f [Container ID]
./dockerCMD &
- sudo docker ps -a : ํ์ฌ ์คํ์ค์ธ ๋์ปค๊ฐ ์๋์ง ํ์ธํ๋ ๋ช
๋ น์ด
- docker ps : ์ปจํ ์ด๋ ํ์ธ ๋ช ๋ น์ด(ํ์ฌ ๊ฐ๋์ค์ธ ์ปจํ ์ด๋ ์ ๋ณด ์ถ๋ ฅ)
- -a : ์์ docker ps ๋ง ์ฌ์ฉํ๋ฉด ๊ฐ๋์ด ์ค์ง๋ ์ปจํ
์ด๋๋ ์ถ๋ ฅํ์ง ์์
- ๋ชจ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ์ ์ํด ๋ถ์ฌ์ผ ํจ
- sudo docker rm -f : ํ์ฌ ์คํ์ค์ธ ๋์ปค๋ฅผ ๋๊ธฐ ์ํ ๋ช
๋ น์ด
- sudo docker rm : ์ปจํ
์ด๋ ์ญ์ , ์คํ์ค์งํ ์ปจํ
์ด๋๋ฅผ ๋ชฉ๋ก์์ ์ญ์
- ์ญ์ ํ์ง ์๊ณ ๊ตฌ๋๋ง ์ ์งํ๋ค๋ฉด ์คํ ๋ฆฌ์ง ์ด๋๊ฐ์ ๋จ์์์ด ์ฉ๋์ ์ฐจ์ง
- -f : ์ต์ ์ ํตํด ๊ฐ๋๋๊ณ ์๋ ์ปจํ ์ด๋๋ฅผ ํ๋ฒ์ ์ ์ง ๋ฐ ์ญ์ ๊ฐ๋ฅ
- ๋ค์ ์ปจํ ์ด๋ ID( ์ํ๋ฒณ๊ณผ ์ซ์ ์กฐํฉ)๋ฅผ ๋ถ์ฌ ์ค์ผํจ
- ์ ๋ถ ๋ค ์ ๋ ฅํ ํ์ ์์ด ๊ฐ์ฅ ์ 2๊ธ์๋ง ์ ๋ ฅํด์ค๋ ๋์ํจ
- sudo docker rm : ์ปจํ
์ด๋ ์ญ์ , ์คํ์ค์งํ ์ปจํ
์ด๋๋ฅผ ๋ชฉ๋ก์์ ์ญ์
- ./dockerCMD & : ๋์ปค๋ฅผ ์คํํ๊ธฐ ์ํ ๋ช
๋ น์ด
- dockerCMD : ๋์ปค ๋๋ ํ ๋ฆฌ ์ด๋ฆ
- ์น ๋ฃจํธ ๊ฒฝ๋ก ์ง์
- docker ์์น : ~/webDev
- ์น ๋ฃจํธ : ~/webDev/webApp
name.php ์ ์ ํํ
<!DOCTYPE html>
<html>
<h1>Name</h1>
<h2>LJY</h2>
</html>
name.php ๋์ ํํ
<!DOCTYPE html>
<html>
<h1>Name</h1>
<h2><?php echo $_GET['name']; ?></h2>
</html>
http://192.168.xxx.xxx:80/name.php?name=LJY
- <?php ?>์ฌ์ด์ echo $_GET['name']; : ์๋ฒ์ธก ์คํฌ๋ฆฝํธ, ๋ฒก์๋ ์ฝ๋
- echo ๋ ์ถ๋ ฅ (print ์ ๋์ผ)
- <?php ?> ๊ฐ ์๋ ๊ฒฝ์ฐ
- ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅ
- WAS๊ฐ ๋ค ์คํํด์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ browser์์๋ ์ ๋ ฅ๋์ด ์๋ ์ํ๋ก ์ ๋ฌ๋์ด ์์ด ์ค์ ๋ก๋ ๋ณผ ์ ์์
- ์ด๊ฒ์ด WAS์ ์ญํ
- ๋ค ์ฒ๋ฆฌํ, ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ , ์น ์๋ฒ์ ์ ๋ฌ
PHP ํ๋ผ๋ฏธํฐ ์ ๋ฌ ๋ฐฉ์(method)
GET / POST
- form ํ๊ทธ ์ฌ์ฉ: method ๋ฐฉ์ ์ง์
- input ํ๊ทธ ์ฌ์ฉ : ํ๋ผ๋ฏธํฐ ์ด๋ฆ ์ง์
GET ๋ฐฉ์
<form method="GET">
<input type="text" name="id"/>
</form>
<?php
echo $_GET['id'];
?>
- $_GET['name']
- $_GET : get method๋ก ์ ๋ฌ๋ฐ์ ํ๋ผ๋ฏธํฐ
- (์น ์๋ฒ์ ์ ๋ ฅ๋ฐ์ ํ๋ผ๋ฏธํฐ)
- ํ๋ผ๋ฏธํฐ : ์ฌ์ฉ์๊ฐ ์น์๋ฒ์๊ฒ ์ ๋ฌํ๋ ๋ฐ์ดํฐ
POST ๋ฐฉ์
<form method="POST">
<input type="text" name="id"/>
</form>
<?php
echo $_POST['id'];
?>
- url์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ์ฌ์ ๋ณด๋ด๋ ์๋ณด๋ด๋์ ์ฐจ์ด
- GET : url์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ ๋ณด๋
- POST : ํ๋ผ๋ฏธํฐ๋ฅผ request body ๋ถ๋ถ์ ๋ฃ์ด์ ๋ณด๋ (url์ ๋ณด์ฌ์ฃผ์ง ์์)
์์ ์ฝ๋๋ ์๊ธฐ ์์ ์๊ฒ ์ ๋ฌํ ๊ฒ - (๋ด๋ถ์์ ๋ด๋ถ๋ก)
<form method="GET" action="">
- action = "" ์ฒ๋ผ ๋น์๋๋ฉด ์๊ธฐ์์ ์๊ฒ ์ ๋ฌํ๋ผ๋๊ฒ (์๋ตํ๋ฉด ๊ฐ์์๋ฏธ)
- ์๊ธฐ ์์ ์๊ฒ ๋ค์ ์ ๋ฌํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์์
login.php
<form method="GET" action="next.php">
<input type="text" name="id" placeholder="User ID"/>
<input type="password" name="pass" placeholder="User Password"/>
<input type="submit" value="login"/>
</form>
- action="next.php" : action์ ๋ค๋ฅธ ํ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํจ - (๋ด๋ถ์์ ์ธ๋ถ๋ก)
- (action์์ ์ง์ ๋์๋ ํ์ด์ง๋ก ์ ๋ณด๋ฅผ ๋ณด๋) - ํผ ํธ๋ค๋ฌ
- placeholder : ๋น๊ณต๊ฐ์ ์ ๋ ฅ๋์ด ์๋ ์ ๋ณด(์ ๋ ฅ ํํธ)
- input type="submit" : ์๋ฒ์ ํผ ํธ๋ค๋ฌ(form handler)๋ก ํผ ๋ฐ์ดํฐ(form data)๋ฅผ ์ ์กํ๋์ ์ถ ๋ฒํผ(submit button)์ ์ ์
- ํผ ํธ๋ค๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํ๊ณ ์๋ ์๋ฒ ํ์ด์ง์ด๋ฉฐ, ์ด๋ฌํ ํผํธ๋ค๋ฌ์ ์ฃผ์๋ <form> ์์์ action ์์ฑ์ ๋ช ์
- POST๋ ๋์ผ
ํ๊ธฐ
php์ ๋ํ ์ถ๊ฐ์ ์ธ ์ฐ์ต๊ณผ, ๊ณผ์ ๋ฅผ ์ํ css/bootstrap์ ๋ํ ์ดํด ๊ฐ ํ์.
php ์์ฑ์ ์คํ ํ๋๋ก 500 error๊ฐ ๋น๋ฒํ ๋ฐ์
- ์ด๋์์ ์ ๋ชป ๋์๋์ง ํ์ธํ๊ธฐ ํ๋ฌ
- ํธ๋ฌ๋ธ ์ํ ์ ์ค์์ฑ !! - PHP - ํธ๋ฌ๋ธ ์ํ (Trouble Shooting) - Debug
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์