[CentOS 6.8 / 7.3] Apache VirtualHost (가상호스트) 추가 > 기술자료 | 해피정닷컴

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

본문 바로가기

사이트 내 전체검색

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

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

페이지 정보


본문

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


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


2-2. 사용자 확인 및 추가
https://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


5. 아파치 버전 확인
[root@localhost ~]# httpd -v
Server version: Apache/2.4.41 (codeit)
Server built:   Sep 23 2019 13:56:55



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

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

1. httpd 설정
[root@localhost ~]# ls /var/log  를 해서 httpd 폴더 존재 여부 확인해서 없으면
[root@localhost ~]# mkdir /var/log/httpd  로 생성해줍니다.


1-1. httpd.conf 설정 
[root@localhost ~]# vi /usr/local/apache/conf/httpd.conf  <- APM 설치일때는 여기
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf  <- yum 설치일때는 여기
<Directory />
    AllowOverride none
    Require all denied
</Directory>

를 아래와 같이 변경

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



1-2. httpd.conf 설정 : 폴더를 보이지 않도록 설정변경
    Options FollowSymLinks

를 아래와 같이 변경

    Options Indexes FollowSymLinks



1-3. httpd.conf 설정 : php 실행확장자 추가
[root@localhost ~]# vi /etc/httpd/conf/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



2. vhost.conf 생성
[root@localhost ~]# vi /etc/httpd/conf/vhost.conf
<VirtualHost *:80>
        ServerAdmin     ***@domain.com
        DocumentRoot    /home/test/public_html
        ServerName      domain.com
        ServerAlias      test.domain.com

        ErrorLog        /home/test/_log/error.log
        CustomLog       /home/test/_log/access.log combined

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


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

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

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



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

4-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포트가 정상적으로 접근되지 않음을 알 수 있습니다.



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


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



4-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: 



5. Apache 웹서버를 재시작

5-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.


5-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 로 업그레이드후 문제 해결됨



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


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


6. 웹브라우저에서 접속 확인하기
먼저 웹브라우저에서 확인할 테스트 페이지를 만들어 봅니다.
[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 형식의 주소로 접속해 봅니다.


6-1. Apache 퍼미션 문제 발생할때
Forbidden
You don't have permission to access /index.html on this server.
해결방법 : https://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 
http://funyphp.com/archive/linux/18



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

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

1-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>


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


3. 웹브라우저에서 접속 확인하기
먼저 웹브라우저에서 확인할 테스트 페이지를 만들어 봅니다.
[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 

 

댓글목록

등록된 댓글이 없습니다.


Total 124건 3 페이지
  • RSS
기술자료 목록
열람
Linux   57386  2017-02-24 19:55 ~ 2019-12-24 00:35  
83
Linux   16226  2017-02-24 13:32  
82
Linux   16214  2017-02-23 19:22 ~ 2018-07-08 02:22  
81
Linux   11172  2017-02-22 23:57  
80
Linux   12903  2017-02-22 23:43 ~ 2019-01-21 06:47  
79
Linux   14391  2015-03-30 15:42  
78
Linux   14508  2012-12-29 10:47  
77
Linux   16464  2012-12-28 22:42  
76
Linux   19428  2012-12-28 21:49  
75
Linux   22789  2012-12-28 13:40  
74
Linux   15084  2012-12-28 12:40  
73
Linux   14968  2012-12-28 12:34  
72
Linux   15315  2012-12-28 12:29  
71
Linux   14210  2012-12-11 22:45 ~ 2012-12-11 00:00  
70
Linux   21287  2012-12-11 22:16  
69
Linux   17350  2012-12-11 22:10  
68
Linux   17611  2012-05-23 13:05  
67
Linux   22098  2012-05-22 23:28 ~ 2012-05-23 00:00  
66
Linux   18296  2012-03-02 18:38  
65
Linux   15284  2010-12-16 23:55 ~ 2018-01-09 14:09  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.