선행학습: (1) DNS server와 웹서버 등 이해하기  http://sourceflower.tistory.com/78


웹서버

  - 웹 브라우저가 firefox, ie, safari, chrome, opera 등이 존재하는 것처럼 마찬가지로 서버 컴퓨터에 웹서버를 설치해서 사용하면된다. 

  - 이러한 서버로는 apache, nginx, IIS 등이 존재한다.


■ apache 웹서버 설치 (우분투)

 # apt-get update;

 # apt-get install apache2


웹서버 동작 (우분투)

 # service apache2 start       // 웹서버 시작

 # service apache2 stop       // 웹서버 죽일때

 # service apache2 restart    // 웹서버 재시작


여러개의 아파치 웹서버 실행 (분산)

 웹서버의 경우 동시 접속 등이 많은 특정한 프로그램이다. 따라서 많은 접속이 들어왔을 때 그 접속을 분산해서 처리하기 위하여 

 여러개의 아파치 웹서버가 실행된다. 

 htop, top 등 사용하여 process를 확인하면 여러개의 apache2 서버가 올라와있는 것을 볼 수 있다.


컴퓨터 한대에서 클라이언트, 서버 수행 시 동일한 컴퓨터에있는 웹서버 테스트 

# apt-get install elinks       

// ELinks (이링크스)는 유닉스 기반 운영 체제를 위한 텍스트 기반 콘솔 웹 브라우저로. 링크 웹 브라우저를 향상 시키기 위해 만든 브라우저이다. 

# elinks http://127.0.0.1   

# elinks http://localhost 

로 접속하여 서버가 정상적으로 설치되었는지, 작동되는지를 테스트 할 수 있다.



■ client vs server 이해하기..

1. client  <-->  server (웹서버, 게임서버, 메일서버)

2. client  <-->  DNS server (웹서버에 요청을 하기 전에 순간적으로 들렸다 온다.  ip return 받아옴) 


■ 포트

0 ~ 65000 번 포트까지 사용가능 

well-known port : 0~1024번

customizing port 번호 지정 시 1024 바깥쪽에 위치한 포트를 사용하자.


■ 리눅스 서버의 IP 알아내기

1. # ip addr (show)              // 사설 IP (private ip) 

2. # ifconfig                       // 사설 IP (private ip) 

3. # curl http://ipinfo.ip/ip   // 공공 IP (public ip)

※ 대부분의 공유기 (여러 제조사 있음) 

: 일반적으로 공유기 관리자 화면으로 들어가려면, default gateway (192.168.0.1)로 접근하면 된다. 


■ ip 를 활용하여 서버로 사용하기 (포트포워딩)

 1.  public ip 와 private ip가 동일하지 않을 경우 포트포워딩을 활용하여 서버로 사용할 수 있다.

공유기를 통하여 public(공용) ip의 특정 포트 9000번(외부포트)으로 접속할 경우, 사설(private) ip (내부포트) 로 포트포워딩하여 서버로 활용 

   ex) (public ip) 247.214.236.12:9000  으로 접속할 경우, (private ip) 192.168.0.100 로 포워딩


2.  public ip 와 private ip가 동일한 경우에는 외부로부터 직접 접근 가능하여 곧바로 서버로 사용할 수 있다. 


■ 포트포워딩 설정 이해 (요약)

dafault gateway (192.168.0.1)로 접근 > 관리도구 > 고급설정 > 라우터 관리 > 포트포워드 설정


'인터넷, 네트웤, 서버' 카테고리의 다른 글

(3) DNS  (0) 2017.05.14
(2) ★ hosts 파일  (0) 2017.05.14

■ Linux에서 ip 주소를 알아내는 방법

1,2의 경우 동일 주소 결과값이 나올 수도 있지만 대부분의 경우 다른 ip 주소를 return 받는다. 

 

1.   $ ip addr                             // inet 쪽을 보자.

- 사설(private) ip라고 보면된다.  

2.   $ curl ipinfo.io/ip                   // 쉘에서 curl 명령어를 사용하여 http 프로토콜을 사용하여 결과를 요청 

-  ipinfo로 접속한 실제 ip의 결과값을 알려준다. 


$ curl http://www.google.com                 // 쉘상에서 google.com에 접속한 결과를 표시한다.



