본문 바로가기

Linux

8. 웹 서버

728x90

웹 서버의 기본 개념

HTTP 서버

  • 클라이언트와 서버 간 요청/응답(request/response) 프로토콜
  • 주로 HTML 문서를 주고 받는 데 쓰임
  • TCP와 UDP를 사용하고 80 포트를 사용
  • Ex. 클라이언트인 웹 브라우저가 HTTP를 통하여 서버에 웹페이지나 그림을 요청
    • 서버는 필요한 정보를 해당 사용자에게 전달
      • 클라이언트 웹 브라우저에 출력

웹 서버

  • 웹 서버는 모두 HTTP 데몬을 가지고 있음. 이 프로그램은 HTTP요청을 기다리고 있다가 요청이 들어오면 그 것을 처리하도록 설계되어 있음
  • HTTP의 입장에서 웹 브라우저는 서버의 요청을 전달하는 하나의 클라이언트
  • 사용자가 URL을 입력하거나, 하이퍼 텍스트 링크를 클릭하여 파일을 요구하면, 브라우저는 HTTP 요구를 URL에 적혀 있는 IP에 전달
  • 지정된 서버 상의 HTTP 데몬은 그 요구를 받아서, 필요한 작업을 처리하며 클라이언트가 요청한 파일을 보내줌
  • 리눅스의 대표적인 웹 서버는 아파치
  • 웹 서버는 독자적으로 실행하지 않고 데이터베이스와 PHP가 묶여서 같이 사용

웹 서버 설치와 사용

  • 아파치 설치 및 접속
  • CentOS 8에 아파치 웹 서버가 설치 확인
  • dnf 명령으로 아파치를 설치 (패키지 이름: httpd)
$ dnf list httpd*
$ sudo dnf install httpd

아파치 활성화하기

  • systemctl 명령으로 아파치를 활성화
$ systemctl status httpd
$ sudo systemctl start httpd

웹 서버 접속하기

  • 방화벽에서 http 서비스를 등록
    • 보안 그룹에 80 port 등록
  • Windows에서 웹 브라우저를 띄우고 리눅스의 웹 서버에 접속
    • /var/www/html에 기본 파일이 있어야 함.
    • 기본 html 파일이 있으면 그 파일이 출력
    $ cd /etc/httpd/conf
    $ ls
    $ more httpd.conf
    $ sudo -i
    # cd /var/www/html
    # vi index.html
    
  • 웹 서버가 정상적으로 동작하는지 확인하기 위해 HTML로 웹 페이지 제작
# index.html
<!DOCTYPE html>
<html>
<head>
	<title>HTML5 Basic</title>
</head>
<body>
	<h1>Hello World..!</h1>
</body>
</html>
  • 웹 서버가 정상적으로 작동

일반 사용자 계정에 웹 설정

  • vi로 /etc/httpd/conf.d/userdir.conf 파일을 열어 수정
  • ‘UserDir disabled’
    • : 사용자 디렉터리에서 웹 페이지 구축을 허용할 것인지 확인하는 부분, #으로 주석 처리하면 허용
  • ‘UserDir public_html’
    • : 사용자 디렉터리에서 public_html을 웹페이지의 기본 디렉터리로 사용
# cd /etc/httpd/
# ls
conf  conf.d  conf.moudles.d  logs  modules  run  state
# cd conf.d
# ls
README  autoindex.conf  userdir.conf  welcome.conf
# vi userdir.conf
  • httpd의 설정 파일이 수정되었으므로 httpd.service를 다시 동작
  • 사용자의 홈 디렉터리에서 다음 작업 수행
    • 다른 터미널에서 ftp_user 계정으로 로그인하여 홈 디렉터리에 public_html 디렉터리 작성
    • 디렉터리의 접근 권한을 조정
    $ sudo systemctl restart httpd
    $ su ftp_user
    $ cd ~
    $ mkdir public_html
    $ chmod 701 .
    $ chmod 701 public_html/
    
    
  • 일반 사용자 계정에서 웹 페이지 작성
    • public_html 디렉터리 아래에서 index.html 파일을 생성
    <!DOCTYPE html>
    <html>
    <head>
    	<title>CSS3 Basic</title>
    	<style>
    		h1 {
    			color: white;
    			background: black;
    			}
    	</style>
    </head>
    <body>
    	<h1>Hello HTML5..!</h1>
    </body>
    </html>
    
    • 웹 브라우저에서 다음과 같이 입력하여 html 문서를 확인, IP 주소는 자기 리눅스 시스템의 IP 주소를 입력
    • 만약 브라우저에서 403 Forbidden 오류가 발생 시 접근 권한을 잘못 조정했거나 SELinux 보안 문제
    • 권한을 다시 확인한 뒤 SELinux의 보안을 해제하고 확인

