본문 바로가기

Tip&Tech/Server

[팁] MissFlash의 리눅스 유용 단축키, 명령어 모음(19) - 웹서버(APM) 설치 및 환경설정 (2)

* 본 게시물은 MissFlash가 "CentOS 리눅스 구축관리실무"를 참고로 유용한 단축키 및 명령어를 정리한 것입니다.
* 게시물이 지속적으로 업데이트 될 예정이니, 퍼가기 보다는 링크나 트랙백을 이용해 주세요 :)

* MissFlash의 리눅스 유용 명령어 목록
  • Apache 환경설정(httpd.conf)
    • ServerRoot "usr/local/server/apache" : 웹서버가 설치된 절대경로(마지막에 /는 입력하지 않음)
    • Listen 80 : 웹서버가 사용할 포트번호
    • LoadModule ... : Apache에 등록된 모듈들의 목록
    • <IfModule !mpm_netware_module>
          User nobody
          Group nobody
      </IfModule>
      : Apache 데몬의 자식 프로세스들을 생성할 사용자 및 그룹 지정
    • ServerAdmin admin@missflash.com : 서버관리자 이메일 설정
    • ServerName www.missflash.com:80 : 클라이언트에게 보여지는 도메인 혹은 IP주소 입력(지정하지 않을 경우 127.0.0.1로 자동 설정)
    • DocumentRoot "/usr/local/server/apache/htdocs" : Apache 서버의 웹문서가 있는 루트경로 설정
    • <Directory />
          Options FollowSymLinks
          AllowOverride None
          Order deny,allow
          Deny from all
      </Directory> : 해당 디렉토리 이하의 웹문서 제어 설정
    • <IfModule dir_module>
          DirectoryIndex index.html index.htm index.php
      </IfModule> : 클라이언트가 디렉토리에 접근했을 때, DirectoryIndex에 설정한 파일 순서대로 출력
    • <FilesMatch "^\.ht">
          Order allow,deny
          Deny from all
          Satisfy All
      </FilesMatch> : 특정 파일의 접근제어 설정(Satisfy All은 Allow from에 해당하는 경우에 허용하는데, 이 경우 Allow from이 지정되지 않았으므로 모두 Deny됨)[각주:18]
    • ErrorLog logs/error_log : 웹서버의 에러로그 파일 위치 설정
    • LogLevel warn : 에러로그 파일 기록관련 설절(emerg[각주:19], alert[각주:20], crit[각주:21], error[각주:22], warn[각주:23], notice[각주:24], info[각주:25], debug[각주:26])
    • <IfModule log_config_module>
          ...
          LogFormat "%h %l %u %t \"%r\" %>s %b" common[각주:27]
          ...
          CustomLog logs/access_log common[각주:28]
      </IfModule>
    • <IfModule alias_module>
          Redirect permanent /data http://blog.missflash.com/util[각주:29]
          Alias /path /filesystem/path[각주:30]
          ScriptAlias /cgi-bin/ "/usr/local/server/apache/cgi-bin/"[각주:31]
      </IfModule>
    • <IfModule cgid_module>
          #Scriptsock logs/cgisock[각주:32]
      </IfModule>
    • DefaultType text/plain : 웹서버가 데이터를 전송하는 문서 형식 지정
    • <IfModule mime_module>
          TypesConfig conf/mime.types[각주:33]
          AddEncoding x-compress .Z[각주:34]
          AddType application/x-compress .Z[각주:35]
          AddType application/x-httpd-php .php
          AddHandler cgi-script .cgi[각주:36]
          AddOutputFilter INCLUDES .shtml
          ...
      </IfModule>
    • MIMEMagicFile conf/magic : 인터넷 문서 형식이 지정되어 있지 않을 때, conf/magic 파일을 참고해 문서 형식 결정
    • ErrorDocument 500 "The server is not available now."
      #ErrorDocument 404 /missing.html
      ErrorDocument 404 "/cgi-bin/missing_handler.pl"
      ErrorDocument 402 http://blog.missflash.com/missing.html : 에러 발생시 클라이언트에게 응답할 방법 설정(메시지 출력, 서버내 파일 출력, 외부 URL 링크 모두 가능)
    • #EnableMMap off : 메모리맵핑(서버성능 저하 및 안정성을 해칠수 있으므로 기본값[각주:37] 유지)
    • #EnableSendfile off : 커널이 지원하는 매커니즘을 통해서 파일 전송
    • #include [환경설정 파일명] : 별도 환경설정 파일을 Include
      • httpd-mpm.conf : 다중처리 모듈 설정 파일[각주:38]
      • httpd-multilang-errordoc.conf : 에러 메시지 다중언어 지원 설정 파일
      • httpd-autoindex.conf : 디렉토리 목록 설정 파일
      • httpd-languages.conf : 다중언어 지원 설정 파일
      • httpd-userdir.conf : 사용자 홈디렉토리 설정 파일
      • httpd-info.conf : 웹서버 상태 및 환경 설정 파일
      • httpd-vhosts.conf : 가상호스트 설정 파일
      • httpd-manual.conf : 웹사이트에서 아파치 메뉴얼을 사용하기 위한 설정 파일
      • httpd-dav.conf : WebDAV 지원 모듈 설정 파일
      • httpd-default.conf : 아파치 기본 설정 파일
      • httpd-ssl.conf : SSL 모듈 설정 파일
      • httpd-autoindex.conf : <Directory ~>에서 Options Indexes를 이용해 디렉토리 목록을 출력할 때 화면 설정
    • <IfModule ssl_module>
          SSLRandomSeed startup builtin
          SSLRandomSeed connect builtin
      </IfModule> : 인터넷을 통해 비공개 문서 전송시 사용(https로 구분)

  • Apache 환경설정(extra/httpd-autoindex.conf[각주:39])
    • IndexOptions FancyIndexing HTMLTable VersionSort : 디렉토리 목록을 표시할 때 사용하는 옵션
      • DescriptionWidth=[n[각주:40] | *[각주:41]] : 문자단위로 설명열의 폭 지정
      • FancyIndexing : 디렉토리의 fancy 목록 생성
      • FoldersFirst : 디렉토리가 먼저 나오고, 일반 파일이 뒤에 출력(FancyIndexing과 함께 사용해야 함)
      • HTMLTable : HTML 표로 fancy 디렉토리 목록 생성
      • IconsAreLinks : fancy 목록에서 파일명 링크에 아이콘 포함
      • IconHeight[=pixels], IconWidth[=pixels] : 파일 아이콘의 img 태그에 height와 width 속성을 포함(페이지 구성 미리 계산 가능)
      • IgnoreCase : 대소문자를 구별하지 않고 파일 정렬
      • IgnoreClient : 클라이언트가 보내는 모든 질의변수 무시
      • NameWidth=[n | *] : 바이트 단위로 파일명 열의 폭 지정
      • ScanHTMLTitles : fancy 목록에서 HTML 문서 타이틀 추출
      • SuppressColumnSorting : FancyIndexed 디렉토리 목록에서 열 이름의 순서를 바꾸는 링크 미제공
      • SuppressDescription : fancy 목록에서 파일 설명 미포함
      • SuppressHTMLPreamble : 문서의 처음부터 header 파일 내용 첨가(보통은 HTML 시작부분 뒤[각주:42]에 첨가)
      • SuppressIcon : 아이콘 제외(SuppressRules와 함께 사용시 HTML 3.2에 알맞은 표준 출력을 함)
      • SuppressLastModified : 마지막 수정일 미표시
      • SuppressRules : 디렉토리 목록에서 수평줄(hr 태그) 미사용(SuppressIcon과 함께 사용시 HTML 3.2에 알맞은 표준 출력을 함)
      • SuppressSize : 파일크기 미표시
      • TrackModified : 디렉토리 목록의 HTTP 헤더에 Last-Modified와 ETag 값을 포함
      • VersionSort : 버전 번호를 포함한 파일명 정렬
      • XHTML : HTML 3.2 대신 XHTML 1.0 코드 생성
    • Alias /icons/ "/usr/local/server/apache/icons/" : icon 파일들이 들어있는 디렉토리를 가리키는 가상디렉토리(/icons/) 생성
    • AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip : FancyIndexing에서 파일 옆에 보여줄 아이콘 지정
    • AddIconByType (TXT,/icons/text.gif) text/* : MIME-type의 파일 옆에 보여줄 아이콘 지정
    • AddIcon /icons/binary.gif .bin .exe : FancyIndexing에서 해당 확장자 파일의 아이콘 지정
    • DefaultIcon /icons/unknown.gif : 기본 아이콘 지정
    • #AddDescription "GZIP compressed document" .gz : 특정 파일에 대한 설명 설정
    • HeaderName HEADER.html : 파일 목록 위에 보여줄 페이지 설정
    • ReadmeName README.html : 파일 목록의 끝에 보여줄 페이지 설정
    • IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t : 디렉토리 목록에서 감출 목록 추가

  • Apache 환경설정(extra/httpd-dav.conf[각주:43])
    • DavLockDB "/usr/local/server/apache/var/DavLock" : 잠금 데이터베이스의 전체 경로를 확장자를 제외하고 지정
    • <Directory "/usr/local/server/apache/uploades">
          Dav On[각주:44]
          ...
          AuthType Digest[각주:45]
          AuthName DAV-upload[각주:46]
          AuthUserFile "/usr/local/server/apache/user.passwd"[각주:47]
          ...
      </Directory>
    • BrowserMatch "MS FrontPage" redirect-carefully : HTTP 요청 헤더 User-Agent에 따라 환경변수 설정

  • Apache 환경설정(extra/httpd-default.conf[각주:48])
    • Timeout 300 : 설정된 시간동안 클라이언트와 서버간에 아무런 메시지가 발생하지 않을 경우, 오류로 처리됨
    • KeepAlive On : 특별한 요청없이 연결을 지속할 것인지 설정
    • MaxKeepAliveRequests 100 : 클라이언트가 접속된 시간동안 아파치 서버에 요청할 수 있는 최대 요청개수 지정(0은 제한없음 의미)
    • KeepAliveTimeout 5 : 지정한 시간동안 요청이 없을때 접속 종료
    • UseCanonicalName Off : IP주소를 역DNS 검색하여 서버명을 알아냄
    • AccessFileName .htaccess : 디렉토리별로 접근제어 할 정보를 담고있는 파일 지정
    • ServerTokens Full : HTTP 응답 헤더 중 Server 항목 설정(Prod, Major, Minor, Min, OS, Full[각주:49] 중 한 가지 선택 가능)
    • ServerSignature On : 서버가 생성하는 문서의 마지막 부분에 다음 내용(<address>[헤더의 Server 항목] Server at blog.missflash.com Port 80</address>) 추가
    • HostnameLookups Off : 웹서버의 로그를 지정하는 포멧 설정(IP, Domain 중 한가지 선택, Off는 IP를 의미)

  • Apache 환경설정(extra/httpd-info.conf[각주:50])
    • <Location /server-status[각주:51]>
          SetHandler server-status[각주:52]
          ...
          Allow from 127.0.0.1[각주:53]
      </Location> : 서버의 상태와 성능에 대한 정보 출력
    • #ExtendedStatus On : 자세한상태정보 기능을 제공할 것인지 설정

  • Apache 환경설정(extra/httpd-languages.conf)
    • AddLanguage fr .fr : 특정 문서의 언어 지정
    • LanguagePriority en ca cs : 언어의 우선순위를 내림차순으로 지정
    • ForceLanguagePriority Prefer Fallback : (리눅스 초보님 답변) 강제적인 언어 우선권에 관한 옵션, 클라이언트가 브라우저로 요청한 언어에 부합하는 페이지가 한 개가 아니면 서버는 "NOT ACCEPTABLE"이나 "MULTIPLE CHOICES"로 응답하게 됨... 이 오류를 피하기 위해 클라이언트가 요청한 언어를 무시, LanguagePriority 지시어 순서로 응답하도록 하는 옵션
    • AddCharset UTF-8 .utf8 : 특정 파일의 확장자에 대한 문자셋 지정
    • AddDefaultCharset utf8 : text/plain이나 text/html 형식에 대한 응답을 할 때, 기본 문자셋 지정

  • Apache 환경설정(extra/httpd-manual.conf)
    • AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|pt-br|ru))?(/.*)?$ "/usr/local/server/apache/manual$1" : 정규표현식을 이용해 URL을 특정 디렉토리로 연결
    • <Directory "/usr/local/server/apache/manual">
          ...
          <Files *.html>[각주:54]
              SetHandler type-map
          </Files>
          SetEnvlf Request_URI ^/manual/(de|en|es|fr|ja|ko|pt-br|ru)/ prefer-language=$1[각주:55]
          RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|pt-br|ru)){2,}(/.*)?$ /manual/$1$2[각주:56]
          ...
      </Directory>

  • Apache 환경설정(extra/httpd-mpm.conf[각주:57])
    • <IfModule !mpm_netware_module>
          PidFile logs/httpd.pid
      </IfModule> : 아파치 서버의 프로세스가 생성되어 있을 때, PID를 기록하는 파일 지정
    • <IfModule !mpm_winnt_module>
          <IfModule !mpm_netware_module>
              LockFile logs/accept.lock
          </IfModule>
      </IfModule> : LockFile 경로지정
    • <IfModule mpm_prefork_module[각주:58]>
          StartServers 5[각주:59]
          MinSpareServers 5[각주:60]
          MaxSpareServers 10[각주:61]
          MaxClients 150[각주:62]
          MaxRequestsPerChild 0[각주:63]
      </IfModule>

  • Apache 환경설정(extra/httpd-multilang-errordoc.conf[각주:64])
    • Alias /error/ "/usr/local/server/apache/error/" : 에러 페이지가 있는 디렉토리 설정
    • ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var : 지정된 에러(404)가 발생했을 때, 보여줄 페이지 지정

  • Apache 환경설정(extra/httpd-userdir.conf[각주:65])
    • UserDir public_html : 사용자 디렉토리 설정(missflash라는 사용자의 경우, missflash 홈 디렉토리 아래의 public_html 디렉토리에 있는 index.html 파일을 불러옴)
    • <Directory /home/*/public_html> ... </Directory> : 사용자 디렉토리 접근에 대한 옵션 지정

  • Apache 환경설정(extra/httpd-vhosts.conf[각주:66])
    • NameVirtualHost *:80
      <VirtualHost *:80>[각주:67]
          ServerAdmin admin@missflash.com[각주:68]
          DocumentRoot /www/docs[각주:69]
          ServerName missflash.com[각주:70]
          ServerAlias www.missflash.com
          ErrorLog logs/www.missflash.com_error_log[각주:71]
          CustomLog logs/www.missflash.com_access_log common[각주:72]
      </VirtualHost>



