관리 메뉴

Jacob Baek's home

print local ip address and hostname using php on httpd 본문

Server/WebServer

print local ip address and hostname using php on httpd

jacobbaek Jacob_baek 2017. 4. 17. 10:50

APACHE

apache web server에 php를 이용하여 local ip 주소 및 hostname을 출력하는 방법

환경은 CentOS 7에 apache httpd 2.4.6, php 5.4.16 기반으로 진행했다.


우선 apache httpd web server를 설치한다.


yum install httpd 


이후 local ip address와 hostname을 출력하도록 해주는 php를 설치한다.


yum install php -y 


위 command를 이용해 설치를 하게 되면 httpd/conf.d/php.conf 가 자동으로 생성된다.

해당 파일에 아래와 같은 설정이 추가되어 있는지 확인한다.


<FilesMatch “\.php$”>

    SetHandler application/x-httpd-php

</FilesMatch>


위와 같은 설정이 자동으로 uncomment 되어 있다면 httpd를 재시작한다.


우선 php가 정상적으로 load 되었는지를 확인하기 위해 아래의 php파일을 생성한다.

vim /var/www/html/index.php

<?php

    phpinfo();

?>


phpinfo에 부합되는 내용이 정상출력됨을 확인하고 아래의 php code를 index.php에 추가한다.

<?php

    $hostname = getHostName();

    echo "<h1>hostname : $hostname</h1>";


    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    socket_connect($sock, "8.8.8.8", 53);

    socket_getsockname($sock, $ipaddr);

    echo "<h1>ip address : $ipaddr</h1><br>";

?>


이후 해당 web server에 접속하면 hostname과 ip address를 확인할 수 있다.

NGINX
만약 nginx 를 사용하는 경우는 다음과 같은 방법으로 진행한다.

기본적으로 php를 사용하기 위해 php-fpm을 설치해야 한다. centos 7 기반으로는 php5-fpm 가 아닌 php-fpm이 사용된다.
yum install php-fpm -y
systemctl enable php-fpm

/etc/php.ini에서 아래의 value를 0으로 변경
cgi.fix_pathinfo=0

/etc/php-fpm.d/www.conf에서 아래의 value들을 변경
listen = /var/run/php-fpm/php-fpm.sock
user = nginx
group = nginx
listen.owner = nobody
listen.group = nobody
listen.mode = 0666

/etc/nginx/nginx.conf (혹은 /etc/nginx/conf.d/custom.conf) 에서 location 을 server section에 추가
        location ~ \.php$ {
            #fastcgi_split_path_info ^(.+\.php)(/.+)$;
            #fastcgi_pass 127.0.0.1:9000;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

이후 apache에서 사용했던 php file을 추가한다.

<?php

    $hostname = getHostName();

    echo "<h1>hostname : $hostname</h1>";


    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    socket_connect($sock, "8.8.8.8", 53);

    socket_getsockname($sock, $ipaddr);

    echo "<h1>ip address : $ipaddr</h1><br>";

?>


마지막으로 서비스를 구동한다.
systemctl start php-fpm
systemctl restart nginx

참고사이트


'Server > WebServer' 카테고리의 다른 글

print local ip address and hostname using php on httpd  (0) 2017.04.17
Apache Traffic Server (ATS)  (0) 2014.04.29
apache httpd module  (0) 2012.04.03
0 Comments
댓글쓰기 폼