해당 내용을 기준으로 리눅스에서 설정한다.

 

Subnet IP:         192.168.164.0

Subnet Mask:    255.255.255.0

Gateway IP:       192.168.164.2

 

1. vi /etc/sysconfig/network-scripts/ifcfg-eth0

처음 설치시 설정된 값 

 

DEVICE=eth0

HWADDR=XX:XX:XX:XX:XX:XX

TYPE=Ethernet

UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

ONBOOT=no

NM_CONTROLLED=yes

BOOTPROTO=dhcp

 

수정된 값

DEVICE=eth0

HWADDR=XX:XX:XX:XX:XX:XX

TYPE=Ethernet

UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=dhcp

BROADCAST=192.168.164.255

IPADDR=192.168.164.100

NETMASK=255.255.255.0

NETWORK=192.168.164.0

GATEWAY=192.168.164.2


BROADCAST는 마지막에 255를 넣어주면 되고 IPADDR은 3~255까지 원하는 숫자를 적어준다.

GATEWAY, NETMASK,, NETWORK는 위에서 구한 값을 적어주면 된다.


2. vi /etc/resolv.conf

nameserver 192.168.164.2


게이트웨이 아이피를 써주도록한다.


모든 설정이 끝났으니 네트워크 재시작


/etc/init.d/network restart

 

혹은

 

service network restart

 

 

해당 내용은 http://dgoh.tistory.com/78 포스트를 참고 하였습니다.



출처: http://chule.tistory.com/77 [ChulE]

1. 원하는 크기만큼 (현재 :1000byte )읽는 방법
: 크기를 지정했기 때문에 딱 그만큼만 읽습니다. 
- 문자열이 그보다 작다면 다 읽을 것이요, 크면 짤릴 것이오~

$fp = fopen("document.txt","r");
$fr = fread($fp,1000);
fclose($fp);
echo $fr;

2. 1번보다는 유동적으로 사이즈크기를 통해 읽는 방법
: 딱 해당 파일의 문자열 크기만큼 읽기 때문에 좋은 방법입니다.

$fp = fopen("document.txt","r");
$fr = fread($fp, filesize("document.txt"));
fclose($fp);
echo $fr;

3. 한 글자씩 읽는 방법
: fgetc() 함수를 통해 한 글자씩 읽습니다.


$fp = fopen("document.txt","r");
while( !feof($fp) )
fclose($fp);
echo $doc_data;


4. 한 라인씩 읽는 방법
fgets() 함수를 통해 한 라인씩 읽습니다. 


$fp = fopen("document.txt","r");
while( !feof($fp) )
    $doc_data = fgets($fp);
fclose($fp);
echo $doc_data;


5. implode 함수를 사용해서 읽는 방법

implode함수는 주어진 배열을 문자열로 반환해주는 함수입니다.

