코딩하는 문과생
[리눅스] 생활코딩, 리눅스를 서버로 활용하기 본문
[인터넷, 네트워크, 서버]
$ 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으로 포워딩된다.
'개발 관련 지식 > 리눅스' 카테고리의 다른 글
[리눅스] 생활코딩, 인터넷을 이용한 사례들 (0) | 2020.01.03 |
---|---|
[리눅스] 생활코딩, 리눅스를 서버로 활용하기(2) (0) | 2020.01.02 |
[리눅스] 생활코딩, 다중 사용자 (0) | 2019.12.19 |
[리눅스] 생활코딩, 실행 (0) | 2019.12.19 |
[리눅스] 생활코딩, 디렉토리, 파일, 프로세스 (0) | 2019.12.18 |