Tagged: MariaDB

Nginx + PHP-FPM + MariaDB 설치 (CentOS 7)

과거에는 APM (Apache + PHP + MySQL)이 인기있는 플랫폼이 였지만 최근에는 Nginx 가 나오고 PHP-FPM 이 나오면서 NPM 으로 많이 대체되고 있는 추세에 있습니다. 이 글은 Nginx,PHP-FPM, MariaDB 설치에 관한 것입니다.

준비

이 글에서 NPM을 설치하는 환경은 다음과 같습니다.

  • CentOS 7.2.1511
  • X86_64
  • Selinux Disable
  • 작성시간: 2015. 12. 27

설치하는 방법은 CentOS 7 에서 제공하는 패키지 관리 프로그램인 YUM을 이용하는 것입니다. 다음과 같이 CentOS 7 를 최신 버전으로 만듭니다.

 

PHP 설치

다음과같이 YUM 을 이용해서 설치해 줍니다.

php-mysql 은 MariaDB 와 연동하기 위한 것임으로 함게 설치해 줍니다.

systemctl 에 등록하고 시작해 줍니다.

php-fpm 의 pool 설정을 다음과 같이 해줍니다.

세션(Session) 디렉토리의 소유권을 cacti 로 변경해 줍니다.

 

MariaDB 설치

MariaDB 의 최신 버전 설치를 위해서 다음과 같이 YUM 저장소를 추가해 줍니다. YUM 저장소 추가는 다음 내용을 파일로 저장해주면 됩니다.

현재 MariaDB 의 최신버전은 10.1 이기 때문에 baseurl 에 버전이 정확해야 합니다. 다음과 같이 설치를 해줍니다.

systemctl 에 등록을 해주고 데몬을 시작해 줍니다.

mysql_secure_installation 을 실행해서 root 패스워드와 불필요한 데이터베이스를 삭제 합니다.

 

Nginx 설치

Nginx 의 최신 버전 설치를 위해서 다음과 같이 YUM 저장소를 추가해 줍니다. YUM 저장소 추가는 다음 내용을 파일로 저장해주면 됩니다.

cacti 서비스를 예를들어 다음과 같이 cacti.conf 파일을 작성합니다.

웹 서비스를 위한 홈 디렉토리가 ‘/home/cacti’ 를 만들어주고 www 디렉토리를 생성해 줍니다.

nginx 문법체크를 하고 systemctl 에 서비스를 등록하고 서비스를 시작해 줍니다.

80(http) 방화벽 설정

80 포트, 즉 HTTP 를 위한 방화벽 설정을 다음과 같이 해줍니다.

 

 

Creative Commons License
Nginx + PHP-FPM + MariaDB 설치 (CentOS 7) by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

mariadb-10.0.15 CentOS 7 소스

CentOS 7 를 위한 mariadb-10.0.15 버전 입니다. 10.0.14 버전의 보안 패치를 적용하고 systemd 를 위한 스크립트가 포함되어 있습니다.

다운로드: http://linux.systemv.pe.kr/files/mariadb-10.0.15.tar.gz

설치방법: Mariadb 10 소스 설치

Creative Commons License
mariadb-10.0.15 CentOS 7 소스 by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

MySQL joins: ON vs. USING vs. Theta-style

Mariadb 이 글은 다음에 글을 ‘내 마음대로’ 번역한 것 입니다.

http://code.openark.org/blog/mysql/mysql-joins-on-vs-using-vs-theta-style

다음 3개의 문법에 차이는 무엇인가?

차이점이라면 외형적으로 문법적인 것 외에 없는데, 여기에 흥미로운점이 있다.

이름을 붙이자면, 위에 두개는 “ANSI-style” 마지막 세번째는 “Theta-style” 이라고 한다.

Theta style (세타 스타일)

FROM 구문에, Cartesian 연산을 할 경우에 테이블 리스트, 그리고 WHER 구문에는 어떻게 join 할지를 정의하는 것을 놓는다.

이것은 “old” 스타일로 여겨진다. 이것은 다소 읽기에 혼란스럽다. 다음과 같은 쿼리를 생각해보자.

위 쿼리는 배우 아이디 17이고 필름길이(아마 상영시간인듯) 120분 이상인 필름들을 리스트 한다. 결과에 신경쓰지 말고, 위 쿼리는 무엇인가? WHERE 구문 부분에 존재하는 하나인, AND 표현식에 3개의 엘레멘트중 하나,   조인식은 제외된다. 조인식을 찾기도 힘들도 레코드를 필터하는 문장과 대조적으로 테이블 조인을하는 문장을 구분해 내기도 힘들다. 위 예제에서는 그래도 포인트를 찾기가 쉽다. 5개의 테이블, 20개의  문장을 가진 WHERE 구분 쿼리는 어떻게 할거냐?

ANSI style: ON

JOIN .. ON 에서, 필터링 문장(아마 WHERE 구문을 말하는듯.) 으로부터 조인문장을 분리한다. 앞에 예제를 다시 작성하면 다음과 같다.

이제 무엇을 조인하는지 명확해 졌다.

Note: the parenthesis are not strictly required in the ON clause. 개인적으로 나는 이것을 사용하는것을 좋아한다. 이것은 쿼리 파트사이에서도 아주 큰 차이를 만든다. SQL 문법은 지저분하다.

ANSI style: USING

특별한 경우로 테이블을 조인할 때에 각 테이블에 같은 이름의 컬럼이 존재하면 우리는 USING 을 사용해서 다음과 같이 짧게 작성할 수 있다.

