웹사이트로 접속할때 기본적으로 보통 index.html, index.php index.jsp 으로 웹사이트를 띄웁니다.

간혹가다 homepage.html homepage.php homepage.jsp 으로 기본파일 이름을 바꿔서 하는경우도 있습니다.

 

그러나 이번 글에서는 해당 기본 페이지가 없을때 파일리스트들을 출력하게 하거나 접근 불가로 설정하는 방법에 알아보겠습니다.

 

- 기본 환경

CentOS 7

Apache Source Install

 

Apache 설정은 Ubuntu 와 다름없는 설정입니다. 동일하다고 보면 됩니다.

 

일단 기본페이지 설정 부분입니다.

저의 Apache 전역설정파일 httpd.conf 입니다.

 

# vi /usr/local/apache/conf/httpd.conf

 

<IfModule dir_module>

    DirectoryIndex index.html index.php index.jsp

</IfModule>

여기서 만약에 .html 파일이 아닌 .php 파일을 먼저 띄우고 싶다면 

DirectoryIndex index.php index.html index.jsp 

이렇게 순서를 바꾸면 됩니다.

아래에는 사이트 접속시 나오는 내용입니다.

 

 

또는 기본페이지 이름을 바꾸고싶다면

 

<IfModule dir_module>

    DirectoryIndex homepage.html homepage.php homepage.jsp

</IfModule>

 

이렇게 바꾸면 해당 페이지를 먼저 부르게 됩니다. 

 

 

이번에는 index.html index.php index.jsp 로 기본페이지를 설정했을때 index파일이 없을때 경우입니다.

이렇게 접속하면 이전에 작업했던 파일목록 homepage.html 이 나옵니다. 보안상 안좋습니다.

 

현재 어떻게 설정되어 있는지 확인해봅니다.

cat 명령어는 파일 내용확인입니다.

| 는 or 같은 옵션으로 추가 옵션을 쓸수 있습니다.

egrep 는 grep 의 확장버전입니다.

egrep -v '^[[:space:]]*(#.*)?$' 이부분은 정규식이고,

# 으로 시작하는 줄까지 제외 입니다.

 

아무것도 없는 빈줄 제외
cat 파일명 | grep -v ^$
grep -e "^$" -v 파일명

공백문자 있는 줄까지 제외
cat 파일명 | egrep -v ^[[:space:]]*$

#으로 시작하는 줄까지 제외
cat 파일명 | egrep -v '^[[:space:]]*(#.*)?$'

 

여기서 

 <Directory "/home/www/public_html1">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require all granted
 </Directory>

 

<Directory "/home/www/public_html1">

-> 해당설정은 /home/www/public_html 에서 디렉토리 옵션설정을 하겠다는 내용입니다.

 

AllowOverride 지시자는 어떻게 접근을 허락할 것인가에 대한 설정이다.

종류 설명
None 이 값이 설정되면 AccessFileName에 지정된 파일을 액세스 인증파일로 인식하지 않는다.AccessFileName의 값이 대부분 .htaccess 이므로 이를 무시하게 된다. 아주 제한적인 접근만을 허용할때 사용하는 값이다.
All 이전의 인증방식에 대하여 새로운 접근인증방식을 우선적용하도록 Override를 허용한다.
AuthConfig AccessFileName 지시자에 명시한 파일에 대하여 AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require 등과 같은 클라이언트 인증지시자의 사용을 허용한다. htpasswd 유틸리티를 이용하여 특정디렉토리의 접근은 AccessFileName에 명시한 파일(.htaccess)로 제어하고자 할 때에 해당 디렉토리내에 이 값을 주로 사용한다.(디렉토리 인증설정)
FileInfo AccessFileName 지시자에 명시한 파일에 대하여 AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority 등과 같은 문서유형을 제어하는 지시자 사용을 허용한다.
Indexes AccessFileName 지시자에 명시한 파일에 대하여 AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName 등과 같은 디렉토리 Indexing을 제어하는 지시자 사용을 허용한다.
Options AccessFileName 지시자에 명시한 파일에 대하여 Options 그리고 XBitHack등과 같은 특정 디렉토리옵션을 제어하는 지시자 사용을 허용한다.
Limit AccessFileName 지시자에 명시한 파일에 대하여 allow, deny, 그리고 order 등과 같은 호스트 접근을 제어하는 지시자 사요을 허용한다.

 

