Tag Archives: php

Ubuntu 18.04 LTS 에서 웹서버(Apache + PHP + MySQL) 구성하기

HYEONG HWAN, MUN/ 9월 10, 2018/ 미분류/ 18 comments

이 글에서는 Ubuntu 18.04 LTS 운영체제에 Apache + PHP + MySQL 소프트웨어를 설치하고 구성하는 방법에 대해 설명합니다. Ubuntu 9.04 버전부터 10년째 설치 방법 글을 작성/유지보수 하고 있는데, 그동안 별 문제가 없었고 설치 성공 후기 글이 많으니 올바르게 설명하고 있는 것 같습니다. 혹시라도, 구축 중 문의사항이 생기면 댓글이나 Contact 로 알려주세요. 일반 사업체 및 실무 서비스에서 사용할 수 있는 안정적인 구축 방법을 설명 하겠습니다. 이 글에서는 Ubuntu 18.04 LTS 운영체제를 사용합니다. * LTS 버전이란? Long Term Support 의 약자입니다. 개발사에서 10년간의 유지보수, 업데이트를 제공합니다. 현재 무료 리눅스 배포판 중에서 10년 업데이트를 지원하는 운영체제는 Ubuntu 뿐입니다. * 왜 10년 업데이트? Kiosk나 기타 Embeded 기기에서 제품설계 및 구축 운용까지 몇년(1~4년)이 걸립니다. 제품 출시 후 얼마지나지 않아 운영체제의 업데이트가 중단된다면 문제가 생기겠죠. 요즘에는 응용소프트웨어 분야에서도 이와 같이 LTS…

한번에 끝내는 AWS Amazon Linux 웹서버세팅 (아마존리눅스 서버세팅)

HYEONG HWAN, MUN/ 12월 17, 2017/ 미분류/ 10 comments

리눅스라는 컴퓨터 운영체제가 있습니다. GPLv2 를 따르며 오픈소스이며, 매우 오래된 역사를 가지고 있습니다. 오랜 시간을 통해 검증이 된 운영체제이죠. 리눅스의 파생 운영체제로는 Ubuntu, Debian, CentOS, Fedora, Amazon Linux, Android, AIX, Redhat 등이 있습니다. Ubuntu, Debian 는 데비안 계열의 운영체제이며 최신기술의 빠른 적용과 자동화가 특징인 운영체제입니다. CentOS, Fedora, Amazon Linux, Android, AIX, Redhat 은 CentOS 계열이라고 하는데, 이 운영체제들 끼리는 명령어 및 폴더의 구조가 비슷합니다. CentOS 및 Fedora 는 무료 오픈소스인데, 최신기술 적용이 심각하게 느립니다. Redhat 은 유료 운영체제입니다. 1년에 120만원쯤 사용료가 있습니다. Android 는 모바일 운영체제입니다. AIX 는 IBM 서버에서만 쓸 수 있는 운영체제입니다. Amazon Linux 는 Amazon Web Service 에서만 쓸 수 있는 운영체제입니다.   패키지 업데이트가 엄청나게 느린 CentOS 와는 다르게, Amazon Linux 가  최신 소프트웨어 설치를 제공하므로,…

NGINX Gzip 설정하기

HYEONG HWAN, MUN/ 12월 16, 2017/ 미분류/ 6 comments

* GZIP 이란? Gzip 은 GNU zip 의 줄임말이며 리눅스/유닉스 시스템에서 널리쓰이는 압축 소프트웨어 이다. 웹서버 통신을 할 떄 데이터를 gzip 압축하여 전송하면 속도가 더 빨라진다. * gzip 사용 안할 경우 : [서버에서 HTML 데이터 전송] -> [클라이언트 브라우저가 표시] * gzip 을 사용할 경우 : [서버에서 HTML 데이터를 압축 후 전송] -> [클라이언트 브라우저가 압축을 풀고 표시] gzip 을 사용할 경우, 웹서버와 클라이언트(브라우저)의 CPU 사용량이 약간 늘어난다. 요즘 서버나 PC의 경우 충분히 고사양이기 때문에 gzip cpu 사용량은 무시해도 된다.(0.1% 미만) 압축 전송이기 때문에 전송속도가 빨라지고 , 트래픽량이 줄어든다. 특히, 국가간 트래픽이나 느린 인터넷 환경에서, 속도가 빨라진 것을 크게 느낄 수 있다. 너무 작은 파일은 그냥 전송하는게 더 빠르고, 이미 충분히 압축된 파일은 gzip 을 해도 용량이 별로 안줄어들기 때문에…