This time the parenthesis are required (I’m not sure why the difference on that part).

이것의 세세한 차이점이라고는 단어를 적게 치거나 결과적으로 아름다운 쿼리정도다. But also note a couple differences:

USING vs. ON

다음은 유효한 구문이다.

하지만 다음은 유효하지 않다.

USING은 양쪽 테이블에서 film_id 가 공유되어진다는 사실을 알고 있는거라면, 우리는 정밀한 테이블의 정의를 물어볼 필요가 없다. 이것은 항상 같은 값이 존재한다.

ON 스마트 하지 않고 좀더 명확한 것을 필요로 한다: 당신이 원하는 것이 정확하게 어느테이블에 있는냐?

위의 실질적으로 흥미로운 현상의 결과는 다음과 같다.: USING을 사용할때에 결과에서 컬럼은 한번 나타난다.

그런데, ON  조인에서는 컬럼이 두번 나타난다.

Behind the scenes

MySQL은 모두 같은 방법으로 모든 쿼리를 다룬다. EXPAIN EXTENDED 의 도움을 받아서 그것을 볼수 있다.

모든 쿼리는 내부적으로 theta-style 로 변환된다.

이 포스트는 inner joins 만 다룬다. outer joins 상황에서는 다소 차이가 있을 수 있다.

Creative Commons License
MySQL joins: ON vs. USING vs. Theta-style by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

MariaDB 오픈 소스 데이터베이스

MariaDB 는 한 개발자의 노력을 시작된 오픈 소스 프로젝트 입니다. 과거 오픈 소스 데이터베이스의 대명사인 MySQL 을 개발한 개발자 중에 한인 Monty Widenius. 1962년 핀란드 태생으로 1995년 MySQL 데이터베이스를 개발하기 시작해서 그 이듬해에 첫 릴리즈를 하게 됩니다. 그리고 1998년, 3.21 버전부터 www.mysql.com 을 만들어 운영하면서 명실상부한 오픈 소스 데이터베이스로 발을 딛기 시작 합니다.

Monty Widenius
MySQL 을 개발한 Monty Widenius

MySQL은 오픈소스 정책을 가지고 있지만 개발과 판매등을 총괄하는 회사가 있습니다. MySQL AB 라는 회사인데, 개발지원에서부터 판매, 홍보까지 MySQL에 거의 모든것을 관장하던 회사입니다. MySQL이 오픈소스이긴 하지만 라이센스정책이 이중으로 되어있어(GPL, CopyRight) 이러한 라이센스 관련해서 제품의 구성등 전반적인 부분도 이 회사에서 모두 관리합니다.

MySQL이 오픈소스 진영에서 이름을 날리고 있던 2008년에 썬 아킥텍쳐 및 썬 OS로 유명한 ‘Sun microsystems’ 에 85억 달러에 인수 됩니다. 이때에 MySQL을 전부 총괄하던 MySQL AB 회사도 함께 넘어감으로써 모든 지적재산권도 썬으로 넘어가게 됩니다. 그러던 것이 1년도 않된 시점인 2009년 4월 오라클이 썬마이크로시스템즈를 인수함으로써 MySQL AB 의 모든 지적재선권은 다시 오라클로 넘어갑니다.

Oracle. 오픈소스 진영에서는 거의 악날함을 자주 보여줬던 RDBMS 최강의 회사 입니다. 상용시장에서 독보적인 오라클 데이터베이스 를 가지고 있었고 인수전에는 MySQL과 알게 모르게 경쟁하던 데이터베이스 제품을 가진 회사였기 때문에 인수당시부터 오픈소스진영에서는 MySQL에 대한 운명(?)에 대해서 우려하는 목소리가 많았습니다. ‘오라클 스럽게 죽일거다’라는 소리가 자주 들렸지요.

그런데, MySQL AB를 설립했던 Michael “Monty” Widenius(마이클 ‘몬티’ 비드니우스) 라는 사람이 오라클을 뛰쳐 나옵니다. 오픈소스 정의감으로 뛰쳐나왔으면 드라마틱하겠지만 오라클에서 대우가 별로 맘에 않들었다고 하네요. 그러한 그가 나와서 뭘했을 까요? 배운게 도둑질인데, 오라클 회사를 나와서 ‘Monty Program’ 이라는 것을 하게됩니다. 그리고 이 ‘Moty Program’ 에서 GPL 라이센스로 되어있는 MySQL 코드를 Branch 해서 RDBMS를 만들게 되었는데 그것이 바로 ‘MariaDB’ 입니다.

Monty Widenius 는  오라클이 MySQL 을 인수하게되자 오픈 소스 진영에 MySQL 을 구해달라는 호소문을 올리기도 합니다.

[MySQL 을 구해주세요!!]

실제로 오라클이 MySQL 을 인수하고 난 후에, 오라클은 라이센스 정책을 변경했으며 MySQL 의 테스트 소스코드를 비공개로 변경했습니다.

이러한 오라클의 폐쇄적인 정책으로 불구하고 MariaDB 는 수많은 개발자들의 기부로 인해서 성장했고 대부분의 리눅스 배포판에서 MySQL 을 대체하는데 이르렀습니다. 현재 MariaDB 는 10 버전을 출시로 더욱 강력해지고 안전한 데이터베이스를 제공하고 있습니다.

Mariadb
Mariadb 의 로고

 

Creative Commons License
MariaDB 오픈 소스 데이터베이스 by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.