Options
-> 지정한 디렉토리이하에 모든 파일과 디렉토리들에 적용할 접근제어를 설정합니다. 즉 디렉토리를 보여줄 것인가? CGI를 허용할 것인가? SSI를 허용할 것인가? 등의 설정을 여기서 하게 된다. 특정 옵션만 제거하거나 추가할때는 + / - 를 옵션값 앞에 붙인다.

ex) Options -FollowSymLinks    , Options +Indexes.

종류 설명
None 모든 허용을 하지 않는다. 즉, None 설정으로 이외의 다른 설정들은 모두 무시한다
All MultiViews를 제외한 모든 옵션설정을 허용한다. Options 값이 공백일때도 All과 같다. (Options (없음))
Indexes 웹서버의 디렉토리 접근시에 DirectoryIndex에서 지정한 파일(index.html)이 존재하지 않을 경우에 디렉토리내의 파일목록리스트를 웹브라우저로 보여준다. 서버보안을 위해 사용하지 않는 것이 좋다
Includes SSI 사용을 허용하는 설정이다. mod_include.c 라는 모듈이 필요하며 기본적으로 로드되어 있다.
IncludesNOEXEC SSI 사용은 허용되지만 #exec 사용과 #include는 허용되지 않는다. SSI를 사용하면서 시스템에 위험한 SSI의 실행태그는 허용하지 않겠다는 설정이다.
FollowSymlinks 심볼릭 링크를 허용한다. Rewrite 시 필요 .이 옵션을 지정하면 웹브라우저에서 링크파일의 경로까지도 확인 할 수 있게된다. 보안상 이 값은 설정하지 않는 것이 좋다.
ExecCGI perl등과 같은 CGI 실행을 허용하기 위한 설정이다. 원래 아파치에서 CGI 사용은 ScriptAlias로 지정된 위치에서 사용하는 것이 기본이다. 하지만 ScriptAlias가 지정되지 않은 디렉토리에 이 옵션이 지정되어있다면 지정된 디렉토리내에서는 CGI 사용이 허용된다. 물론 이 경우에도 "AddHandler cgi-script" 지시자에서 정의한 확장자만 유효하다.
MultiViews 웹브라우저의 요청에 따라 적절한 페이지로 보여준다. 웹브라우저의 종류나 웹문서의 종류에 따라서 가장 적합한 페이지를 보여줄 수 있도록하는 설정이다.

 

Require 액세스 권한 설정

 

Apache에서 사용되는 모든 파일을 대상으로 접근 제한을 설정할 수 있다. 접근 제한 구역 컨테이너 등을 사용하여 디렉토리 단위와 파일 단위로 설정할 수 있다.

형식 의미
Require all granted 모든 액세스 허용
Require all denited 모든 액세스 거부
Require ip IP주소 해당 IP 주소 허용
Require not ip IP주소 해당 IP 주소 거부
Require host 호스트 해당 호스트 허용
Require not host 호스트 해당 호스트 거부
 
파일 목록들이 안보이게 설정해줍니다. Indexes 제거합니다.

 <Directory "/home/www/public_html1">
        AllowOverride All
        Options FollowSymLinks
        Require all granted
 </Directory>
</VirtualHost>

 

 

참조 http://www.devkuma.com/books/pages/1376

'WEB&WAS > Apahce' 카테고리의 다른 글