미국에서 본 '하늘에 걸린 신호등'입니다. 도로가 널찍널찍하다보니 저런식으로 줄에 묶어 놓더군요 :)

여기까지 오시느라 수고 많으셨어요~ 이제 잠시 쉬세요!

  1. 옵션을 사용하지 않음 [본문으로]
  2. MultiViews를 제외한 모든 옵션 사용 [본문으로]
  3. DirectoryIndex에 지정한 파일이 없을 때, 모든 파일목록 출력 [본문으로]
  4. SSI 사용을 허용 [본문으로]
  5. SSI는 사용하나, #exec, #include는 허용하지 않음 [본문으로]
  6. 심볼릭 링크 허용 [본문으로]
  7. Perl같은 CGI 허용 [본문으로]
  8. 웹브라우저 혹은 웹문서 종류에 따라 가장 적합한 페이지 출력 [본문으로]
  9. 심볼릭 링크가 가리키는 파일 소유자가 같을 때만 허용 [본문으로]
  10. 어떤 인증 정보도 참고하지 않음 [본문으로]
  11. 모든 Access 정보 참고 [본문으로]
  12. AccessFileName 지시자에 명시한 파일(.htaccess)에 대해 사용자 인증 지시자 사용 허락 [본문으로]
  13. AccessFileName 지시자로 설정한 파일에 대해 문서 유형을 제어하는 지시자 사용 허락 [본문으로]
  14. AccessFileName 지시자로 설정한 파일에 대해서 디렉토리 Indexing을 제어하는 지시자 사용 허락 [본문으로]
  15. AccessFileName 지시자로 설정한 파일에 대해서 호스터 접근을 제어하는 지시자 사용 허락 [본문으로]
  16. AccessFileName 지시자에 명시한 파일에 대해서 Options, XBiHack 같은 지시자 사용 허락 [본문으로]
  17. Deny, Allow에 대한 기본값 설정 [본문으로]
  18. 이 경우 확장자에 ht가 포함된 파일은 모두 무시합니다. [본문으로]
  19. 긴급한 상태, 시스템 사용 불가 [본문으로]
  20. 즉시 행동을 취해야 하는 상태 [본문으로]
  21. 위험한 상태 [본문으로]
  22. 에러 상태 [본문으로]
  23. 경고 상태 [본문으로]
  24. 보통이지만 중요한 상황 [본문으로]
  25. 보통의 수준 [본문으로]
  26. 디버그-레벨 메시지 [본문으로]
  27. 로그저장 포멧 설정 [본문으로]
  28. 로그형식(common) 설정 [본문으로]
  29. /data로 접속하면 http://blog.missflash.com/util로 접속 [본문으로]
  30. 경로를 짧게 줄이거나 다른 디렉토리에 접근할 수 있게 설정 [본문으로]
  31. Alias와 동일하나 서버스크립트를 포함 [본문으로]
  32. CGI 데몬과 통신하기 위해 사용할 소켓의 이름 설정 [본문으로]
  33. 웹서버의 mime type을 지정한 파일 설정 [본문으로]
  34. 특정 확장자의 파일을 특정 형식으로 인코딩 [본문으로]
  35. 특정 확장자의 파일 형식 지정 [본문으로]
  36. 특정 확장자의 파일 핸들러 지정 [본문으로]
  37. #로 주석처리합니다. [본문으로]
  38. 모든 환경설정의 경로는 "conf/extra/"입니다. [본문으로]
  39. Indexes를 이용해 브라우저에 출력되는 목록의 형식을 설정하는 파일입니다. [본문으로]
  40. 열의 폭을 n 바이트로 고정 [본문으로]
  41. 열의 폭을 가장 긴 쪽에 맞춤 [본문으로]
  42. html, head 태그 등이 해당합니다. [본문으로]
  43. 아파치에 WebDAV class1과 class2 기능을 추가하는 설정 파일입니다. [본문으로]
  44. WebDAV 기능을 사용하도록 설정 [본문으로]
  45. 인증모드 설정(Digest, Basic) [본문으로]
  46. 인증 이름 설정 [본문으로]
  47. 사용자 인증에 쓸 사용자명과 암호 목록을 저장하는 파일 지정 [본문으로]
  48. 아파치 성능과 관련된 기본설정이 정의 파일입니다. [본문으로]
  49. Server: Apache/2.2.4 (Unix) DAV/2 PHP/5.2.1에 해당합니다. [본문으로]
  50. 서버의 상태와 성능을 비롯한 종합적인 정보를 제공하는 파일입니다. [본문으로]
  51. server-status, server-info 두 가지가 가능한데, server-info의 경우 서버 설정에 대한 종합적인 정보 제공 [본문으로]
  52. server-status, server-info 두 가지가 가능한데, server-info의 경우 서버 설정에 대한 종합적인 정보 제공 [본문으로]
  53. 자기자신만 접속 [본문으로]
  54. 해당 디렉토리에 있는 파일에만 적용 [본문으로]
  55. 요청의 종류에 따라 환경변수 정의 [본문으로]
  56. 지정한 정규표현식과 URL을 비교해 맞다면 파일명 대체 [본문으로]
  57. 다양한 OS에서 동작할 수 있도록 설정하는 파일입니다. [본문으로]
  58. 아파치가 설치된 OS와 일치하는 것 선택 : mpm_preform_module(유닉스, 리눅스), mpm_beos_module(BeOS), mpm_netware_module(Novell Netware), mpm_mpmt_os2_module(OS/2), mpm_worker_module(멀티쓰레드 사용) [본문으로]
  59. 아차피 웹데몬이 구동될 때, 자식 프로세스를 몇 개로 할 것인지 지정 [본문으로]
  60. 성능 향상과 빠른 응답속도를 위한 유휴서버 최소개수 설정 [본문으로]
  61. 성능 향상과 빠른 응답속도를 위한 유휴서버 최대개수 설정 [본문으로]
  62. 아파치 웹서버에 접근할 수 있는 클라이언트의 최대 개수 설정 [본문으로]
  63. 아파치 웹서버의 자식 프로세스들이 요청받을 수 있는 클라이언트 개수 [본문으로]
  64. 여러 언어의 에러페이지를 설정하는 파일입니다. [본문으로]
  65. 일반 사용자의 홈디렉토리에 대해 설정하는 파일입니다. [본문으로]
  66. 여러 개의 도메인이나 호스트를 설정해주는 파일입니다. [본문으로]
  67. *는 현재 서버에 할당된 모든 IP 주소를 의미함 [본문으로]
  68. 해당 서버의 관리자 이메일 입력 [본문으로]
  69. 해당 서버의 홈 디렉토리 [본문으로]
  70. 해당 서버의 도메인 [본문으로]
  71. 해당 서버 에러로그 파일 경로와 파일명 입력 [본문으로]
  72. 로그 파일 경로와 파일명, 포멧 입력 [본문으로]