■ 정의

  : 리눅스에서 curl 이라는 http 메시지를 쉘상에서 요청하여 결과를 확인하는 명령어


■ 개요 

  :  curl 명령어는 http를 이용하여 경로의 데이터를 가져온다. 


■ 사용법 

  : $ curl [ 옵션 ] [ URL ]


■ POST / GET 

1. POST 메소드 사용

  $ curl -d "id=count" "http://192.168.0.100/samba/checkList.jsp"

 

2. GET 메소드 사용

  $ curl "http://192.168.0.100/samba/checkList.jsp?id=count"


■ 내용 

: 문서 or 파일을 서버에서 가져온다.

: 지원 프로토콜은 http, https, ftl, file, imap.. 등이 있다.


■ 기타 옵션 

-i 

: -i 는 결과에서 header와 body만 표시 

: -I 는 결과에서 header만 표시


-s

:  --silent 옵션을 이용하여 부가 정보 없이 조회가 가능 

$ curl -s www.google.com

$ curl --silent www.google.com


I. Linux add user to group 

■ Linux 에서 특정 사용자계정을 그룹(Group)으로 지정해주기 (두 가지 방법)

1. $ sudo usermod -a G  [ group 명 ] [ user ]

2. # usermod -a G  [ group 명 ] [ user ]


ex) sudo 명령어를 사용할 수 있도록 chpark 계정을 sudo Group으로 부여해보자.

1. $ sudo usermod -a -G sudo chpark

2. # usermod -a G sudo chpark


■ 현재 perm 이라는 디렉토리가 있는데 그 밑에 있는 모든 directory 에 대하여 access  mode를 변경하고 싶다면 ? 

> perm

> test1

> this

> that 

> test2 

> test3


perm 하위로 존재하는 모든 디렉토리의 access mode를 변경하기 위해서 옵션 값에 R을 줘야한다.

※ R : recursive(재귀의) 의 약자 


$ chmod -R o+w perm       // perm 디렉토리 하위에 존재하는 디렉토리들도 동일하게 (디렉토리)권한을 변경 

※ other : user(owner)도 아니고, group도 아닌 계정


■ 디렉토리의 권한 

r : 해당 디렉토리의 파일들을 열람 가능한지의 여부

w : 파일을 제어 할 수 있는지의 여부 (생성, 삭제, 변경)

x : 해당 디렉토리에 cd 명령어를 통해 들어갈 수 있는지의 여부



■ 8진수를 사용하여 파일에 권한부여하기 

1. 비교 ) chmod a+r flower.txt   ( a: all의 약자,  o: other 의 약자,  u: user의 약자,  g: group의 약자 )

2. 8진수 사용 

$ chmod [8진수] [8진수] [8진수] flower.txt


0: none                               ---    

1: execute only                     --x

2: write only                        -w-

3: write & execute                 -wx

4: read only                         r--

5: read & execute                 r-x

6: read & write                    rw-

7: read & write & execute      rwx

■ 실행의 개념과 권한 설정

< 실행파일 만들기 >

$ touch test87.sh

< 내용 Start >

#!/bin/bash             // #! 뒤의 /bin/bash를 구동시켜 echo 가 가능하게 한것이다.

$ echo 'hello world'  

< 내용 End > 


./ : 현재 디렉토리를 의미 

#! : bin 밑에 bash라는 shell을 사용하여 해석되어야한다를 의미 


$ ls -l 

$ ./test87.sh                  // 현재 디렉토리의 test87.sh 를 실행하자.

permission denied          // permission을 거부한다.


Q. 어떻게 해야할까?

A. 해당 파일의 소유자라고 할지라도 x : excutable 실행가능한 권한을 부여해줘야한다.

$ chmod u+x test87.sh

$ ./test87.sh                 // 현재 디렉토리의 test87.sh 를 실행하자.

hello world                  // 더 이상 permission denied 가 발생하지 않는다.



■ 디렉토리의 권한

r : 해당 디렉토리의 파일들을 열람 가능한지의 여부

w : 파일을 제어 할 수 있는지의 여부 (생성, 삭제, 변경)

x : 해당 디렉토리에 cd 명령어를 통해 들어갈 수 있는지의 여부