APM과 게시판 설치

APM 설치하기

  • APM : 리눅스의 아파치 웹 서버와 웹 프로그래밍 언어인 PHP, 데이터베이스인 MySQL을 묶어서 부르는 말
  • 여기서 APM의 M은 MySQL이 아니라 MariaDB를 의미
  • dnf로 PHP를 설치하여 APM을 연동(패키지 파일: php, php-gd, php-mysqlnd)
$ sudo dnf install php php-gd php-mysqlnd

PHP의 동작 확인하기

  • httpd, MariaDB를 다시 동작
  • PHP의 동작을 확인하기 위해 /var/www/html에 파일 작성
# /var/www/html/phpinfo.php
<?php phpinfo(); ?>

게시판 설치하기

  • 그누보드 내려받기: 리눅스에서 웹 브라우저를 실행하여 그누보드 사이트(sir.co.kr)에 접속하여 내려받음
  • gnuboard-gnuboard5-v5..6.6-0-g2a0bf12.tar.gz
  • https://github.com/gnuboard/gnuboard5/tarball/master
  • 내려받은 파일을 /home/ftp_user/public_html로 복사
  • board 디렉터리 생성, 압축 파일을 board 디렉터리로 복사
  • tar로 묶인 압축 파일을 모두 해제
  • [ftp_user@ip-172-31-59-229 board]$ tar xzvf gnuboard-gnuboard5-v5.6.6-0-g2a0bf12.tar.gz
  • 그누보드가 사용할 데이터베이스를 구축
  • 데이터베이스 생성: gnu
  • 윈도에서 웹 브라우저로 접속하여 설정 (주소 : http://IP 주소/~ftp_user/board)
  • [그누보드5 설치하기]를 클릭하고 지시에 따라 data 디렉터리르 만들고 접속 권한을 707로 수정
$ ls
LICENSE.txt  _head.php **common.php**  g4_import.php  img  lib
plugin  tail.php  yc4_import.php
README.md  _tail.php  config.php  g4_import_run.php  index.php  mobile 
shop  tail.sub.php  yc4_import_run.php
SECURITY.md  adm  css  head.php  install  orderupgrade.php
shop.config.php  theme
_common.php  bbs  extend  head.sub.php  js  perms.sh 
$ mkdir data
$ chmod 707 data

APM과 게시판 설치 & 진행

  • 게시판 설치하기: 접근 권한을 조정한 후 라이선스에 동의
  • MariaDB에 설정한 DB 정보와 그누보드 관리자 정보를 입력
    • 보안상 문제로 MariaDB의 root 계정을 사용하지 말고 일반 사용자에게 데이터베이스 권한을 부여하여 사용
  • 그누보드 설치 완료, [새로운 그누보드5로 이동]을 클릭
  • 메인 화면에서 APM이 정상적으로 연동되는 것을 확인
  • admin 계정으로 로그인한 다음 최고관리자님 아래 [관리자]를 클릭하면 관리자메인 화면으로 전환
  • 관리자메인 화면에서 [게시판관리]-[게시판그룹관리]를 선택하여 게시판 생성
  • 게시판 관리 화면에서 오른쪽 상단의 [게시판그룹 추가]를 클릭
  • [게시판그룹 추가]를 클릭하면 게시판 그룹 생성 화면에서 그룹 ID와 그룹 제목만 입력하고 [확인]
  • 게시판그룹 생성 완료 후 [게시판 생성] 버튼을 클릭하면 게시판 생성 화면이 출력
  • TABLE 항목에 게시판 이름을 입력하고 게시판 제목을 입력
  • 게시판 권한 설정에서 게시판 관리자를 지정하고 [확인]을 클릭
  • user1 사용자의 홈 디렉터리에서 public_html 디렉터리 안의 index.html 파일을 수정

워드프레스 설치

  • 워드프레스 파일 다운로드
  • DB 생성: wpress
  • wp-config.php 설정
# wordpress Dir가 있는 폴더에서 진행
$ cd wordpress
$ ls
index.php wp-activate.php wp-comments-post.php wp-cron.php
wp-load.php wp-settings.php xmlrpc.php
license.txt wp-admin wp-config-sample.php wp-includes 
wp-login.php wp-signup.php
readme.html wp-blog-header.php wp-content wp-links-opml.php
wp-mail.php wp-trackback.php
$ cat wp-config-sample.php
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php
728x90

'Linux' 카테고리의 다른 글

VMware worktstation 설치 및 설정  (0) 2023.08.24
Hypervisor  (0) 2023.08.24