[WEB] 웹 서버 실습

웹서버 실습

목차


1. VMWare 환경 설정

ifconfig

결과로 나오는 docker0, ens33, lo가 무엇을 의미하는 지 궁금했다.

  1. docker0:
    • 가상환경 도커 내부와 로컬 호스트, 직접적인? 물리적인 컴퓨터의 이더넷 네트워크 인터페이스와 직접적으로 연결되는 장치
    • 호스트의 eth0 네트워크 인터페이스(NI)와 직접적으로 연결되는 네트워크 인터페이스(NI)
    • 도커를 설치하면 도커 내부 로직에 의해 자동으로 ip를 할당받게 되는데, 이는 172.17.x.x로 시작하며 netmask는 255.255.0.0으로 설정됨
    • docker0 인터페이스는 호스트의 eth0 인터페이스와 컨테이너의 eth0 인터페이스 사이의 중재자 역할을 하는 가상의 브릿지이며, 컨테이너가 생성되면 컨테이너 내부에 할당되는 eth0 인터페이스와 호스트에 할당되는 veth 인터페이스가 연결되고 docker0에 veth 인터페이스가 바인딩됩니다
    • veth 인터페이스: 리눅스의 버추얼 이더넷 인터페이스를 의미합니다. veth는 쌍으로 만들어지며 네트워크 네임스페이스들을 터널로서 연결하거나, 물리 디바이스와 다른 네트워크 네임스페이스의 장비를 연결하는 용도로 사용할 수 있습니다.
  • 바인딩(Binding): 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 성격을 확정하는 것이다. 즉, 변수에 어떤 값을 할당하는 그 과정을 바인딩이라고 하면 될 듯 하다.
  1. ens33: 제 PC에 설치된 NIC(Network Interface Controller)였습니다.
    • NIC(Network Interface Controller/Card)란? 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치이다.
    • 여기서 인터페이스란 서로 다른 장치가 접촉하는 부분이라고 한다.
  2. lo: 시스템이 자기 자신과의 통신을 하기 위한 가상 이더넷장치
    • lo = loop back을 의미. 자기 자신에게 보내는 데이터를 처리하기 위한 가상 인터페이스 장치명

VMWare Newtork 설정을 nat -> bridge로 바꿔줬다.

2. SSH 프로토콜 환경 설정

2.1. SFTP

SFTP(SSH File Transfer Protocol): 파일을 다운로드하거나 인터넷에 업로드할 때 일반적으로 사용된다.
SFTP를 사용하면 암호화를 통해 데이터를 안전하게 전송할 수 있고, 일반 텍스트 파일은 전송되지 않는다.
-> 가상머신에 파일 넣을 때 사용할 수 있다
VSCode STFP 플러그인 있다고 하니 VSC 이용하시는 분들은 참고하시면 좋을 듯 합니다.

2.2. termius

termius 접속하면 볼 수 있는 화면이다
termius 화면 host를 만들어서 host 만들 때 IP 주소 넣고, User name이랑 PW 입력하면 접속할 수 있다.
VM을 새롭게 시작할 때마다 IP 주소가 바뀌더라.

2.3. v푸티(PuTTY)

SSH 프로토콜은 웹호스팅을 이용하거나, 리눅스 서버에 접속하기 위해 사용하는 원격접속 툴이다. 리눅스나 유닉스 계열의 서버에 원격으로 접속할 수 있는 클라이언트 프로그램

3. 정적 페이지(Static)

sudo python -m http.server 80 = 80 포트로 웹서버를 실행한다
결과 -> command not found
python 설치가 안 돼있나? 확인을 위해 python -v -> python3 쓰란다

  • python과 python3의 차이점은 뭣이더냐
    python2 vs python3

sudo python3 -m http.server 80
sudo python3 -m http.server 80

ctrl + z 눌러서 나왔는데 프로세스가 제대로 안 죽은 모양이다
ctrl + z는 일시정지였던 것 같다
OSError: Errno 98 Address already in use
OSError: Errno 98 Address already in use

netstat -lntp로 봤는데 PID가 안 나오대?
netstat -lntp

sudo lsof -i :80 하니까 PID가 나와서
sudo lsof -i :80

-> 명령어 잘못 쳤다기 보다는 권한 안 줘서 안 나왔던 것 같다.

kill -9로 죽였는데 안 죽대?
kill -9 권한이 없다고 하는 거 뿐이니까 sudo kill -9로 확인사살함

4. 동적 페이지(Dynamic)

  • WAS: Web + Application + Server 인터넷 상에서 http 프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 동적 서버 컨텐츠를 수행하는 것으로 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행된다.

sudo docker ps -a 혹시 이미 도커가 돌아가고 있는 지 확인하고
sudo docker rm -f [pid] 돌아가고 있다면 종료시키고 ./dockerCMD & 도커 실행 (&: background 실행)
The container name ~ is already in use 에러가 발생했을 때
The container name ~ is already in use Root file = webapp이었다.

<html>
    <h1>Score</h1>
    <h2>Name: <?php echo $_GET['name']; ?></h2>
</html>

score.php

url: http://192.168.219.139:1018/score.php?name=hello

score.php

웹서버에서는 백엔드의 코드들이 아닌 코드의 결과물만 전달해준다

  • 파라미터: 사용자가 웹서버에게 전달하는 데이터
    파라미터 입력 받는 메소드 2가지: get / post
get post
리소스 전달 방식 쿼리스트링
e.g. http://192.168.219.139:1018/score.php?*name=hello*
http body
e.g. http://192.168.219.139:1018/score.php
http 응답 코드 200(ok) 201(created)
캐시 O X
브라우저 기록 O X
북마크 추가 O X
길이 제한 O
브라우저의 정책에 따라 URI 길이 제한이 다름.
X

back-end: 서버 측 코드 ex) php, asp, jsp…
front-end: 클라이언트 측 코드, 브라우저가 실행 코드 ex) html, css, js…

<form>
    <input type = "text" name = "id"/>
</form>

<?php
    echo $_['id'];
?>

name.php name.php name.php

<form method = "GET" action = "login_proc.php">
    <input type = "text" name = "id" placeholder = "User ID"/>
    <input type = "password" name = "pw" placeholder = "User Password"/>
    <input type = "submit" value = "login"/>
</form>

login.php

&: html에서는 파라미터 구분자

submit이 뭔데요 -> 직접 폼을 서버에 전송할 수 있다고 하네요

<?php
    echo $_GET['id'];
    echo $_GET['pw'];
?>

Web Service = Web Server(Static Resource) + WAS(Dinamic Resource) + DB

Skelton code란?

문자 그대로 뼈대, 즉 하나의 프로그램이 동작하는 전체 과정을 한눈에 알아볼 수 있도록 그 구조를 나타낸 틀이다.

의사 코드(Pseudo code)

프로그래밍 언어의 형식을 빌려 우리말(자연어)로 표현한 코드다. 말 그대로 실제 코드를 흉내낸 가짜 코드다.


참고 사이트


  • 번외)
    후… 우분투 사랑해 ^^7 -> 리눅스 다시 한 번 보는 걸로

Comments

Newest Posts