[PHP] Access-Control-Allow-Origin Multiple Origin Domains

HYEONG HWAN, MUN/ 9월 30, 2016/ 미분류/ 0 comments

Code snippet 용도의 글이다.   이 코드를 사용하여 허용된 곳에서의 xhr 요청을 제어할 수 있다. 기본적으로 브라우저 보안정책 중 하나인 CORS(Cross-Origin Resource Sharing) 설정 상황에서 사용한다. 요청 응답할 부분에서 허용된 Origin 을 설정해주어야 한다.   Access-Control-Allow-Origin 값이 멀티도메인을 허용하지 않기 때문에, 이렇게 프로그램적으로 작성해 주어야 한다.  

PHP의 자료형(Data Type)과 자동형변환(Type Juggling) 알아보기

HYEONG HWAN, MUN/ 8월 31, 2015/ 미분류/ 0 comments

This tutorial is good! PHP Basics like Introduction, Installation Guide, Data Types, Variables, and Operators. It also introduces Control structures, Functions, Strings, Regular expression, Error Handling, Cookies & Sessions. This site also touch on advanced topics like PHP mail, MySQL Functions, Security, XML Parser, and Create PHP Application.   PHP Data Types, Variables, Constant, Operators Tutorial https://www.guru99.com/data-types-variables-and-operators.html   프로그래밍 언어의 조건 컴퓨터공학전공 4학년 교과과정 중에 Programming Language 라는 수업이 있다. 이 수업에서는 그동안 무심코 배워왔던 프로그래밍 언어의 역사와, 언어의 발명일, 영향을 받은 언어, 영향을 끼친 언어, 기본 정신, 주 응용분야 등을 배운다. 프로그래밍 언어의 조건과 Language Designer 의 역할에 대해서 배우고 직접 자신만의 언어 규칙을 정하고 어휘분석기(Lexer)와 구문분석기(Parser) 자료형검사기(Type Checker)를 만들어본다.   코드가 실행되기 까지 꽤나 다양한 단계가 있는데 각…

한번에 끝내는 CentOS 웹서버세팅 (센토스 서버세팅)

HYEONG HWAN, MUN/ 8월 3, 2015/ 미분류/ 42 comments

Last updated : 2016-11-08 CentOS 에서의 웹서버 구축 방법을 요청하셔서 작성해 봅니다. Ubuntu, CentOS, Fedora, ArchLinux 등에서 어떤 것이 가장 좋은 운영체제 일까요? 본인에게 편한 운영체제가 가장 좋습니다. (일방적으로 하나의 좋은 것이 있다면 다들 그것만 쓰고 나머지는 도태되겠죠.) 참고로 저에겐 Ubuntu 가 편합니다.   현재 배포된 CentOS 버전은 아래와 같습니다. 참조 : https://ko.wikipedia.org/wiki/CentOS   이 글에서는 CentOS 7.0 또는 그 이상 버전에서 사용가능한 설정 방법을 설명하도록 하겠습니다.   참고로 운영체제 이미지는 다음의 위치에서 다운로드 가능합니다. https://www.centos.org/download/ Everything ISO : 운영체제 파일 + 패키지 파일 이 모두 담겨있음. 인터넷이 안되는 환경에서 사용할 수 있음. Minimal ISO : 운영체제 파일. 패키지는 인터넷 연결을 통해 설치해야 함. 일반적으로 이 이미지를 CD 장치 또는 DVD 에 기록 후 사용합니다.     1) 리눅스 버전체크 #uname -a…

php 세션 저장소를 redis 로 바꾸어 본 후기.

HYEONG HWAN, MUN/ 6월 16, 2015/ 미분류/ 3 comments

