[CentOS 6.8 / 7.3] Apache VirtualHost (가상호스트) 추가 > 기술자료

본문 바로가기
사이트 내 전체검색

기술자료

Linux [CentOS 6.8 / 7.3] Apache VirtualHost (가상호스트) 추가

페이지 정보

댓글 0건 조회 7,038회 수정일 18-01-10 04:57

본문

1. 시스템 계정 추가시마다 pubilc_html 자동 생성
시스템 계정 추가시(useradd)마다 추가된 계정의 디렉토리 하위에 /etc/skel/ 디렉토리안에 포함된 파일이나 디렉토리가 자동으로 복사됩니다. 따라서 아래처럼 디렉토리를 만들어주면, 시스템 계정 추가시마다 public_html 디렉토리가 자동으로 생성됩니다.
[root@localhost ~]# mkdir /etc/skel/public_html


2-1. 그룹 확인 및 추가
http://www.happyjung.com/lecture/340
[root@localhost ~]# cat -n /etc/group
[root@localhost ~]# groupadd your_domain


2-2. 사용자 확인 및 추가
http://www.happyjung.com/lecture/339
[root@localhost ~]# cat -n /etc/passwd
[root@localhost ~]# useradd your_domain


3. 비밀번호 변경
[root@localhost ~]# passwd your_domain
Change new password:
Retype new password:
passwd:  all authentication tokens updated successfully.

만약 /usr/share/cracklib/pw_dict.pwd: Permission denied 가 뜨면 CentOS SELinux 비활성화를 확인합니다.
참고 : http://www.php79.com/159 


4. 계정 디렉토리에 Apache 웹서버에서 접근 가능하도록 권한 부여
[root@localhost ~]# ls -l /home/ | grep your_domain
drwx------  3 your_domain your_domain 4096 Feb 24 06:51 your_domain

[root@localhost ~]# chmod 710 /home/your_domain

[root@localhost ~]# chgrp apache /home/your_domain

[root@localhost ~]# ls -l /home/ | grep your_domain
drwx--x---  3 your_domain apache  4096 Feb 24 06:51 your_domain

[root@localhost ~]# ls -l /home/your_domain
total 4
drwxr-xr-x 2 your_domain your_domain 4096 Feb 25 02:43 public_html


[ Apache 2.2 + CentOS 6.8 Apache VirtualHost (가상호스트) 추가 ]

참고: vi 명령어
/찾을단어  : 찾기
/N  : 다음단어 찾기
G  : 파일의 마지막 행으로 가기

5-1.  httpd.conf 수정
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
...
NameVirtualHost *:80
...
#<VirtualHost 103.31.12.170>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /home/your_domain/public_html
    ServerName your_domain.com
    ServerAlias www.your_domain.com
    ErrorLog logs/your_domain.com-error_log
    CustomLog logs/your_domain.com-access_log common
</VirtualHost>


6. Apache 웹서버를 재시작
[root@localhost ~]# /etc/init.d/httpd reload


7. 웹브라우저에서 접속 확인하기
먼저 웹브라우저에서 확인할 테스트 페이지를 만들어 봅니다.
[root@localhost ~]# vi /home/your_domain/public_html/test.php
echo '<?php
echo __FILE__;
phpinfo();
?>' >> /home/your_domain/public_html/test.php

웹브라우저에서 서버 IP 뒤에 /test.php 를 덧붙여서, http://192.168.0.1/test.php 형식의 주소로 접속해 봅니다.


Apache 2.2.x 관련자료
http://www.php79.com/113 
http://www.php79.com/184 
http://httpd.apache.org/docs/2.2/vhosts/name-based.html 
https://www.cmsfactory.net/node/10141 



[ Apache 2.4 + CentOS 7.3 Apache VirtualHost (가상호스트) 추가 ]

5. vhost.conf 파일 생성 및 설정
[root@localhost ~]# ls /var/log  를 해서 httpd 폴더 존재 여부 확인해서 없으면
[root@localhost ~]# mkdir /var/log/httpd  로 생성해줍니다.
[root@localhost ~]# vi /usr/local/apache/conf/vhost.conf  <- APM 설치일때는 이 경로를 확인


5-1. vhost.conf 설정
[root@localhost ~]# vi /etc/httpd/conf.d/vhost.conf
<Directory />
    AllowOverride none
    Require all denied
</Directory>

를 아래와 같이 변경

<Directory />
    Options FollowSymLinks
    AllowOverride none
    #Require all denied
    Require all granted