CentOS 7 TLS 1.3 인증서 확인  (0) 2022.07.26
Apache mod_url 설정  (0) 2022.01.09
Mod_cband 모듈 추가설치  (0) 2021.05.07
Alma Linux 8 apache 소스설치  (0) 2021.04.22
Oracle Linux8 apache 소스설치  (0) 2021.04.13
Posted by returnrisk
,

2003년에 만들어진 홈페이지를 제작, 관리하는 프로그램입니다.
웹 사이트를 만들고 관리하는 것 중, 전 세계의 1/4이 사용할 만큼 사랑 받고 있고
타 CMS(Content Management System) 툴과 압도적인 차이로 세계 1위라고 합니다.

 

서버 환경 = Apache 2.4, MariaDB 10.5, PHP 7.4

 

현재 워드프레스 공식사이트에서는 최신버전만 다운로드가 가능하다. 그렇기 때문에 APM 버전이 옛날버전이라면 호환성을 꼭 확인해야한다. 괜히 자신의 서버 PHP 버전이 5.5인데 WordPress 5.2 버전 다운로드 후 설치를 진행하지 말자. 

 

해당 워드프레스 버전표입니다.

  • WordPress 버전 4.1: PHP 5.6에 대한 지원 추가.
  • WordPress 4.4: PHP 7.0 지원 추가(dev note)
  • WordPress 4.7: PHP 7.1에 대한 지원 추가.
  • WordPress 4.9: PHP 7.2에 대한 지원 추가.
  • WordPress 5.0에서: PHP 7.3에 대한 지원 추가(dev note)
  • WordPress 5.2에서: PHP 5.2, 5.3, 5.4, 5.5에 대한 지원이 중단됨.
  • WordPress 5.3에서: PHP 7.4(dev note)에 대한 지원 추가.
  • WordPress 5.6에서: PHP 8.0(dev note)에 대한 "베타 지원" 추가.

 

# cd /usr/local/src/

# wget https://ko.wordpress.org/latest-ko_KR.tar.gz

# tar zxvf latest-ko_KR.tar.gz

압축을 풀면 wordpress 라는 폴더로 압축이 풀립니다.

# mv wordpress /웹루트디렉토리/

 

워드프레스 데이터베이스 용 계정 및 권한 설정

 

# mysql -u root -p

MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '패스워드';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;

웹브라우저에서  [서버아이피 or 도메인]/wordpress로 접속합니다.

 

아래에 위에서 입력했던 DB 접속정보를 적습니다.

 

해당 wp-config.php 파일을 /웹루트디렉토리/wp.config.php 생성하여 아래 박스내용을 그대로 복사하여 생성합니다. 그 후 설치 실행

 

도메인 및 워드프레스 관리자페이지 비밀번호 설정하지

입력했던 아이디 패스워드 입력하기

워드프레스 관리자 페이지

 

만약 워드프레스 테마를 FTP 다운로드 하고 싶다면 

wp-config.php 파일의 맨 아랫줄에 이와 같이 한줄 써준다.

define('FS_METHOD''direct');

 

웹루트디렉토리/wordpress 에서 해당 디렉토리 하위파일까지 권한을 변경해줘야한다.

# chmod -R 777 wp-content/

 

또한

 

만약 적용된 테마를 홈페이지로 바로 사용하고 싶다면 vhost.conf 설정에서 웹루트 디렉토리를 변경해줍니다.

기존웹루트디렉토리/wordpress

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

        DocumentRoot "기존웹루트디렉토리/wordpress"
        #DocumentRoot "기존웹루트디렉토리"

 

아래에는 워드프레스 관리자 페이지에서 설정에서 워드프레스 주소가

워드프레스 주소(URL) http://도메인/wordpress

사이트 주소(URL) http://도메인/wordpress

이렇게 되어 있는데

 

워드프레스 주소(URL) http://도메인

사이트 주소(URL) http://도메인

 

이렇게 바꿔주면 됩니다.

 

간단한 테마를 적용시켰을때 입니다.

 

 

'WEB&WAS' 카테고리의 다른 글

