웹서버 만들기

웹서버 만들기

1. GUEST OS(Linux)의 nginx에 접근하기

 - HOST OS(윈도우)의 브라우저를 이용GUEST OS(Linux)의 nginx에 접근하기

 - 만일 HOsT OS(윈도우)의 IP가 192.168.1.2 이고, GUEST OS(Linux)의 IP가 10.0.2.16이라 할때,

    - 윈도우의 브라우저는 자신의 네트워크 인터페이스를 사용(192.168.1.2)

 - 윈도우 입장에서 GUEST OS(Linux)의 IP는 실존하지 않음 (윈도우 입장에는 Virtual Box라는 프로그램만 보임)

 - 따라서 윈도우로 GUEST OS에 네트워크 접근하려면 Virtual Box에게 신호를 보내야 함

 - Virtual Box는 HOST OS(윈도우)에 설치 되어 있음

 - 결국 자기 자신에게 네트워크 신호를 보내야 함

 - 특정 포트를 Virtual Box로 보내 Virtual Box가 자신의 가상머신으로 보내게 해야 함

 - 이를 위해 Virtual Box의 가상머신 설정에서 특정 포트(여기선 8088)에 대한 포트포워딩 설정을 하는 것

 

 2. 크롬 브라우저 이용하기

 - 크롬 브라우저를 켜고 주소창에 127.0.0.1:8088 입력

 - HOST OS(윈도우)에 8088포트로 네트워크가 들어오면 가상머신으로 돌림

 - 가상머신은 포트포워딩에 설정된 대로 127.0.0.1:8088을 10.0.2.16:80으로 연결

 

 - 만일 그래도 안되면 리눅스의 방화벽에 막혀있을 확률이 높음

    - systemctl status firewalld 로 방화벽 상태를 확인하고 만일 active(running) 상태이면,

    → sudo systemctl stop firewalld로 서비스 종료

 - 브라우저에 127.0.0.1:8088에 치고 들어갔을 때 nginx 페이지가 뜨면 성공

 

    ※ 실패했을 때, 따져봐야 하는 것

        - 내부적 요인

            - 랜카드 on / off 유무

                - sudo ifup enp0s3

            - network 서비스의 실행 상태

                - sudo systemctl status network

            - 포트포워딩 설정

                - 가상 머신의 포트포워딩 설정 확인

            - 방화벽 활성 여부

                - sudo systemctl status firewalld

        - 외부적 요인

            - 외부 네트워크의 결함 상태

            - 잘못된 접속 정보 (IP, Port, Protocol)

 

2. wget

 웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램 (리눅스용 웹브라우저)

 - wget을 이용해 index.html 받아보기

 - sudo yum install wget을 이용해 wget 설치

 - 설치 완료 후, wget 10.0.2.16을 입력하면 자동으로 10.0.2.16의 80포트 http요청을 보냄

    - 그러면 index.html이 생성되었음 (nginx index.html이 나타남)

    - 실제로 ls를 통해 확인 해보면 index.html 파일이 생성된 것을 확인할 수 있음

    - 또한, cat index.html을 입력하면, nginxindex.html 내용을 확인할 수 있음

 

3. nginx가 바라보는 root 디렉터리 찾기

 - locate를 이용해 nginx가 관리하는 index,html가 어디에 있는지 확인

    - locate index,html | grep nginx

    - 만약 검색 결과에 안나오면 sudo updatedb 입력하여 업데이트

 - /usr/share/nginx/html/ 가 root 디렉터리

 

4. index.html을 수정해서 실제로 타겟이 맞는지 확인

 - 그 전에 cd /usr/share/nginx/html/ 입력하여 이동 후, cp index.html를 입력하여 복사 (backup 파일)

 - index.html 파일의 내용을 수정하고 브라우저로 수정된 내용이 나오 는지 확인

    - sudo vim /usr/share/nginx/html/index.html

    - 파일 내용을 기존의 내용 다 지우고 hello로 수정

    - 브라우저를 새로고침하여 hello가 뜨는지 확인 (http://127.0.0.1:8088)

 - 내가 원하는 파일을 생성하고 접속할 수 있음

    - sudo vim hihi.html를 입력한 후, 내용에 hihi를 입력하고 저장

    - 브라우저에 http://127.0.0.1:8088/hihi.html을 입력하면 hihi가 나타남

 

5. nginx 설정정보를 바꿔 내가 root 디렉터리를 내가 원하는 디렉터리로 바꾸기

 - nginx 설정 파일 찾기

    - 방법1. 파일명을 유추해서 찾기 (아래 명령어 사용)

        - locate nginx | grep conf

    - 방법2. 구글링 및 공식 문서

 - /etc/nginx/nginx.conf 인 것을 확인

    - /etc/nginx/nginx.conf는 메인 설정 파일이며, 내부에서 서브 설정 파일을 include하고 있음

    - /etc/nginx/conf.d/default.conf가 서브 설정 파일이며 여기에 상세 설정을 할 수 있음

 - 여기서는 default.conf에 직접 작성하지 않고 또 다른 서브 설정 파일 vhost.conf를 새로 생성하여 진행

 - 아래와 같이 입력

    - sudo vim /etc/nginx/conf.d/vhost.conf

server {
        listen 8081;
        server_name project1;

        location / {
                root /my_projects/project1/public;
                index index.html;
        }
}

server {
        listen 8082;
        server_name project2;

        location / {
                root /my_projects/project2/public;
                index index.html;
        }
}

 

 

 - sudo mkdir /my_project/project1/public /my_project/project2/public 으로 파일 설정

 - 각 public 파일에 index.html 파일을 생성하고 내용 입력

    - project1 index.htmlhello project1!! 입력

    - project2index.htmlhello project2!! 입력

 

6. selinux 비활성화 하기

 - selinux는 리눅스에 기본적으로 설정되어 있는 보안 강화 정책

 - 여기서는 비활성화 하여 진행

 - sudo vim /etc/selinux/config를 입력

    - 파일을 아래와 같이 수정

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

 - 작성이 완료되면, reboot를 입력하여 다시 시작한 뒤, sudo systemctl restart nginx로 재시작

 - 포트포워딩에서 다음과 같이 입력후, 브라우저에서 확인 (127.0.0.1:8081)

'Back-End Study > Linux' 카테고리의 다른 글

DB 서버 만들기  (0) 2022.09.05
Filezilla (파일 서버 만들기)  (0) 2022.09.05
클라이언트와 서버  (0) 2022.09.01
네트워크 상태 확인  (0) 2022.09.01
프로세스  (0) 2022.08.31