</Directory>


5-2. vhost.conf 설정
    Options FollowSymLinks

를 아래와 같이 변경

    Options Indexes FollowSymLinks


5-3. vhost.conf 설정
[root@localhost ~]# vi /etc/httpd/conf.d/vhost.conf
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

아래에 내용추가

    AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm


5-4. vhost.conf 설정
[root@localhost ~]# vi /etc/httpd/conf.d/vhost.conf
# create new
# for original domain
<VirtualHost *:80>
   DocumentRoot /var/www/html
   ServerName www.srv.world
</VirtualHost>


# for virtual domain
<VirtualHost *:80>
   DocumentRoot /home/your_domain/public_html
   ServerName your_domain.com
   ServerAlias www.your_domain.com
   #ServerAdmin webmaster@your_domain.com
   ErrorLog "/var/log/httpd/your_domain-error_log"
   CustomLog "/var/log/httpd/your_domain-access_log" combined
   
   <Directory "/home/your_domain/public_html/">
      DirectoryIndex index.html index.php
      Options FollowSymLinks
      AllowOverride All
      Require all granted
   </Directory>
</VirtualHost>

#<VirtualHost *:80>
#   DocumentRoot /home/your_domain/public_html
#   ServerName your_domain.com
#   ServerAlias www.your_domain.com
#   ErrorLog "/var/log/your_domain-error_log"
#   CustomLog "/var/log/your_domain-access_log" combined

#   <Directory "/home/your_domain/public_html/">
#      DirectoryIndex index.html index.php
#      Options FollowSymLinks
#      AllowOverride All
#      Require all granted
#   </Directory>
#</VirtualHost>


6. Enable Userdir (사용자의 홈 영역을 활성)
일반 사용자가 자신의 홈 디렉토리에 그 파일을 Web 사이트로 공개 할 수 있도록 설정
[root@localhost ~]# vi /etc/httpd/conf.d/userdir.conf

    UserDir disabled
를 아래와 같이 변경
    #UserDir disabled

    #UserDir public_html
를 아래와 같이 변경
    UserDir public_html


7. 방화벽 확인
CentOS를 기본 설치할 경우 외부에서의 80포트 접근이 차단되어있습니다.

7-1. 현재 정책이 존재하는 port를 확인
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

Ports 란이 공란으로 되어있으며 tcp 80포트가 정상적으로 접근되지 않음을 알 수 있습니다.


7-2. 80 port any open
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp


7-3. 방화벽 리로드
[root@localhost ~]# firewall-cmd --reload
success
위와 같은 명령어를 통해 80port로의 모든 접근이 가능하도록 정책을 넣은 후 방화벽을 relaod합니다.


7-4. 방화벽 public 영역 모든 리스트 확인
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 


8. Apache 웹서버를 재시작

8-1. Apache 정상 설정
[root@localhost ~]# systemctl restart httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2017-07-18 03:22:14 JST; 47s ago
     Docs: man:httpd.service(8)
 Main PID: 28741 (httpd)
   Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─28741 /usr/sbin/httpd -DFOREGROUND
           ├─28742 /usr/sbin/httpd -DFOREGROUND
           ├─28743 /usr/sbin/httpd -DFOREGROUND
           ├─28744 /usr/sbin/httpd -DFOREGROUND
           └─28780 /usr/sbin/httpd -DFOREGROUND

Jul 18 03:22:14 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jul 18 03:22:14 localhost.localdomain systemd[1]: Started The Apache HTTP Server.


8-2. Apache 설정 오류
[root@localhost ~]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

[root@localhost ~]# systemctl -l status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2017-07-18 01:05:13 JST; 36s ago
     Docs: man:httpd.service(8)
  Process: 26125 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 26125 (code=exited, status=1/FAILURE)

Jul 18 01:05:13 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jul 18 01:05:13 localhost.localdomain httpd[26125]: AH00526: Syntax error on line 11 of /etc/httpd/conf.d/vhost.conf:
Jul 18 01:05:13 localhost.localdomain httpd[26125]: Invalid command '\xc2\xa0', perhaps misspelled or defined by a module not included in the server configuration
Jul 18 01:05:13 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jul 18 01:05:13 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
Jul 18 01:05:13 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.
Jul 18 01:05:13 localhost.localdomain systemd[1]: httpd.service failed.

[ 나의 해결방법 ]
vhost.conf 설정파일에 문제가 있어서 발생하는 경우가 있다. 예를 들어 잘못된 키워드가 있다던가 특수 문자가 편집중에 입력이 되었을 경우.


