코딩하는 문과생

[리눅스] 생활코딩, 리눅스를 서버로 활용하기 본문

개발 관련 지식/리눅스

[리눅스] 생활코딩, 리눅스를 서버로 활용하기

코딩하는 문과생 2019. 12. 20. 12:14

[인터넷, 네트워크, 서버]

$ ip addr
# inet에 해당하는 주소가 내 컴퓨터의 ip address다.
# 10.0.3.2

$ curl ipinfo.io/ip
# 내 컴퓨터 ip address
# 211.46.24.32

# 두 개의 결과가 다르다.
# ip addr: 실제 ip
# curl: 해당 서버에 접속할 때의 ip

  • 통신사와 디바이스 간 1:1로 연결하면 가격이 비싸진다. 
  • 따라서 우리는 일반적으로 라우터를 이용해 회선을 공유한다.
  • Router의 주소: 211.46.24.32

[웹서버(아파치)]

웹서버를 리눅스에 설치해보자.

- 웹서버와 웹브라우징 프로그램 설치, 그리고 요청과 응답

$ sudo apt-get update
# 목록 업데이트
$ sudo apt-get install apache2
# 웹서버 설치

$ sudo service apache2 start
$ sudo service apache2 stop
$ sudo service apache2 start

$ sudo htop
# F4, apache 검색
# 접속이 많아지면 분산해서 처리한다.

# 쉘 환경에서 웹브라우징하는 프로그램을 이용하자
$ sudo apt-get install elinks
$ elinks
# url물어보는 화면
# google.com -> english로 변환
# internet입력 후 엔터
# q를 이용해 빠져나갈 수 있다.

#----------------------------------------------
# 우리는 컴퓨터가 여러대가 아니기에 
# 하나의 컴퓨터에 클라이언트와 서버가 동시에 존재한다.
# 방법 1) $ip addr(10.0.2.15)을 이용한다.
$ ip addr
# 10.0.2.15(내 ip주소)
$ elinks http://10.0.2.15/
# ubuntu apache2 설명부분 출력

# 방법 2) localhost:8000(127.0.0.1)을 이용한다.
$ elinks 127.0.0.1
$ elinks http://localhost

- 요청이 들어왔을 때, 어떤 디렉토리를 먼저 찾을까?

# 유닉스 계열의 시스템 관련 설정 : etc
$ cd /etc/apache2
# apache 설정파일
# 사용자의 접속이 들어왔을 때, 해당 파일들을 참고한다.

$ nano apache2.conf
$ cd sites-enabled/
$ ls -l

$ nano 000-default.conf
# DocumentRoot /var/www/html/
# document root: 문서를 찾는 최상위 디렉토리

$ cd /var/www/html
$ ls -al
# index.html

$ sudo mv index.html index.html.bak
$ elinks http://127.0.0.1/index.html
# Not found

$ sudo nano index.html
# <html>
#	<body>Hello web server!</body>
# </html>

$ elinks http://127.0.0.1/index.html
# Hello web server!

-log 관련

# 유닉스 계열의 시스템 관련 설정 : etc
$ cd /etc/apache2
# apache 설정파일
# 사용자의 접속이 들어왔을 때, 해당 파일들을 참고한다.

$ nano apache2.conf
$ cd sites-enabled/
$ ls -l

$ nano 000-default.conf
# ${APACHE_LOG_DIR}/error.log
# ${APACHE_LOG_DIR}/access.log
# 에러와 접근 발생시 여기에 기록하겠다.

$ cd /var/log/apache2/
$ ls -al

$ tail -f /var/log/apache2/access.log

# ***새로운 창***
$ elinks http://127.0.0.1/index.html
$ curl http://127.0.0.1/index.html
# 200
$ curl http://127.0.0.1/index.html
$ curl http://127.0.0.1/index.html
$ curl http://127.0.0.1/index.txt
# 404에러

 

[원격제어: SSH]

원격으로 쉘을 제어할 수 있는 방법

인터넷을 통해 다루는 컴퓨터들을 위해 필요하다.

# ***서버를 설치한 컴퓨터***
$ sudo apt-get install openssh-server openssh-client
# 우리는 하나의 컴퓨터로 작업할 것이다.

$ sudo service ssh start
$ sudo ps aux | grep ssh

$ id addr
# 192.168.0.65

# ***클라이언트를 설치한 컴퓨터(새로운 컴퓨터, 그러나 같은 네트워크)***
$ ssh sijune@192.168.0.65
# yes 선택

 

[포트: port]

  • naver.com
  • naver.com:80
  • naver.com:3245 -> 에러
# ***클라이언트를 설치한 컴퓨터(새로운 컴퓨터, 그러나 같은 네트워크)***
$ ssh -p 22 sijune@192.168.0.65
# -p:포트

$ ssh -p 2222 sijune@192.168.0.65
# refused

# ***포트번호 수정***
$ sudo nano /etc/ssh/sshd_config
# 포트번호 수정 가능
$ sudo service ssh restart
# 이후 재실행
  • 80: web
  • 22: ssh

 

-포트 포워딩

외부에서 접근하기 위해서는 포트포워딩이 필요!
주황색 부분을 다뤄볼 예정

포트포워딩을 위해서는 공유기(Router)에 있는 서버에 접근해야 한다.

공유기(Router)가 가지고 있는 ip를 "default gateway"라 한다.

$ ip addr
# 192.168.0.65

$ ifconfig
# 192.168.0.65

$ ip route
# 192.168.0.1 (default이다.)

# 브라우저에 입력
# 라우터 관리자 화면 출력
# 개인 공유기가 있어야 가능하다.

# 관리도구->고급설정->NAT라우터 관리->포트포워드 설정
# 192.168.0.65 입력, 규칙이름: linuxlove, 프로토콜은 그대로, 
# 외부 포트(외부에서 들어올때 사용할 포트번호): 9000
# 내부포트(사설네트워크의 포트번호): 80

# 공개 ip찾기
$ curl http://ipinfo.io/ip
# 211.46.24.32

# 이제 211.26.24.32:9000->192.168.0.65:80으로 포워딩된다.