어떤 웹 프로그램의 속도가 느려서 디버깅을 했었는데, 느린 부분이 session_start() 구문이었다.   저 한 줄 실행하는데, 1.2초~ 2.5초가 걸리더라. 하나의 PHP 파일에 대하여, 동시에 20개의 POST 요청을 하는 프로그램이었다.   – 세션 구문이 느리니까 개선을 위하여 redis 를 설치해 보았다. 공식사이트는 이곳 (http://redis.io/download) 이다. PHP 연동 파일은 http://redis.io/clients#php 에서 찾아볼 수 있다. 라엘이는 phpredis 를 선택해서 설치하였다. 설치방법은 사이트에 잘 나와있으니 따라하면 된다.   적용 직후 반응 속도가 대폭 개선되었다. 세션의 속도가 개선된 후에, 2번째로 시간을 오래 소비하는 요인을 찾았고 그것은 어떤 SQL 구문이었다. 해당 SQL 구문을 개선한 후에 만족할 만한 반응속도를 얻었다.   이상한 점은 그 후에 file session hander 로 바꾸어도 빠른 속도가 나오더라는 것이다.   최종적으로 redis session 과 file session 의 속도차이는 거의 나지 않았다. – 반응속도가 만족스러워져서…

PHP Magic Hash Vulnerability 취약점

HYEONG HWAN, MUN/ 5월 14, 2015/ 미분류/ 0 comments

PHP 의 Magic Hash 취약점에 대해서 알아보았다.     실제로 Magic Hash 는 취약점이 아니라 특수동작입니다.   이론 우리가 다루는 대부분의 자료형은 “문자형(String)” 입니다. 일부 프로그래밍 언어(Some programming language)에서는 String 과 그 외 다른 자료형과 쉽게 쓸 수 있도록, Auto casting(=Type Juggling) 을 지원합니다.   <이게 바로 Juggling 입니다>   아래는 실제로 동작하는 Type Juggling 의 예제입니다. 영어 단어 뜻, int = 숫자자료형, string = 문자자료형, concatenation = 결합 .   int 값 10 이 string 과 concatenation 하기 위해서 string 으로 타입 변환됩니다.   int 값 10 이 string 과 concatenation 하기 위해서 string 으로 타입 변환됩니다.   string 값 28이 int 필드타입의 쿼리를 날리기 위해서 int 로 타입 변환 됩니다.   이중에 몇가지 주의해서 사용해야 하는 것이 있는데,…

Ubuntu 한 서버에서 PHP, JSP 동시에 사용하기

HYEONG HWAN, MUN/ 3월 28, 2015/ 미분류/ 27 comments

요청에 의해서 한 서버에서 PHP와 JSP를 동시에 구동하는 방법을 설명하고자 한다.   이 글은 동시구동 방법에 대해서 설명하고 있습니다. 아래의 단계를 진행하시려면 먼저 서버에 Ubuntu-Apache-PHP 및 Ubuntu-Tomcat-JSP 가 설치되어 있어야 합니다. 설치되어 있지 않으면 기존 글 Ubuntu-Apache-PHP, Ubuntu-Tomcat-JSP 을 참조하여 먼저 설치해주세요.   먼저 간단한 이론 2가지를 이해하고 가도록 하자.   1) 포트 바인딩 우리가 사용하는 TCP/IP 네트워크에서 서버간 통신은 IP 주소 + PORT 번호로 이루어진다. 당연한 이야기겠지만 네트워크 프로그램도 IP 주소 + PORT 번호로 연결을 설정한다.   당신이 웹서버 프로그램에 IP 주소를 지정하지 않으면 (나를 포함 대부분 지정하지 않는다), 기본값으로 0.0.0.0 (=모든 IP 라는 뜻) 이 지정된다. 즉 아무런 설정을 하지 않았다면 Apache 는 0.0.0.0:80 을 사용하고 Tomcat 은 0.0.0.0:8080 을 사용한다.   Apache 와 Tomcat 을 설치한 상태에서 Tomcat…

Why PHP file should OMIT the closing PHP tag?

HYEONG HWAN, MUN/ 10월 24, 2014/ 미분류/ 0 comments

PHP Closing Tag The PHP closing tag on a PHP document ?> is optional to the PHP parser. However, if used, any whitespace following the closing tag, whether introduced by the developer, user, or an FTP application, can cause unwanted output, PHP errors, or if the latter are suppressed, blank pages. For this reason, all PHP files should OMIT the closing PHP tag, and instead use a comment block to mark the end of file and it’s location relative to the application root. This allows you to still identify a file as being complete and not truncated. ** 번역하여 요약 ** 파일 끝에 스페이스나 엔터가 들어가면 php파일의 output이 생깁니다. output이 생기면 웹서버에서 헤더를 씌우고 출력을 내보냅니다. 요즘 프로그래밍 방식인 MVC…