UNIX

 1. Permission

 2. File & Directory

 3. Read & Write & Excute


■ access mode 

r : read

w : write

x : execute


◆ touch : 파일생성 

◆ cat : 파일내용 확인

※ cat 명령어는 텍스트로 된 파일일 경우 그 내용을 정상적으로 출력하지만 바이너리 파일일 경우에는 출력은 하지만 알아볼 수 없다.

그리고 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.


ex) chPark 계정으로 접속하였다고 가정 

$ touch perm.txt                       // 파일 생성

$ echo 'hello world' > perm.txt    // 'hello world' standard output 를 perm.txt 로 redirection   

$ cat perm.text                         // perm.txt 내용 확인 (당연히 가능)

 ( ※ > 은 1> 과 같다. 1이 생략 되어있음.  2>: 은 standard error redirection 을 의미한다.  )  


ex) mgLee 계정으로 접속하였다고 가정

$ echo 'hello world' > perm.txt

permission denied                     // redirection 거절 당함


파일정보 확인 

- rw-rw-r-- 1 chPark success 0 May 6 19:23 perm.txt

      1) 맨앞 - : type ( d: directory , -: file )

2)  rw- : user(owner) 권한  read, write

3)  rw- : group 권한  read, write

      4)  r-- : other 권한   read         (other: 소유자도, 그룹도 아닌 불특정 계정의 권한을 말한다.)

5)  chPark : owner 

6)  success : Group

7)  perm.txt : file 명 


권한 변경하기 (modify access mode)

     ex1) other 에게 read 권한을 부여하고 싶다면?

perm.txt 파일 소유자로 로그인  

      $ chmod o+r perm.txt       ( a: all의 약자,  o: other 의 약자,  u: user의 약자,  g: group의 약자 )


     ex2) user 에게 read 권한을 없애고 싶다면?

perm.txt 파일 소유자로 로그인  

      $ chmod u-r perm.txt        ( + : add , - : subtract )


■ ~ (물결) 

- 현재 접속한 계정의 home directory를 알려준다. 

- root 계정의 경우 일반 사용자와 달리 최상위 디렉토리밑에 곧바로 root 디렉토리가 홈디렉토리이다.

ex 1 ) root 계정 home : /root  ( 최상위 디렉토리 밑에 root 가 홈디렉토리이다. )

ex 2) (chPark)일반 계정 home : /home/chPark   (일반사용자의 경우에는 root 디렉토리에 접근 불가하다.)


■ (unix add user) 유닉스 시스템에서 사용자를 추가하는 방법

1) # useradd -m chPark

2) # passwd chPark 


■ (unix user sudo) user에게 super user와 같은 권한을 부여하는 방법 (즉, sudo명령어를 사용할 수있게 하는 권한 부여)

# usermod -a -G sudo chPark           ( G: group 을 의미 )

 여러명이 하나의 시스템(ex. 리눅스)을 이용할 때 권한, 복잡성, 위험성 등의 문제가 있다. 


■ id , who 

1) id 입력: 내가 접속한 계정 정보를 알 수 있다. 

2) who 입력:  현재 이 시스템에 접속한 user들을 알 수 있다. 


■ super user (수퍼유저)  vs  user (일반사용자)

1) super user 

- 기본적으로 root 가 super user이다. 

- 필요에 따라서 사용자에게 super user의 권한을 부여할 수 있다. 

- super user의 경우에는 root@ubuntu : ~#  '샾' 표시로 시작한다.

2) user 

      - 일반사용자의 경우에는 sudo를사용할 수 없다. 

- 일반사용자의 경우에는 people01@ubuntu : ~$ '달러'표시로 시작한다. 


■ su 명령어 (user 변경)

- su 명령어를 사용하여 user를 변경할 수 있다.

- su [option] [username]

ex) su - root   : root계정으로 접속계정을 변경한 것. ( - 기호는 관습적으로 써주자.)

- 접속계정을 변경한 후 exit을 누를경우에는 원래의 계정으로 되돌아간다. root >> chPark

■ sudo 명령어

- super user 권한을 받은 사용자의 경우에는 sudo 명령어를 사용하여 관리자의 권한으로 특정 프로그램을 실행하거나

명령어를 사용할 수 있다.

+ Recent posts