[root@localhost ~]# systemctl -l status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2018-01-10 12:34:48 JST; 5min ago
     Docs: man:httpd.service(8)
  Process: 27702 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 27702 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."

Jan 10 12:34:48 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jan 10 12:34:48 localhost.localdomain httpd[27702]: AH00526: Syntax error on line 31 of /etc/httpd/conf.d/php.conf:
Jan 10 12:34:48 localhost.localdomain httpd[27702]: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration
Jan 10 12:34:48 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 10 12:34:48 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
Jan 10 12:34:48 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.
Jan 10 12:34:48 localhost.localdomain systemd[1]: httpd.service failed.

[ 나의 해결방법 ]
php 5.4 를 php 7.1 로 업그레이드후 문제 해결됨



8-3. 부팅시 Apache 자동시작
[root@localhost ~]# systemctl enable httpd


8-4. APM 설치된 경우 재실행할때
[root@localhost ~]# /etc/init.d/apachectl restart


9. 웹브라우저에서 접속 확인하기
먼저 웹브라우저에서 확인할 테스트 페이지를 만들어 봅니다.
[root@localhost ~]# vi /home/your_domain/public_html/test.php
echo '<?php
echo __FILE__;
phpinfo();
?>' >> /home/your_domain/public_html/test.php

웹브라우저에서 서버 IP 뒤에 /test.php 를 덧붙여서, http://192.168.0.1/test.php 형식의 주소로 접속해 봅니다.


9-1. Apache 퍼미션 문제 발생할때
Forbidden
You don't have permission to access /index.html on this server.
해결방법 : http://www.happyjung.com/lecture/2481


관련자료
http://aeac.tistory.com/23 
https://httpd.apache.org/docs/2.4/ko/vhosts/name-based.html 
http://ellordnet.tistory.com/79 
https://www.server-world.info/en/note?os=CentOS_7&p=httpd&f=6 
http://serverworld.kr/584 
  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


Total 107건 1 페이지
기술자료 목록
번호 제목
107 Linux
106 Linux
[CentOS 7] 방화벽 firewall-cmd 설치 실행 ( write. 2018-01-30 ) Hit.1589
105 Linux
-bash: ftp: command not found ( write. 2018-01-09 ) Hit.1387
104 Linux
[FreeTDS] TDS(Tabular Data Stream) ( update. 2017-12-07 07:03 ) Hit.863
103 Linux
SED 명령어 사용법 ( write. 2017-12-03 ) Hit.972
102 Linux
101 Linux
100 Linux
cannot execute binary file 에러가 날 때 ( update. 2017-11-21 03:00 ) Hit.2087
99 Linux
[MSSQL] FreeTDS Yum 간단 설치 방법 ( write. 2017-10-31 ) Hit.1380
98 Linux
97 Linux
[Backup.2] 리눅스 백업 1.0 ( update. 2017-10-30 23:05 ) Hit.1193
96 Linux
95 Linux
리눅스 예약 실행 스케줄러 crontab ( update. 2017-08-26 ) Hit.1656
94 Linux
[CentOS] unzip 사용하기 ( write. 2017-08-11 ) Hit.1569
93 Linux
92 Linux
91 Linux
90 Linux
89 Linux
[CentOS 6.8] Let’s encrypt 설치 및 운용 ( write. 2017-03-22 ) Hit.3544
88 Linux
87 Linux
86 Linux
VSFTP의 FTP를 위한 Port 변경 방법 ( update. 2018-01-30 16:22 ) Hit.3429
열람중 Linux
84 Linux
[CenOS 6.8] Apache 2.2.15 설치하기 ( write. 2017-02-24 ) Hit.2333
83 Linux
[CentOS 7] 서비스 실행 systemctl ( update. 2018-07-08 02:22 ) Hit.2857
게시물 검색

회원로그인

계좌이체 or 신용카드 결제하기
해피정닷컴으로 대금결제를 할 수 있습니다

접속자집계

오늘
1,058
어제
2,584
최대
3,174
전체
4,133,679

회사명: 해피정닷컴   사업자번호: 119-05-36414   전화: 070-7600-3500   팩스: 02-865-3528   주소: 08394 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
대표: 정창용   개인정보보호책임자: 정창용   통신판매업신고번호: 2014-서울구로-0074 [사업자등록정보확인]   건강기능식품영업신고번호 제2018-0080452호
Copyright 2001~2018 해피정닷컴. All Rights Reserved.