[PHP] 웹상에서 setuid 를 이용하여 시스템명령 사용하기

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

  테스트 환경(Demonstration Environment) : Ubuntu Server 14.04 LTS   반복적인 단순한 쉘 작업을 함수로 만들어서 웹에서 관리하고 싶어졌다. 작업은 사용자의 추가, 삭제, 비밀번호 변경이다.   여러 시행 착오 끝에 잘 되는 경우를 발견하였고 이곳에 공유해 본다.   원하는 명령어는 root의 권한으로 실행되어야 하는데, Apache에 root permission 을 줄수도 없는 노릇이고.. 방법을 찾아보다가 setuid 를 발견하였다.   이것은 리눅스의 특정 플래그 인데, 이 파일을 실행할 때 소유자의 권한으로 실행하라는 bit flag 이다.   먼저 test.php 작성   결과화면은 www-data 이었다.   이번엔 쉘실행파일로 작성해 보았다. test.sh   이것 실행 역시 www-data 이었다.   setUID를 주고서 해보았다. 소유자변경과 setuid 비트 2가지를 주어야한다. 결과 변화가 없음.   test2.php 생성   즉 test2.php 에서 호출하도록 해서 작성해보았는데 역시 결과는 변화가 없었다. 이론상으로는 owner 로…

PHP CURL 속도를 향상시키는 방법

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 2 comments

CURL 속도가 너무 느려서 문제가 생겼다. 통신하는 양측 서버는 정상이었다. 각 부분을 디버깅한 결과 느린 속도는 DNS name resolving 에서 일어났으며 nameserver 를 hit 하면서 느려진 것이었다. 해결방법은 서버에 hosts 와 ip를 강제 지정하여 DNS lookup 을 방지하면 된다. hosts 파일 열기 (도메인-IP 강제 연결용 특수목적 파일) #vi /etc/hosts   서버아이피 도메인 설정 아이피 + (스페이스 or 탭) + 도메인명 < 입력 예시 > 106.185.34.232    blog.lael.be   적용 끝.   CURL 은 DNS LOOKUP 을 따로 하지 않고 hosts 파일에 정의된 곳으로 연결을 시도할 것이다. 속도가 매우 빨라질 것이다. #15.06.25 내용추가. 위의 방법은 네임서버 조회 기능을 건너뛰는 해결방법이고, 아래의 방법은 서버에서 빠른 연결을 할 수 있는 네임서버를 찾아서 설정하는 해결방법이다. 아래의 DNS 서버들에 ping 을 날려보고 가장 빠른 것을…

한번에 끝내는 Ubuntu 웹서버세팅 (우분투 서버세팅)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 283 comments

Last updated : 2018-05-18 Ubuntu 18.04 LTS 에서 설치하는 방법은 이곳에 : https://blog.lael.be/post/7264 Ubuntu 14.04 LTS 에서 설치하는 방법은 이곳에 : https://blog.lael.be/post/4518 글 비밀번호는 ubuntu 입니다.  이 글은 Ubuntu 16.04 LTS 에 맞추어 작성되었습니다. #16.10.04 무료 보안인증서(SSL) 적용방법이 추가됨 무료 보안인증서 설치방법이 추가되었습니다. HTTPS 사용을 원하신다면, 본문을 다 읽으신 후 다음의 글로 이동해주세요. https://blog.lael.be/post/5107 이 문서는 2010년 4월 12일에 처음 쓰여졌으며, 주기적으로 업데이트/유지보수 되고 있습니다. 이 문서는 항상 최신버전(Edge Version)의 세팅법을 설명합니다.   이 글에서는 자동화되고 유지보수 관리되는 설치방법을 설명하고 있습니다. 아래의 방법대로 설치한 후에 언제든지 명령을 사용하면, 항상 빠르고 안전한 최신버전의 서버 소프트웨어를 사용하실 수 있습니다. * 이 글은 Ubuntu 에 PHP 웹서버를 세팅하는 방법을 소개하고 있습니다. * PHP를 최신버전으로 구축하고 싶다면 https://blog.lael.be/post/2600 글로 이동하세요. (Nginx + PHP7-FPM + MariaDB) – CentOS 에서 PHP 를…