Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋””/๋ชจ์˜ ํ•ดํ‚น - ์‹ค์Šต

[์‹ค์Šต] ๐Ÿ’ป 01์ฃผ์ฐจ

Gearvirus(junyup2) 2023. 11. 3. 01:24

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ ์‹ค์Šต


์‹ค์Šต ํ™˜๊ฒฝ


์‹ค์Šต ์ค€๋น„

  1. ์Šคํ„ฐ๋””์—์„œ ์ œ๊ณต๋œ ๊ฐ€์ƒ๋จธ์‹  SegFault_WEBdev.ova ์„ ์ด์šฉ
  2. VMware๋ฅผ ํ†ตํ•ด .ova ํŒŒ์ผ import 
  3. ์ œ๊ณต๋œ 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 ์‹คํ–‰) - ์„œ๋ฒ„ ์—ด๊ธฐ
  • 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๊ธ€์ž๋งŒ ์ž…๋ ฅํ•ด์ค˜๋„ ๋™์ž‘ํ•จ
  • ./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๊ฐ€ ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒ


์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