root로 로그인

# su - 


설치 되어 있는 커널 릴리즈 확인

# cat /etc/redhat-release


최신 버전 업그레이드

# yum update -y



######## Apache 설치 ########

yum 패키지 업데이트

# yum list updates && yum -y update 


의존성 라이브러리 설치

# yum -y install gcc gcc-c++ libtermcap* libtermcap-devel gdbm-devel zlib* libxml* freetype* libpng-* libjpeg* gd-*


apache 설치

# yum -y install httpd


httpd 서비스 확인

# systemctl status httpd


설치완료 되면 httpd 서비스가 inactive 되어있을텐데


httpd 서비스 실행

# systemctl start httpd 


재부팅시 자동으로 서비스 실행 명령어 입력해서 활성화 시켜줍니다.

# systemctl enable httpd.service 


httpd port 확인

/etc/httpd/conf/httpd.conf 파일안에 Listen 80


포트 변경되었을 경우

# systemctl restart httpd (아파치 재실행)

# systemctl restart firewalld (방화벽 재실행)


(CentOS 7 이전버전까지는 iptables 를 수정했엇는데 7부터는 기본방화벽이 firewall 명령어로 바뀌었기때문에 firewall 명령어로 적용해주시면됩니다. 

iptables 사용 하시려면 iptables-service 패키지 설치해주시고 systemctl stop firewalld / systemctl disable firewalld 명령어로 firewall 서비스 중지해주시면됩니다.)


방화벽에서 80포트 접속 허용

# firewall-cmd --permanent --zone=public --add-port=80/tcp 

# firewall-cmd --reload (방화벽 변경사항적용)

# firewall-cmd --list-all (방화벽 목록)


http://서버IP:포트 로 접속하여 화면이 잘 뜨면 아파치 설치 완료



########## PHP 7.1 ###########


PHP설치를 위해 repository 추가

IUS repo: 엔터프라이즈 환경을 위한 최신 버전의 Php, Python, Mysql 등 패키지를 제공


# curl 'https://setup.ius.io/' -o setup-ius.sh


ius 설치 스크립트 실행

# bash setup-ius.sh 


PHP7 설치


# yum -y install php71u php71u-pdo php71u-mysqlnd php71u-opcache php71u-xml php71u-mcrypt php71u-gd php71u-devel php71u-mysql php71u-intl php71u-mbstring php71u-bcmath php71u-json php71u-iconv


vim /etc/php.ini 


+ date.timezone = Asia/Seoul 

+ cgi.fix_pathinfo=0 

+ expose_php = Off



php가 잘 설치되었는지 php정보를 확인하고 싶으시면 웹서버 기본경로인 /var/www/html/ 안에 

phpinfo.php 파일 생성해주시면됩니다.


# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php


httpd.conf 수정

# vi /etc/httpd/conf/httpd.conf


<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>


AddType text/html .shtml

AddOutputFilter INCLUDES .shtml

AddType application/x-httpd-php .html .htm .php .inc

AddType application/x-httpd-php-source .phps


# systemctl restart httpd