string implode ( array $pieces )
string implode ( string $glue , array $pieces 

저희는 연결문자($glue)를 공백으로 했기때문에 공백없이 그대로~  문자열로 반환합니다. 
+ 정반대의 기능을 가진 explode함수도 있습니다.
array explode ( string $delimiter , string $string [, int $limit ] )


$doc = file("document.txt");
$doc_data = implode("", $doc);
echo $doc_data;


6. join 함수를 사용해서 읽는 방법
join 함수는 5.에서 사용한 implude 함수의 별칭입니다. 
$doc_data = join('', file("document.txt"));
echo $doc_data;




1 ~ 4 번의 방법은 fopen() 함수( 파일이나 URL을 여는 함수입니다. )를 통해서 파일을 열고,
fread(), fgetc(), fgets() 함수들을 통해서 파일을 읽는 방법으로 다른 언어와 마찬가지로.....
open이 있으면 close는 필수인 거 다 아시죠? 



출처: http://winplz.tistory.com/entry/PHP파일-읽기 [윈플]

RHEL 7 부터는 방화벽을 관리하는 데몬이 firewalld 로 변경되었고 방화벽 설정은 복잡한 iptables 명령어대신 firewall-cmd (콘솔), firewall-config(X-Windows) 명령어를 사용하는 것을 권장합니다.

firewall-cmd 는 iptables 를 쓰기 쉽게 하는 wrapper 이고 복잡한 규칙을 사용할 경우 --direct 옵션으로 iptables 내부에 접근해야 합니다.

    설치

    yum install firewalld
    systemctl start firewalld
    systemctl enable firewalld


    설정

    설정 파일

    기본 설정은 /usr/lib/firewalld/ 에 위치하고 있으며 미리 설정된 zone과 zone 별 허용하는 서비스등은 이 폴더를 보면 확인할 수 있습니다.


    시스템 개별 설정은 /etc/firewalld/ 에 위치하며 default zone 등 firewall 의 동작은 /etc/firewalld/firewalld.conf 에서 지정할 수 있으며 예로 default zone 을 dmz로 변경하려면 아래와 같이 설정하고 firewalld 를 재시작하면 됩니다.

    /etc/firewalld/firewalld.conf
    DefaultZone=dmz


    커스터마이징된 zone 설정은 /etc/firewalld/zones//[ZONE].xml 에서 확인할 수 있으며 예로 public 존은 /etc/firewalld/zones/public.xml 에 설정합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>Public</short>
      <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accept
    ed.</description>
      <service name="dhcpv6-client"/>
      <service name="http"/>
      <service name="ssh"/>
      <service name="https"/>
    </zone>


    재구동

    서비스 재구동시 service iptables restart 대신 firewall-cmd 명령어를 사용합니다.

    firewall-cmd --reload


    zone

    존은 서버의 용도에 맞게 사전에 정의된 네트워크의 신뢰 레벨을 의미.


    사전 정의된 존 목록 출력

    firewall-cmd --get-zones
     
     
    work drop internal external trusted home dmz public block


    전체 존 목록을 상세하게 출력

    firewall-cmd --list-all-zones


    기본 존 출력

    default 로 설정된 존 출력

    firewall-cmd --get-default-zone
     
     
    public


    활성화된 존 출력

    firewall-cmd --get-active-zone


    새로운 존 추가

    --new-zone=ZONENAME 으로 추가

    firewall-cmd --permanent --new-zone=webserver


    존 삭제

    --delete-zone=ZONENAME 으로 삭제

    firewall-cmd --permanent --delete-zone=webserver



    서비스 목록

    사전에 정의된 서비스의 목록은 --get-services 으로 확인 가능

    firewall-cmd --get-services
     
     
    RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https

    permanent 로 등록된 서비스 목록

    dmz 존에 영구적으로 등록된 서비스 목록 확인
    firewall-cmd --permanent --list-all --zone=dmz


    서비스 추가

    --add-service=SERVICE_NAME 으로 추가할 서비스 지정

    firewall-cmd --permanent --zone=dmz --add-service=http

    서비스 삭제

    --remove-service=SERVICE_NAME 으로 삭제할 서비스 지정

    firewall-cmd --permanent --zone=dmz --remove-service=http

    포트 추가

    --add-port=<portid>[-<portid>]/<protocol> 옵션을 사용하여 포트 추가

    포트 추가/변경, IP 추가/변경는 --reload 옵션을 실행해야 반영됨.

    firewall-cmd --permanent --zone=public --add-port=8080/tcp

    포트를 범위로 지정하려면 - 구분자를 넣어서 설정

    4000 ~ 4100 포트 오픈
    firewall-cmd --permanent --zone=public --add-port=4000-4100/tcp


    포트 삭제

    --remove-port=<portid>[-<portid>]/<protocol> 옵션 사용

    firewall-cmd --permanent --zone=public --remove-port=8080/tcp

    허용 IP 추가

    --add-source=<source range>/netmask 옵션을 사용하여 IP 추가


    아래 예는 192.168.1. 대역에서 ssh 접근을 허용

    firewall-cmd --permanent --zone=public --add-source=192.168.1.0/24 --add-port=22/tcp
     
     
    firewall-cmd --reload

    rich-rule

    보다 복잡한 규칙 설정이 필요할때나 firewall-cmd에서 필요로 하는 옵션을 제공하지 않을 경우 rich rule 언어를 사용하여 직접 방화벽 규칙을 설정할 수 있음.

    새로운 룰 추가는 --add-rich-rule='<rule>' 와 같은 형식으로 설정


    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4"  source address="192.168.10.0/24"  port protocol="tcp" port="9000" accept"



    direct

    --direct 옵션을 사용하면 기존의 iptables 명령처럼 직접 방화벽 내부에 접근해서 설정할 수 있음

    $ sudo firewall-cmd  --direct --get-all-rules
     
    ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable



    firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE


    서비스 설정

    웹 서버 방화벽 설정

    1. 새로운 zone 생성

      firewall-cmd --permanent --new-zone=webserver
    2. 활성화

      firewall-cmd --set-default-zone=webserver
    3. 방화벽에 포트 추가

      firewall-cmd --permanent --zone=webserver --add-service=http
      firewall-cmd --permanent --zone=webserver --add-service=https

      기본 zone이 webserver 이므로 --zone=webserver 옵션은 생략 가능

    4. firewalld 재시작

      firewall-cmd --reload
    5. 정상 설정 여부 확인

      firewall-cmd --list-services   --zone=webserver
        
      dhcpv6-client http https ssh

    apache 웹서버 설정

    1. 서비스 활성화

      systemctl enable httpd
    2. 서비스 시작

      systemctl start httpd

    nginx 설정

    1. 기존에 아파치 httpd 가 설치되어 있으면 비활성화

      systemctl stop httpd
      systemctl disable httpd
    2. 서비스 활성화

      systemctl enable nginx.service
    3. 시작

      systemctl start nginx.service



    ※ 출처 : https://www.lesstif.com/pages/viewpage.action?pageId=22053128#RHEL/CentOS7%EC%97%90%EC%84%9C%EB%B0%A9%ED%99%94%EB%B2%BD(firewalld)%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-permanent%EB%A1%9C%EB%93%B1%EB%A1%9D%EB%90%9C%EC%84%9C%EB%B9%84%EC%8A%A4%EB%AA%A9%EB%A1%9D

    SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널이고 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소이다.

    특정 서비스가 SELinux 때문에 동작하지 않는다면 SELinux 를 끄기 보다는 해당 서비스가 SELinux 하에서 잘 동작하도록 설정을 수정하는걸 권장한다.

    SELinux 동작 모드

    enforce, permissive, disable 세 가지 모드가 있으며 RHEL/CentOS 를 설치하면 default 로 enforce mode 로 동작하며 SELinux 의 rule 에 어긋나는 operation 은 거부된다.

    현재 SELinux 의 동작 모드는 sestatus 명령어로 확인할 수 있다.

    SELinux 모드 확인
    # sestatus
     
    SELinux status: enabled
    SELinuxfs mount: /selinux
    Current mode: enforcing
    Mode from config file: enforcing
    Policy version: 24
    Policy from config file: targeted

    Permissive mode 는 rule 에 어긋나는 동작이 있을 경우 audit log 를 남기고 해당 operation 은 허용된다.

    개발 서버일 경우 특정 daemon 이나 서비스에 문제가 있을 경우 setenforce 0 으로 Permissive mode 로 전환하여 문제 해결후 enforce mode 로 전환하는걸 추천한다.

    # setenforce 0
    # sestatus
     
    SELinux status: enabled
    SELinuxfs mount: /selinux
    Current mode: permissive
    Mode from config file: enforcing
    Policy version: 24
    Policy from config file: targeted


    SELinux 해제

    • 인터넷에 연결된 리눅스 서버라면 SELinux 해제는 결코 추천하지 않는다.
    • 해제할 경우 다시 활성화 시키려면 재부팅이 필요하며 재부팅시 모든 자원에 대해 보안 레이블을 설정해야 하므로 부팅 시간이 매우 오래 걸릴 수 있다.
    1.  vi /etc/sysconfig/selinux
    2. SELINUX=enforcing 을 SELINUX=disabled 로 변경후 저장한다.
    3. reboot

    ※ 출처 : https://www.lesstif.com/pages/viewpage.action?pageId=6979732



    ■ CentOS 7 64bit [제가포스팅한 설치이후 환경에서 작업]

    ■ kernel 4.9 [저는 최신 커널에서 작업합니다. 기존커널에서 작업하셔도 됩니다]

    ■ APM [Apache 2.4.x 이상 버전이 설치된 환경입니다. 버전은 달라도 작동방식은 거의 대부분 비슷합니다]

    ■ 일부 설정이나 경로가 다를수 있습니다. 실서버가 아닌 VMware 환경에서 작업이 이루어집니다.


    가상호스트 (virtual host)란?


    기본적으로 웹서버에 존재하는 주 호스트 즉 예로 (aaa.com) 이라는 도메인을 등록하여 사용하고 있지만 추가적으로 한서버에 (bbb.com) / (ccc.com) 등 여러도메인을 등록하여 사용한다는 의미입니다. 가상호스트에도 여러종류의 방면으로 운용을 할수 있지만 일반적으로 하나의 컴퓨터(서버)나 IP로여러 이름의 도메인으로 각각 운용할수 있다는 부분입니다.


     일반적인 웹서버 (서버 3대)

     가상호스트 웹서버 (서버 1대)

     aaa.com (IP : 111.111.111.111)

     aaa.com (IP : 111.111.111.111)

     bbb.com (IP : 222.222.222.222)

     bbb.com (IP : 111.111.111.111)

     ccc.com (IP : 333.333.333.333)

     ccc.com (IP : 111.111.111.111)

    이러한 가상 호스트서버를 이용하여 제한된 공간안에서 여러개의 홈페이지를 제공해주는 서비스가 (웹,메일 등) 호스팅 서비스 입니다. 


    그럼 지금부터 서버한대에 여러 도메인을 등록하는 방법을 알아보겠습니다.

    ■  Apache - 가상호스트(httpd.conf) 설정

    1. httpd.conf 파일을 열어 추가 수정

    BASH

    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf

    .

    . (맨 아래라인에 추가 / 이미 있다면 # 주석제거)


    356 NameVirtualHost *:80 ( 추가 / Apache 2.4.x 이상이므로 해당 버전에서는 추가 안해도 됩니다. ) 357 358 include /etc/httpd/conf/vhost.conf (추가)

    359 360 <Directory "/home"> (추가) 361 AllowOverride None 362 Require all granted 363 </Directory>


    :wq (저장)

    [참고]


    ■ NameVirtualHost *:80

    이름 기반의 가상호스트(도메인별) 사용하겠다는 뜻입니다.


    추가내용(2017-02-27)

    Apache 2.4.x 이상버전에서 [NameVirtualHost *:80] 옵션을 넣을시 아래와 같은 문구가 발생하는데요.

    AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:356

    문제는 없습니다. 다만 이상버전에서는 사용선언을 안해도 적용되게끔 변경이 된건데... 어쩐지 처음 httpd.conf 설정파일에 없었던 이유가 있었네요.

    다음 릴리즈에서는 해당 오류 메세지를 없앤다고하니 무시하셔도 되는 로그 입니다. 신경이 쓰인다면 지우는것을 권고합니다.


    Apache 2.4.x 이하버전에서는 꼭  해주시기 바랍니다.


    ■ include /etc/httpd/conf/vhost.conf

    httpd.conf 안에 바로 설정하여도 되지만 여러개의 도메인을 등록하여 관리를 하실려고 하신다면 별도의 파일을 만들어 관리하시는게 좋습니다.

    (Yum으로 설치한 아파치는 샘플파일이 없기때문에 직접 생성하여 등록을 진행해야 합니다.)

    Source 직접 설치하였다면 일반적인 경로는 ../apache/conf/extra/httpd-vhosts.conf 혹은 vhost.conf 샘플파일이 있습니다.


    ■ <Directory "경로" , Require all granted> 추가

    /home 경로에 도메인을 소스 업로드 및 홈페이지 테스트 불러올수 있게 디렉토리 접근 권한을 허용해야 합니다. 

    만약 하지 않으면 다음과 같이 페이지 접근 할 수 없다는 에러페이지가 뜨실겁니다.

    [Thu Feb 23 15:48:06.717299 2017] [authz_core:error] [pid 4172] [client 192.168.223.1:55533] AH01630: client denied by server configuration


     Apache 2.4 버전 이상일 경우

     Apache 2.4 버전 이하일 경우

     <Directory "/디렉토리 경로">

       AllowOverride None

       Require all granted

    </Directory>

     <Directory "/디렉토리 경로">

       AllowOverride None

       Order allow,deny

       Allow from all

    </Directory>


    와 같이 셋팅하시면 됩니다.


    2. vhost.conf 파일 생성 및 설정

    BASH

    [root@localhost ~]# vi /etc/httpd/conf/vhost.conf


    ############### webtest11.com Start ############### <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/test ServerName webtest11.com ServerAlias www.webtest11.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> ############### webtest11.com End ################# ############### webtest22.com Start ############### <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/test2 ServerName webtest22.com ServerAlias www.webtest22.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> ############### webtest11.com End #################


    :wq (저장)

    [참고]


    ■ 잘모르겠다면 그대로 전체 복사하여 저장 및 진행하시면 됩니다.


    ■ 각 설정 의미 (아래 호스트하나가 한 셋트입니다 / # 주석처리는 선택사항입니다, 없어도 됩니다. )

    <VirtualHost *:80>

      #    ServerAdmin webmaster@dummy-host.example.com  ← 서버관리자(임의로 설정)

            DocumentRoot /home/test                       ← 홈디렉토리

            ServerName webtest11.com                       ← 연결할도메인(DNS설정이랑 같게해야함)

            ServerAlias www.webtest11.com                ← 연결할도메인(다른 도메인, DNS설정이랑 같게해야함)

      #    ErrorLog logs/dummy-host.example.com-error_log                     ← 에러로그(선택사항)

      #    CustomLog logs/dummy-host.example.com-access_log common   ← 접속로그(선택사항)

     </VirtualHost>


    3. 홈페이지 경로(DocumentRoot) 및 테스트 페이지 생성

    BASH

    [root@localhost ~]# mkdir /home/test (DocumentRoot 경로 생성) [root@localhost ~]# mkdir /home/test2 (DocumentRoot 경로 생성)

    BASH

    [root@localhost ~]# vi /home/test/index.html (test할 페이지 생성)

    webtest11.com Test page! <br/> If you see this screen, it is good setting!


    :wq (저장)

    BASH

    [root@localhost ~]# vi /home/test2/index.html (test2할 페이지 생성)

    webtest22.com Test page! <br/> If you see this screen, it is good setting!


    :wq (저장)

    BASH

    [root@localhost ~]# chmod -R 755 test (읽기 쓰기 권한 부여)

    [root@localhost ~]# chmod -R 755 test2 (읽기 쓰기 권한 부여)


    [root@localhost ~]# ls -al /home (권한 변경 및 생성 확인)

    .

    .

    drwxr-xr-x (권한 확인) 2 root root 4096 2??23 16:36 test drwxr-xr-x (권한 확인) 2 root root 4096 2??23 16:38 test2



    4. 아파치(Apache) 재시작 적용

    BASH

    [root@localhost ~]# systemctl restart httpd

    [root@localhost ~]# ps -ef | grep httpd

    root 4517 1 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4519 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4520 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4521 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4522 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4523 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 4525 2195 0 16:45 pts/0 00:00:00 grep --color=auto httpd

    ■  실전테스트(웹 페이지 연결)

    원래는 홈페이지를 연결하기위해서는 실제 도메인을 네임서버에 A레코드를 연결해야하지만 현재는 도메인이 존재하지 않기때문에 본인PC 에서 강제로 호스트를 지정하여 홈페이지를 연결하는 방법을 알려드리도록 하겠습니다. 해당 방법을 알고 있다면 굳이 호스팅업체에 맡길필요없이 홈페이지 소스를 업로드 하여 페이지가 정상적으로 뜨는지를 확인 및 테스트할수 있습니다.


    1. 개인PC (hosts 파일 수정)

    경로 : C:\Windows\System32\drivers\etc

    (경로는 Windows 7, Windows 8.1, Windows 10 버전 동일합니다.)



    [다음]



    [만약 저장시 권한이 없다고 뜬다면 백신프로그램에 의해 보호 받고 있는지 확인 OFF 진행]




    2. 연결 테스트


    명령 프롬프트를 통해 PING 테스트를 확인합니다.



    최종적으로 실제 브라우저를 통해 홈페이지가 정상적으로 연결이 되는지 확인해 봅니다.



    위와같이 페이지가 보인다면 정상적으로 가상 호스트 설정이 완료가 되었습니다.

    ※ 이는 자기 PC에서만 확인 가능한방법입니다. [혹은 공유기가 연결된 같은 사설(내부)네트워크]


    렇게 가상호스트설정을 적절하게 잘 이용한다면 한서버에 여러개의 홈페이지를 셋팅하여 이용할수 있으며 호스팅 비용을 절약할수 있는 효과를 볼수 있습니다. 그리고 한서버에 업로드를 하기때문에 관리차원에서도 편합니다.


    이렇게 가상호스트에 대해서 알아보았는데요. 최대한 쉽게 전달하기위해 모든 테스트 화면을 직접 보여드리지만 이마저도 어렵게 느껴지는 분들이 있을수 있습니다. 책이나 매뉴얼을 만드는 저자분들은 대단하다고 생각이 듭니다.


    ※ 출처 : http://aeac.tistory.com/23

    '프로그래밍 > linux' 카테고리의 다른 글

    RHEL/CentOS 7 에서 방화벽(firewalld) 설정하기  (0) 2018.03.08
    CentOS SELinux 설정 및 해제하기  (0) 2018.03.08
    CentOS 7 웹서버 구축 [APM] - YUM설치  (0) 2018.03.08
    SVN 명령어  (0) 2018.03.02
    용량확인  (0) 2018.03.02

    ◇ [설치환경]

    ■ 릴리즈 설치 테스트 갱신 : 2017년 2월 19일


    ■ CentOS 7 64bit [제가포스팅한 설치이후 환경에서 작업]

    ■ kernel 4.9 [저는 최신 커널에서 작업합니다. 기존커널에서 작업하셔도 됩니다]

    ■ 일부 설정이나 경로가 다를수 있습니다. 실서버가 아닌 VMware 환경에서 작업이 이루어집니다.

     이전에 포스팅한 내용과 비슷하지만 이번에는 Apache2.4(유지), PHP7, MariaDB 10 최신버전으로 진행합니다.


    웹서버 구축을 하기위해 APM [Apache, Mysql(Maria), PHP] 3개의 패키지가 설치가 되야합니다.

    웹을 개발할려는 환경에따라 버전에 맞게 RPM(소스파일로 설치)하는게 좋지만 크게 영향을 받지 않는다면 일반적으로 YUM(자동설치)으로 쉽게 설치할수 있습니다. (Source 으로 설치하는건 나중에 따로 포스팅하도록 하겠습니다.)


    시작합니다.


    ■ [APM] Apache, PHP7, MariaDB 10.1 Install(설치) Guide


    1. 의존성 라이브러리 설치


    □ 아래는 라이브러리가 설치되어있는지 확인해보는 부분이며 APM에 꼭 필요한 패키지가 있습니다.

    BASH

    [root@localhost ~]# rpm -qa libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel


    libpng-1.5.13-7.el7_2.x86_64 gcc-c++-4.8.5-11.el7.x86_64 freetype-2.4.11-12.el7.x86_64 libjpeg-turbo-1.2.90-5.el7.x86_64 libpng12-1.2.50-10.el7.x86_64 gcc-4.8.5-11.el7.x86_64

    □ Yum 으로 아래의 필요한 라이브러리를 한번에 전부 설치합니다. (한번에 관련된 의존성도 같이 설치가 됩니다.)

    BASH

    [root@localhost ~]# yum install libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel


    .

    .

    ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: freetype-demos x86_64 2.4.11-12.el7 base 183 k freetype-devel x86_64 2.4.11-12.el7 base 356 k gd x86_64 2.0.35-26.el7 base 146 k gd-devel x86_64 2.0.35-26.el7 base 79 k gd-progs x86_64 2.0.35-26.el7 base 36 k gdbm-devel x86_64 1.10-8.el7 base 47 k libjpeg-turbo-devel x86_64 1.2.90-5.el7 base 98 k libjpeg-turbo-static x86_64 1.2.90-5.el7 base 120 k libjpeg-turbo-utils x86_64 1.2.90-5.el7 base 76 k libpng-devel x86_64 2:1.5.13-7.el7_2 base 122 k libpng-static x86_64 2:1.5.13-7.el7_2 base 92 k libpng12-devel x86_64 1.2.50-10.el7 base 111 k ncurses-devel x86_64 5.9-13.20130511.el7 base 713 k Installing for dependencies: expat-devel x86_64 2.1.0-10.el7_3 updates 57 k fontconfig-devel x86_64 2.10.95-10.el7 base 128 k libICE x86_64 1.0.9-2.el7 base 65 k libSM x86_64 1.2.2-2.el7 base 39 k libX11-devel x86_64 1.6.3-3.el7 base 980 k libXau-devel x86_64 1.0.8-2.1.el7 base 14 k libXpm x86_64 3.5.11-3.el7 base 54 k libXpm-devel x86_64 3.5.11-3.el7 base 36 k libXt x86_64 1.1.4-6.1.el7 base 173 k libxcb-devel x86_64 1.11-4.el7 base 1.1 M xorg-x11-proto-devel noarch 7.7-13.el7 base 281 k zlib-devel x86_64 1.2.7-17.el7 base 50 k Transaction Summary ======================================================================================================== Install 13 Packages (+12 Dependent packages) Total download size: 5.0 M Installed size: 14 M Is this ok [y/d/N]:y


    .

    .


    Installed: freetype-demos.x86_64 0:2.4.11-12.el7 freetype-devel.x86_64 0:2.4.11-12.el7 gd.x86_64 0:2.0.35-26.el7 gd-devel.x86_64 0:2.0.35-26.el7 gd-progs.x86_64 0:2.0.35-26.el7 gdbm-devel.x86_64 0:1.10-8.el7 libjpeg-turbo-devel.x86_64 0:1.2.90-5.el7 libjpeg-turbo-static.x86_64 0:1.2.90-5.el7 libjpeg-turbo-utils.x86_64 0:1.2.90-5.el7 libpng-devel.x86_64 2:1.5.13-7.el7_2 libpng-static.x86_64 2:1.5.13-7.el7_2 libpng12-devel.x86_64 0:1.2.50-10.el7 ncurses-devel.x86_64 0:5.9-13.20130511.el7 Dependency Installed: expat-devel.x86_64 0:2.1.0-10.el7_3 fontconfig-devel.x86_64 0:2.10.95-10.el7 libICE.x86_64 0:1.0.9-2.el7 libSM.x86_64 0:1.2.2-2.el7 libX11-devel.x86_64 0:1.6.3-3.el7 libXau-devel.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.11-3.el7 libXpm-devel.x86_64 0:3.5.11-3.el7 libXt.x86_64 0:1.1.4-6.1.el7 libxcb-devel.x86_64 0:1.11-4.el7 xorg-x11-proto-devel.noarch 0:7.7-13.el7 zlib-devel.x86_64 0:1.2.7-17.el7 Complete!


    2. [APM] Apache, PHP, MariaDB 설치 [순서는 : Apache, Maria, PHP 진행]



    □ 아파치(Apache 2.4) 설치

    BASH

    [root@localhost ~]# yum install httpd


    .

    .

    ======================================================================================================= Package Arch Version Repository Size ======================================================================================================== Installing: httpd x86_64 2.4.6-45.el7.centos base 2.7 M Installing for dependencies: httpd-tools x86_64 2.4.6-45.el7.centos base 84 k mailcap noarch 2.1.41-2.el7 base 31 k Transaction Summary ======================================================================================================== Install 1 Package (+2 Dependent packages) Total download size: 2.8 M Installed size: 9.6 M Is this ok [y/d/N]: y

    .

    .

    Installed: httpd.x86_64 0:2.4.6-45.el7.centos Dependency Installed: httpd-tools.x86_64 0:2.4.6-45.el7.centos mailcap.noarch 0:2.1.41-2.el7 Complete!


    □ 마리아(Maria DB 10.1) 설치


    기존의 Yum 으로 설치할경우는 Maria DB 5.5 버전이 설치가 됩니다. 

    최신버전으로 설치할경우 Yum 미러경로를 직접지정해야 합니다.


    배포사이트 : http://mariadb.org/

    버전별 셋팅방법 : http://downloads.mariadb.org/mariadb/repositories/


    먼저 Yum 저장소 생성

    BASH

    [root@localhost ~]# vi /etc/yum.repos.d/MariaDB.repo


    # MariaDB 10.1 CentOS repository list # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1


    :wq (저장)

    이후 설치 진행

    BASH

    [root@localhost ~]# yum install MariaDB-server MariaDB-client


    .

    .

    ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: MariaDB-client x86_64 10.1.21-1.el7.centos mariadb 39 M MariaDB-server x86_64 10.1.21-1.el7.centos mariadb 101 M MariaDB-shared x86_64 10.1.21-1.el7.centos mariadb 1.3 M replacing mariadb-libs.x86_64 1:5.5.52-1.el7 Installing for dependencies: MariaDB-common x86_64 10.1.21-1.el7.centos mariadb 43 k boost-program-options x86_64 1.53.0-26.el7 base 156 k galera x86_64 25.3.19-1.rhel7.el7.centos mariadb 8.0 M jemalloc x86_64 3.6.0-1.el7 mariadb 104 k lsof x86_64 4.87-4.el7 base 331 k perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-DBI x86_64 1.627-4.el7 base 802 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-Net-Daemon noarch 0.48-5.el7 base 51 k perl-PlRPC noarch 0.2020-14.el7 base 36 k Transaction Summary ======================================================================================================================== Install 3 Packages (+11 Dependent packages) Total download size: 151 M Is this ok [y/d/N]: y


    .

    .


    Total 1.7 MB/s | 151 MB 00:01:28 Retrieving key from https://yum.mariadb.org/RPM-GPG-KEY-MariaDB Importing GPG key 0x1BB943DB: Userid : "MariaDB Package Signing Key <package-signing-key@mariadb.org>" Fingerprint: 1993 69e5 404b d5fc 7d2f e43b cbcb 082a 1bb9 43db From : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB Is this ok [y/N]: y


    .

    .


    Installed: MariaDB-client.x86_64 0:10.1.21-1.el7.centos MariaDB-server.x86_64 0:10.1.21-1.el7.centos MariaDB-shared.x86_64 0:10.1.21-1.el7.centos Dependency Installed: MariaDB-common.x86_64 0:10.1.21-1.el7.centos boost-program-options.x86_64 0:1.53.0-26.el7 galera.x86_64 0:25.3.19-1.rhel7.el7.centos jemalloc.x86_64 0:3.6.0-1.el7 lsof.x86_64 0:4.87-4.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBI.x86_64 0:1.627-4.el7 perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 Replaced: mariadb-libs.x86_64 1:5.5.52-1.el7 Complete!


    □ PHP 7 설치


    PHP 역시 기존의 Yum 으로 설치할경우는 PHP 5.4 버전이 설치가 됩니다. 

    최신버전으로 설치하기위해 Webtatic EL 저장소를 추가합니다.


    버전별 참고사이트  : https://webtatic.com/projects/yum-repository/


    먼저 Yum 저장소 생성

    BASH

    [root@localhost ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm [root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


    이후 설치

    BASH

    [root@localhost ~]# yum install php70w


    .

    .

    ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: php70w x86_64 7.0.15-1.w7 webtatic 2.8 M Installing for dependencies: php70w-cli x86_64 7.0.15-1.w7 webtatic 2.9 M php70w-common x86_64 7.0.15-1.w7 webtatic 1.2 M Transaction Summary ======================================================================================================================== Install 1 Package (+2 Dependent packages) Total download size: 6.9 M Installed size: 27 M Is this ok [y/d/N]: y


    .

    .

    Total 1.2 MB/s | 6.9 MB 00:00:05 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-webtatic-el7 Importing GPG key 0x62E74CA5: Userid : "Webtatic EL7 <rpms@webtatic.com>" Fingerprint: 830d b159 6d9b 9b01 99dc 24a3 e87f d236 62e7 4ca5 Package : webtatic-release-7-3.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-webtatic-el7

    Is this ok [y/N]: y


    .

    .

    Installed: php70w.x86_64 0:7.0.15-1.w7 Dependency Installed: php70w-cli.x86_64 0:7.0.15-1.w7 php70w-common.x86_64 0:7.0.15-1.w7 Complete!

    관련 PHP7 패키지 설치 (자주 쓰이는것을 골라봤습니다.)

    BASH

    [root@localhost ~]# yum install php70w-mysql php70w-pdo php70w-pgsql php70w-odbc php70w-mbstring php70w-mcrypt php70w-gd [root@localhost ~]# yum install php70w-pear php70w-pdo_dblib php70w-pecl-imagick php70w-pecl-imagick-devel php70w-xml php70w-xmlrpc


    .

    .

    ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: php70w-gd x86_64 7.0.15-1.w7 webtatic 136 k php70w-mbstring x86_64 7.0.15-1.w7 webtatic 542 k php70w-mcrypt x86_64 7.0.15-1.w7 webtatic 26 k php70w-mysql x86_64 7.0.15-1.w7 webtatic 83 k php70w-odbc x86_64 7.0.15-1.w7 webtatic 51 k php70w-pdo x86_64 7.0.15-1.w7 webtatic 91 k php70w-pdo_dblib x86_64 7.0.15-1.w7 webtatic 20 k php70w-pear noarch 1:1.10.1-1.w7 webtatic 337 k php70w-pecl-imagick x86_64 3.4.2-0.1.w7 webtatic 128 k php70w-pecl-imagick-devel x86_64 3.4.2-0.1.w7 webtatic 5.0 k php70w-pgsql x86_64 7.0.15-1.w7 webtatic 89 k php70w-xml x86_64 7.0.15-1.w7 webtatic 129 k php70w-xmlrpc x86_64 7.0.15-1.w7 webtatic 48 k Installing for dependencies: ImageMagick x86_64 6.7.8.9-15.el7_2 base 2.1 M OpenEXR-libs x86_64 1.7.1-7.el7 base 217 k freetds x86_64 0.95.81-1.el7 epel 635 k ghostscript x86_64 9.07-20.el7_3.1 updates 4.3 M ghostscript-fonts noarch 5.50-32.el7 base 324 k ilmbase x86_64 1.0.3-7.el7 base 100 k lcms2 x86_64 2.6-3.el7 base 150 k libXfont x86_64 1.5.1-2.el7 base 150 k libfontenc x86_64 1.1.2-3.el7 base 30 k libmcrypt x86_64 2.5.8-13.el7 epel 99 k librsvg2 x86_64 2.39.0-1.el7 base 123 k libtool-ltdl x86_64 2.4.2-21.el7_2 base 49 k libwmf-lite x86_64 0.2.8.4-41.el7_1 base 66 k libxslt x86_64 1.1.28-5.el7 base 242 k pcre-devel x86_64 8.32-15.el7_2.1 base 479 k php70w-devel x86_64 7.0.15-1.w7 webtatic 2.5 M php70w-process x86_64 7.0.15-1.w7 webtatic 41 k poppler-data noarch 0.4.6-3.el7 base 2.2 M postgresql-libs x86_64 9.2.18-1.el7 base 232 k unixODBC x86_64 2.3.1-11.el7 base 413 k urw-fonts noarch 2.4-16.el7 base 3.0 M xorg-x11-font-utils x86_64 1:7.5-20.el7 base 87 k Transaction Summary ======================================================================================================================== Install 13 Packages (+22 Dependent packages) Total download size: 19 M Installed size: 73 M Is this ok [y/d/N]: y


    .

    .

    Total 3.8 MB/s | 19 MB 00:00:05 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-9.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Is this ok [y/N]: y


    .

    .

    Installed: php70w-gd.x86_64 0:7.0.15-1.w7 php70w-mbstring.x86_64 0:7.0.15-1.w7 php70w-mcrypt.x86_64 0:7.0.15-1.w7 php70w-mysql.x86_64 0:7.0.15-1.w7 php70w-odbc.x86_64 0:7.0.15-1.w7 php70w-pdo.x86_64 0:7.0.15-1.w7 php70w-pdo_dblib.x86_64 0:7.0.15-1.w7 php70w-pear.noarch 1:1.10.1-1.w7 php70w-pecl-imagick.x86_64 0:3.4.2-0.1.w7 php70w-pecl-imagick-devel.x86_64 0:3.4.2-0.1.w7 php70w-pgsql.x86_64 0:7.0.15-1.w7 php70w-xml.x86_64 0:7.0.15-1.w7 php70w-xmlrpc.x86_64 0:7.0.15-1.w7 Dependency Installed: ImageMagick.x86_64 0:6.7.8.9-15.el7_2 OpenEXR-libs.x86_64 0:1.7.1-7.el7 freetds.x86_64 0:0.95.81-1.el7 ghostscript.x86_64 0:9.07-20.el7_3.1 ghostscript-fonts.noarch 0:5.50-32.el7 ilmbase.x86_64 0:1.0.3-7.el7 lcms2.x86_64 0:2.6-3.el7 libXfont.x86_64 0:1.5.1-2.el7 libfontenc.x86_64 0:1.1.2-3.el7 libmcrypt.x86_64 0:2.5.8-13.el7 librsvg2.x86_64 0:2.39.0-1.el7 libtool-ltdl.x86_64 0:2.4.2-21.el7_2 libwmf-lite.x86_64 0:0.2.8.4-41.el7_1 libxslt.x86_64 0:1.1.28-5.el7 pcre-devel.x86_64 0:8.32-15.el7_2.1 php70w-devel.x86_64 0:7.0.15-1.w7 php70w-process.x86_64 0:7.0.15-1.w7 poppler-data.noarch 0:0.4.6-3.el7 postgresql-libs.x86_64 0:9.2.18-1.el7 unixODBC.x86_64 0:2.3.1-11.el7 urw-fonts.noarch 0:2.4-16.el7 xorg-x11-font-utils.x86_64 1:7.5-20.el7 Complete!

    [참고사항]

    다음 명령어로 php7 관련 패키지 설치할수 있는 리스트들을 확인할수 있습니다. 

    위 설치외에 필요한 패키지가 있다면 추가로 설치하면 됩니다.

    BASH

    [root@localhost ~]# yum search php70w


    .

    .

    ================================================= N/S matched: php70w ================================================== php70w.x86_64 : PHP scripting language for creating dynamic web sites php70w-bcmath.x86_64 : A module for PHP applications for using the bcmath library php70w-cli.x86_64 : Command-line interface for PHP php70w-common.x86_64 : Common files for PHP php70w-dba.x86_64 : A database abstraction layer module for PHP applications

    .

    .

    php70w-tidy.x86_64 : Standard PHP module provides tidy library support php70w-xml.x86_64 : A module for PHP applications which use XML php70w-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol Name and summary matches only, use "search all" for everything.


    □ 설치 확인 및 버전확인

    BASH

    root@localhost ~]# httpd -v


    Server version: Apache/2.4.6 (CentOS) Server built: Nov 14 2016 18:04:44

    BASH

    [root@localhost ~]# php -v


    PHP 7.0.15 (cli) (built: Jan 19 2017 21:35:05) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

    BASH

    root@localhost ~]# mysql -V


    mysql Ver 15.1 Distrib 10.1.21-MariaDB, for Linux (x86_64) using readline 5.1


    아래부터는 설정 동일합니다.

    ■ [APM] Apache, PHP, MariaDB config(설정) 및 구동

    1. 아파치(Apache) 설정 및 구동


    □ 기본설정

    BASH

    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf


    .

    .

    62 # User/Group: The name (or #number) of the user/group to run httpd as. 63 # It is usually good practice to create a dedicated user and group for 64 # running httpd, as with most system services. 65 # 66 User nobody (apache → nobody 변경) 67 Group nobody (apache → nobody 변경)

    .

    .

    93 # If your host doesn't have a registered DNS name, enter its IP address here. 94 # 95 #ServerName www.example.com:80

    96 ServerName 192.168.122.128:80 (도메인 또는 해당서버 IP 입력 추가)

    .

    .


    :wq (저장)

    [참고]


    ■ apache → nobody 변경

    ROOT 권한으로 실행된 아파치의 하위 프로세스를 이곳에서 지정한 사용자로 실행한다는 의미, 

    기본값으로 apache 또는 daemon 으로 되어있지만 대부분 nobody로 변경하여 이용한다. 약간 보안적인 의미를 포함


    ■ ServerName

    자기 서버가 이 도메인을 사용한다는것을 알리기 위한 수단, 예를 들어

    ServerName www.test.com:80 → 홈페이지 접속시 해당 도메인(http://www.test.com)으로 연결

    ServerName 192.168.122.128:80 → 홈페이지 접속시 해당 도메인((http://192.168.122.128)으로 연결 (도메인이 없을경우 IP 입력)


    ■ IP는 자기서버 IP 셋팅

    [root@localhost ~]# ifconfig

    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

            inet 192.168.223.129 (이부분)  netmask 255.255.255.0  broadcast 192.168.223.255



    □ 방화벽 설정


    환경설정이 완료가 되었으니 웹을 열기위해선 방화벽 80번 포트를 오픈해야합니다.

    BASH

    [root@localhost ~]# vi /etc/sysconfig/iptables


    # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT (추가) -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT



    :wq (저장)

    [참고]


    ■ iptables 에서 순서는 매우 중요합니다. 일반적으로 적용되는 순서는 위에서부터 아래로 순차적으로 읽어옵니다.

    예를들어 추가한 맨 아래의 라인쪽에 추가를 하게되면 적용이 정상적으로 안됩니다. 이해가 안되실경우는 스크린샷 그대로 따라진행해주세요. 나중에 별도로 iptables 설명을 하도록 하겠습니다.



    □ 방화벽 재시작

    BASH

    [root@localhost ~]# service iptables restart

    Redirecting to /bin/systemctl restart iptables.service

    □ 적용 확인

    BASH

    [root@localhost ~]# iptables -nL


    Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 (확인완료) REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination

    □ 아파치 시작

    BASH

    [root@localhost ~]# systemctl start httpd


    부팅후 자동 실행 설정

    [root@localhost ~]# systemctl enable httpd

    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.


    팅후 자동 실행 설정(해제)

    [root@localhost ~]# systemctl disable httpd Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.


    Service 명령어 이용 가능

    [root@localhost ~]# service httpd start(stop)

    □ 아파치 구동 확인

    BASH

    [root@localhost ~]# ps -ef |grep httpd


    root 17652 1 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 17654 17652 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 17655 17652 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 17656 17652 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 17657 17652 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 17658 17652 0 13:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 17715 2983 0 13:51 pts/1 00:00:00 grep --color=auto httpd

    □ 실제 웹 구동 테스트 확인



    2. PHP 환경설정 및 구동(경로)


    □ 기본설정

    BASH

    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf

    .

    .

    161 # DirectoryIndex: sets the file that Apache will serve if a directory 162 # is requested. 163 # 164 <IfModule dir_module> 165 DirectoryIndex index.html index.htm index.php (추가) 166 </IfModule>

    .

    .

    270 # AddType allows you to add to or override the MIME configuration 271 # file specified in TypesConfig for specific file types. 272 # 273 #AddType application/x-gzip .tgz 274 AddType application/x-httpd-php .php .html .htm .inc (추가)

    275 AddType application/x-httpd-php-source .phps (추가)


    :wq (저장)

    [참고]


    ■ 실제 PHP환경설정을 관리하는 파일은 아래의 경로입니다.

    [root@localhost ~]# vi /etc/php.ini


    위 httpd.conf 쪽에 셋팅하는건 아파치에 php 관련 처리를 할수 있게 추가를 하는 부분입니다. 

    php.ini 파일설정은 사용할려는 웹환경에 맞게튜닝을 해야하지만 현재는 기본셋팅으로 갑니다. 나중에 따로 설명하도록 하겠습니다.



    □ PHP 적용


    Yum 설치시 html 업로드 기본 디렉토리는 아래와 같습니다.

    BASH

    [root@localhost ~]# cd /var/www/html/



    해당 경로에서 PHP의 정보를 보여주는 함수의 파일을 하나 생성합니다.

    BASH

    [root@localhost html]# vi /var/www/html/phpinfo.php


    <?php phpinfo(); ?> :wq (저장) [root@localhost html]# ls (파일생성 확인) phpinfo.php

    PHP 환경설정을 적용하기위해 아파치(Apache)도 한번 재시작을 합니다.

    BASH

    [root@localhost html]# service httpd restart

    Redirecting to /bin/systemctl restart httpd.service

    항상 아파치(Apache) 구동이 제대로 되고 있는지 확인합니다.

    BASH

    [root@localhost html]# ps -ef | grep httpd


    root 18135 1 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 18137 18135 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 18138 18135 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 18139 18135 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 18140 18135 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 18141 18135 0 16:57 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 18143 2983 0 16:58 pts/1 00:00:00 grep --color=auto httpd

    □ PHP 적용 확인 테스트


    개인 PC에서 인터넷창에 접속 테스트를 진행하면 됩니다.

    이전 경로에 생성하였던 경로를 입렵합니다. URL : http://192.168.223.129/phpinfo.php



    3. Maria DB 구동 및 설정


    □ Maria DB 구동 및 구동 확인

    BASH

    [root@localhost ~]# systemctl start mariadb


    [root@localhost ~]# ps -ef | grep mysql mysql 41093 1 1 19:48 ? 00:00:00 /usr/sbin/mysqld root 41130 11663 0 19:49 pts/1 00:00:00 grep --color=auto mysql

    □ Maria DB 기본설정 (DB가 구동된 상태에서 진행가능)

    BASH

    [root@localhost ~]# mysql_secure_installation


    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): 패스워드가 없기때문에 엔터


    OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y (DB ROOT 패스워드 설정) New password: 패스워드입력 Re-enter new password: 재확인 패스워드입력 Password updated successfully! Reloading privilege tables.. ... Success!


    By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y (익명의 접근을 막을것인지? 보안을 위해 Y 엔터) ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y (DB ROOT 원격을 막을것인지? 보안을 위해 Y 엔터)

    ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y (Test 용으로 생성된 데이터베이스를 삭제할것인가? Y 엔터)

    - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately.


    Reload privilege tables now? [Y/n] Y (현재 설정한 값을 적용할것인지? 당연히 Y 엔터)

    ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! (끝)

    □ Maria DB 최종 접속 확인

    BASH

    [root@localhost ~]# mysql -u root -p Enter password: 패스워드 입력


    Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.1.21-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

    [참고]


    Maria(Mysql) 환경설정을 관리하는 파일은 아래의 경로입니다.

    [root@localhost ~]# vi /etc/my.cnf


    my.cnf 파일설정은 사용할려는 DB환경에 맞게 튜닝을 해야하지만 현재는 기본셋팅으로 갑니다. 나중에 따로 설명하도록 하겠습니다.



    이상 위에 순서대로 웹구축만하여도 웹서버를 구동하는데에는 크게 문제가 없습니다. 만약 직접 웹홈페이지 개발을 한다면 충분히 연습할수 있는 공간을 만들수 있을것으로 보입니다.



    ※ 출처 : http://aeac.tistory.com/21


    '프로그래밍 > linux' 카테고리의 다른 글

    CentOS SELinux 설정 및 해제하기  (0) 2018.03.08
    Linux Apache - 가상호스트설정(Apache virtual host)  (1) 2018.03.08
    SVN 명령어  (0) 2018.03.02
    용량확인  (0) 2018.03.02
    netstat 옵션  (0) 2018.03.02
    	
    
    	function doFunction(callback){
    	    // doFunction 에서 실행 될 내용들
    	    var a = 1;
    	    var b = 1;
    	    var c = a + b;
    	     
    	    alert('doFunction 에서 실행 될 내용이 실행된다.');
    	 
    	 
    	    // doFunction 에서 실행 될 내용들이 다 실행 된 후 인자값으로 받은 callback을 실행한다.
    	    // 넘겨받은 callback이 함수이기 때문에 실행 가능.
    	    // 이때 c 값을 인자값으로 넘겨준다.
    	    if(typeof callback === 'function') {
    				alert('doFunction 를 call한다.');
    	        callback(c);
    	    }
    	 
    	}
    
    	// 먼저 doFunction을 실행 시키고 callback 함수에 의해 function 안의 내용이 실행된다.
    	doFunction(function(msg){
     
    	    // doFunction 함수의 호출에 의해서 실행된다.
    	    // 인자값으로 받은 c값을 msg 로 받는다.
    	    alert('callback 함수의 실행 될 내용');
    	    alert('c 의 값은? ' + msg);
    	});
    
    

    '프로그래밍 > javascript' 카테고리의 다른 글

    JQuery 노드찾기  (0) 2018.04.17
    [jQuery] 속성, 내용, 스타일, 데이터 조회 및 변경  (0) 2018.04.05
    클로저 간단예제  (0) 2018.03.06
    js 캡쳐  (0) 2018.03.05
    highcharts 예제  (0) 2018.03.05
    
    	function celebrityID() {
    	    var celebrityID = 999;
    	    // 우리는 몇개의 내부 함수를 가진 객체를 리턴할것입니다.
    	    // 모든 내부함수는 외부변수에 접근할 수 있습니다.
    	    return {
    	        getID: function() {
    	            // 이 내부함수는 갱신된 celebrityID변수를 리턴합니다.
    	            // 이것은 changeThdID함수가 값을 변경한 이후에도 celebrityID의 현재값을 리턴합니다.
    	            return celebrityID;
    	        },
    	        setID: function(theNewID) {
    	            // 이 내부함수는 외부함수의 값을 언제든지 변경할 것입니다.
    	            celebrityID = theNewID;
    	        }
    	    }
    	}
    	var mjID = celebrityID(); // 이 시점에, celebrityID외부 함수가 리턴됩니다.
    	mjID.getID(); // 999
    	mjID.setID(567); // 외부함수의 변수를 변경합니다.
    	mjID.getID(); // 567; 변경된 celebrityID변수를 리턴합니다.
    
    
    	var mjID2 = celebrityID(); // 이 시점에, celebrityID외부 함수가 리턴됩니다.
    	mjID2.setID(888);
    
    	console.log( mjID2.getID() ) ;
    	console.log( mjID.getID() ) ;
    
    

    '프로그래밍 > javascript' 카테고리의 다른 글

    [jQuery] 속성, 내용, 스타일, 데이터 조회 및 변경  (0) 2018.04.05
    callback 간단예제  (0) 2018.03.06
    js 캡쳐  (0) 2018.03.05
    highcharts 예제  (0) 2018.03.05
    jQuery ajax  (0) 2018.02.28

    html2canvas.js



    
    	
    
    
    
    /* 여기내용이 찍혀용 */

    '프로그래밍 > javascript' 카테고리의 다른 글

    callback 간단예제  (0) 2018.03.06
    클로저 간단예제  (0) 2018.03.06
    highcharts 예제  (0) 2018.03.05
    jQuery ajax  (0) 2018.02.28
    jQuery 정리  (0) 2018.02.28
    
    
    
    
    
    
    샘플소스 : http://www.highcharts.com/demo/line-basic


    '프로그래밍 > javascript' 카테고리의 다른 글

    callback 간단예제  (0) 2018.03.06
    클로저 간단예제  (0) 2018.03.06
    js 캡쳐  (0) 2018.03.05
    jQuery ajax  (0) 2018.02.28
    jQuery 정리  (0) 2018.02.28

    + Recent posts