CentOS 7 TLSv1.3 APM 설치  (0) 2022.07.26
Letsencrypt + Rewrite + crond  (0) 2020.12.04
유료인증서 적용  (0) 2020.12.04
Letsencrypt 무료 인증서 발급 및 갱신  (0) 2020.12.04
Posted by returnrisk
,

기본적으로 apache는 미국에서 만들어진 기반 웹프로그램으로 US 언어로 만들어진 프로그램입니다.

웹소스파일을 영어파일로 기본적으로 올려야하며, 만약 한글이름으로 된 파일을 올리면 추가적으로 모듈을 설치해야합니다.

 

URL 한글 인식설정

mod_url 소스 설치 시

/usr/local/apache/bin/apachectl -l

mod_so.c → 모듈이 있을 시 dso 방식.

 

※ SO(static object) 방식으로 설정 되어있다면 재컴파일을 진행해야 합니다. (mod_so.c 가 없다면 재컴파일)

-아래 url 로 이동 후, 적합한 버전을 다운받습니다.

 

Apache 소스 설치 시

cd /usr/local/src/APM_Setup

wget https://kldp.net/modurl/release/2188-mod_url-apache2-1.25.tar.bz2 

tar xvf 2188-mod_url-apache2-1.25.tar.bz2

cd mod_url-apache2/

/usr/local/apache/bin/apxs -iac mod_url.c

 

위의 설치가 완료되었다면 httpd.conf 설정파일에 다음과 같은 내용이 자동으로 추가됩니다 .

vi /usr/local/apache/conf/httpd.conf

- 소스 설치의 경우

 

LoadModule redurl_module modules/mod_url.so

 

다음과 같은 내용을 httpd.conf 에 추가합니다.

<IfModule mod_url.c>

CheckURL On

</IfModule>

 

 

설정이 끝났습니다. apache 재시작으로 mod_url 을 정상적으로 적용시킵니다.

 

mod_url 작동 테스트

 

 

 

 

 

Posted by returnrisk
,

보통 apache 소스설치를 하게된다면 실행파일 스크립트를 /etc/init.d/apachectl 에 만들게 된다.

 

/etc/init.d/apachectl -? 이라는 명령어를 입력한다면 해당 명령어 옵션들을 알 수 있다.

여기서 -k start는 httpd 데몬을 시작한다. 그러나 이미 실행중이라면 오류를 내기 때문에 ps -ef | grep httpd 를 확인해보자. 또한 설정파일을 읽어서 실행하기 때문에 설정파일 오류가 있다면 실행되지 않는다.

 

stop 은 httpd 데몬을 중료한다. 

 

restart 는 apache 데몬을 재시작하지만 데몬이 실행중이 아니라면 시작한다. 그러나 start 처럼 설정파일을 읽고선 실행하기 때문에 오류가 있을시 종료만되고 시작되지 않는다.

 

graceful apache 데몬을 일반적인 재시작과 달리 현재 열려있는 연결을 끊지않는다. 또, 이전 로그파일을 즉시 닫지 않는다. 즉, 로그순환 스크립트에서 이 명령을 사용한다면, 이전 로그파일을 처리하기전에 로그파일을 닫혔음을 보장하기위해 상당히 기다려야 한다. 아파치가 재시작시 실패하지 않음을 확인하기위해 재시작 전에 자동으로 configtest 명령과 같이 설정파일을 검사한다. 즉 pid번호가 바뀌지 않으므로 현재 접속자 이용자들이 끊기지 않는다.

 

graceful-stop 은 부모프로세스가 자식프로세스에게 진행하고 있는 프로세스 종료하고 천천히 종료하라는 뜻과 비슷합니다. 

 

systemctl restart httpd 은 /etc/init.d/apachectl restart와 동일합니다.

그러나 systemctl reload httpd 은 /etc/init.d/apachectl graceful 과 동일합니다.

 

Posted by returnrisk
,