[원본글 : http://cafe.naver.com/iloveuljin/2222]

 

1. 순서도 기호

 


 

2. 순서도 작성 방법

 

2.1 순서도는 시작단말기호에서 시작하여 끝(종료) 단말기호로 마침(시작, 종료 단말기호내 알고리즘 명칭 기재)

2.2 기호와 기호사이에는 흐름선으로 연결

2.3 흐름선의 방향은 위에서 아래로, 왼쪽에서 오른쪽으로 그린다.(순환구조(LOOP)등 특별한 경우는 예외)

2.4 흐름선은 최대한 서로 교차하지 않게 한다.(흐름선 합류시 결합기호를 이용)

2.5 순서도 작업과정이 길거나 복잡시 여러 페이지로 나누어 그리고 연결자로 연결함

2.6 값을 보관하고 처리하기 위해서는 변수를 사용 - 처리기호내 배열 표현 등 (예) A(10)



순서도에 대한 이해

 

 


 

 l      알고리즘

    • 문제를 해결하기 위하여 수행할 일련의 작업들을 명확하게 단계별로 구성한 절차
    • 알고리즘 작성 절차


 

             

 l              순서도

    • 설계한 알고리즘을 객관적이며 쉽게 표현하고 이해하기 위하여 기호를 사용하여 나타낸 것
    • 컴퓨터를 이용하여 문제를 해결하기 위한 논리적 절차와 흐름처리 방법등을 기호로 도식화 한 것
    • 순서도의 종류
      • 시스템 순서도(system flow chart) : 일의 처리 과정을 전체적으로 상세하게 표현한 순서도
      • 프로그램 순서도(program flow chart) : 컴퓨터로 처리 가능한 부분을 단계적으로 표현한 순서도 (개략 순서도상세 순서도)

         

 

설치 되어 있는 커널 릴리즈 확인

$ cat /etc/redhat-release



최신 버전 업그레이드

$ yum udate -y



특정 버전으로 커널 업그레이드


예를 들어 커널 버전이 7.0.1406 인 CentOS 7 이 있다.

반드시 7.2.1511 커널 환경이어야 한다면?

그냥 yum update 를 하면 최신 버전으로 업그레이드 된다. (레포지토리가 자동으로 최신 버전에서 받아오기 때문)

그렇다면 7.2.1511 커널로 업그레이드 하려면 어떻게 해야 할까?

→ yum 레포지토리에 7.2.1511 미러사이트 주소를 적용시킨 후 업데이트 하면 된다.



$ cp -r /etc/yum.repos.d /etc/yum.repos.d_default


$ vi /etc/yum.repos.d/CentOS-Base.repo

[base]

baseurl=http://vault.centos.org/centos/7.2.1511/os/$basearch/

[updates]

baseurl=http://vault.centos.org/centos/7.2.1511/updates/$basearch/


(base 와 updates 쪽의 기존 mirrorlist= 와 baseurl= 부분을 주석처리 후 

위 7.2.1511 미러사이트의 주소로 대신한다.)


$ yum clean all


$ yum repolist


$ yum update -y



PHP Thread Safe, Non Thread Safe 방식의 차이

http://wookoa.tistory.com/45



PHP를 IIS 와 연동하지 않는다면 Thread Safe version 으로 설치



PHP 설치

http://kiwinote.tistory.com/76


http://blog.naver.com/pmh7862/221026027728


Jenkins 를 이용한 테스트 자동화 환경 구축

http://genycho.blog.me/221030068487



Jenkins PHP 서버 배포 (rsync, shell script)

http://blog.naver.com/eevee3000/220889632041

PHP 메뉴얼

http://php.net/manual/kr/index.php

header 함수

 

1. 정의

 

? 개념

  - 가공하지 않은 HTTP 헤더를 송신.

아무런 처리를 하지 않은(raw) HTTP 헤더를 송신하기 위해 사용.

- HTML 파일의 최상단에서 HTTP 헤더 문자열을 protocol level에서 데이터를 브라우저로 직접 전송할 수 있도록 함.

 

? 정의

void header(string $string [, bool $replace = true [, int $http_response_code ]] )

  - string : 송신하는 HTTP status 코드를 표시하거나 브라우저를 리다이렉트할 문자열.

  - replace : 이전에 송신된 비슷한 헤더를 바꿀지 또는 같은 형식의 두번째 헤더를 추가할지를 지정.

  - http_response_code : HTTP response 코드를 강제적으로 지정.

 

? 특징

  - HTML 태그 및 PHP 와는 상관없이 실제의 출력 이전에 호출되어야 함.

  - header() 함수 위에 include()  require() 함수를 선언할 수 있는데 읽어 들이는 코드의 결과에 스페이스나 빈 줄이

    있으면 에러 발생.

 

? 파라미터

  ? string

    ? HTTP status 코드를 표시

      ? 특징

        - 문자열 “HTTP/”로 시작하는 모든 헤더. (대소문자 구분 없음.)

        - 송신하는 HTTP status 코드를 표시하기 위해 사용.

      ? 예제

<?php

  header(“HTTP/1.0 404 Not Found”);

?>

    ? 브라우저 리다이렉트

      ? 특징

        - “Location:” 헤더.

        - 브라우저를 리다이렉트하며브라우저에게 REDIRECT (302) status 코드를 돌려줌.

          (3xx status 코드가 이미 송신되어 있지 않은 경우만)

      ? 예제

<?php

header(“Location:http://www.naver.com”);

// 리다이렉트 후이 밑으로는 실행 안됨.

exit;

?>

  ? replace

    ? 특징

      - 옵션 사항.

      - 헤더가 이전에 송신된 비슷한 헤더를 바꿀지 또는 같은 형식의 두 번째 헤더를 추가할지를 지정.

      - 디폴트 값은 true.

      - false인 경우 같은 타입의 복수 헤더를 강제적으로 생성.

    ? 예제

<?php

header(“WWW-Authenticate: Negotiate”);

header(“WWW-Authenticate: NTLM”, false);

?>

  ? http_response_code

    ? 특징

      - HTTP response 코드를 강제적으로 지정.

      - 리턴하지는 않음.

 

 

2. header() 함수를 사용할 때 흔히 발생하는 에러

 

? header() 이전에 출력 함수 사용

<?

echo(“연습삼아\n”); // header() 함수 전에 출력함수를 사용하면 안됨.

header(…….);

?>

 

? header() 이전에 공백 존재

<?

  // 이곳에 공백(white space)이 있으면 안됨.

header(……);

?>

// 이곳에 공백(white space)이 있으면 안됨.

<?

  header(……);

?>

 

 

3. 예제

 

? 강제적으로 캐시 무효화

  - PHP 스크립트는 자주 동적으로 HTML을 생성하여야 하는데이러한 경우에는 서버와 클라이언트 브라우저 사이에 있는

    브라우저 캐시 또는 프록시 캐시에 의해 캐싱되어서는 안됨.

<?

header(“Cache-Control: no-cache”);

header(“Pragma:no-cache”);

?>

// 혹은

header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”); // 과거의 날짜

header(“Last-Modified: “ . gmdate(“D, d M Y H:i:s”) . “GMT”); // 항상 변경됨.

header(“Cache-Control: no-cache, must-revalidate”); // HTTP/1.1

header(“Pragma: no-cache”); // HTTP/1.0

 

? 다운로드

  - 다운로드 다이얼로그 PDF 파일을 생성한 경우 해당 파일을 다운로드할지를 확인하는 대화창을 표시.

  - Content-Disposition 헤더를 사용하여 파일명을 지정하면 브라우저에서 대화창을 표시 가능.

<?php

  // PDF 출력.

header(“Content-type : application/pdf”);

// downloaded.pdf 라는 이름으로 저장.

header(‘Content-Disposition : attachment; filename=”downloaded.pdf”’);

// 원래 PDF 소스는 original.pdf

readfile(‘original.pdf’);

?>

 

? 현재 디렉토리의 다른 페이지로 리다이렉트

<?php

$host = $_SERVER[‘HTTP_HOST’];

$uri = rtrim(dirname($_SERVER[‘PHP_SELF’]), ‘/\\’);

$extra = ‘mypage.php’;

 

header(“Location: http://$host$uri/$extra”);

 

exit;

?>

 

? 80 기본 포트가 아닌 다른 포트로 넘기기

<?

if($_SERVER[“SERVER_PORT”] == “80”)  // 코드 최상단에 삽입.

{

  header(“Location : http://www.naver.com:8080/”);

}

?>

 

? charset utf-8 변경

<?php

  header(“Content-Type : text/html; charset=UTF-8”);

?>

 

 

4. 참고 자료

http://breakpoint.tistory.com/141

http://aine.iegate.net/bbs/board.php?bo_table=plus03&wr_id=264&page=2

http://www.webdoor.org/xe/?mid=phpclass_cachelimiter&sort_index=title&order_type=desc&document_srl=1297

 


출처 : http://blog.naver.com/chocolleto?Redirect=Log&logNo=30099672894


//iframe 제거

 $STRING = preg_replace("!<iframe(.*?)<\/iframe>!is","",$STRING);
 

 //script 제거

 $STRING = preg_replace("!<script(.*?)<\/script>!is","",$STRING);
 

 //meta 제거

 $STRING = preg_replace("!<meta(.*?)>!is","",$STRING); 
 

 //style 태그 제거

 $STRING = preg_replace("!<style(.*?)<\/style>!is","",$STRING); 
 

 //&nbsp;를 공백으로 변환

 $STRING = str_replace("&nbsp;"," ",$STRING);
 

 //연속된 공백 1개로

 $STRING = preg_replace("/\s{2,}/"," ",$STRING);
 

 //태그안에 style= 속성 제거

 $STRING = preg_replace("/ style=([^\"\']+) /"," ",$STRING); // style=border:0... 따옴표가 없을때
 
$STRING = preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$STRING); // style="border:0..." 따옴표 있을때
 

 //태그안의 width=, height= 속성 제거

 $STRING = preg_replace("/ width=(\"|\')?\d+(\"|\')?/","",$STRING);
 $STRING = preg_replace("/ height=(\"|\')?\d+(\"|\')?/","",$STRING);
 

 //img 태그 추출 src 추출

 preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);
 preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);

  • 현재 접속중인 도메인 $HTTP_HOST -> $_SERVER['HTTP_HOST'];
  • 현재 접속중인 도메인 $_SERVER['SERVER_NAME'];
  • 현재 접속중인 파일명 $PHP_SELF -> $_SERVER['PHP_SELF'];
  • 현재 접속중인 절대경로와 파일명 $_SERVER['SCRIPT_FILENAME'];
  • 도메인제외 경로/파일명/GET변수 정보 $_SERVER['REQUEST_URI'];
  • 사이트의 서버상 절대경로 $_SERVER['DOCUMENT_ROOT'];
  • 현재 접속중인 파일의 실제 경로 $_SERVER['APPL_PHYSICAL_PATH']; //드라이브
  • 세션정보 $HTTP_SESSION_VARS -> $_SESSION;
  • 쿠키정보 $HTTP_COOKIE_VARS -> $_COOKIE;
  • 모든 쿠키 정보 $HTTP_COOKIE;
  • 접속자(클라이언트) IP정보 $REMOTE_ADDR -> $_SERVER['REMOTE_ADDR'];
  • 접속자(클라이언트) 사용자환경 $HTTP_USER_AGENT -> $_SERVER['HTTP_USER_AGENT'];
  • 폼에서 넘기는 파일정보 $HTTP_POST_FILES -> $_FILES;
  • 폼에서 넘기는 GET정보 $HTTP_GET_VARS -> $_GET;
  • 폼에서 넘겨진 변수의 방식이 POST/GET 확인 $REQUEST_METHOD;
  • 폼에서 넘기는 변수 정보 $QUERY_STRING;
  • 현재 사이트의 서버환경 $_SERVER['SERVER_SOFTWARE'];
  • 서버 프로토콜 $_SERVER['SERVER_PROTOCOL'];
  • 서버 어드민 정보 $SERVER_ADMIN
  • 설정 인코딩 방식 $_SERVER['HTTP_ACCEPT_ENCODEING'];
  • 설정 언어 $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  • 사이트가 사용하는 포트 $_SERVER['SERVER_PORT'];
  • CGI 정보 $_SERVER['GATEWAY_INTERFACE'];

  • Codeigniter 한국사용자 포럼

    http://codeigniter-kr.org/


    Codeigniter 한글 메뉴얼

    http://www.ciboard.co.kr/user_guide/kr/general/welcome.html

    + Recent posts