Server/nginx

NPM 완벽가이드 :: master guide - setup nginx php mysql on window

Hello guys. I'm ckcks12.

Today I'm gonna write an article about how to setup nginx php mysql on window 

because there's no such an article on the internet ─ the sea of information.

Not the some great article but just one of the instruction about "how to install" series.


p.s. some articles are just using mariaDB instead of mysql but I've heard that mariadb is developing own way because of their foundation's identity. Furthermore they use same module with mysql but not the same version name. i.e. mariaDB v 1.6 is same with mysql v 1.3 (just example not correct) So.. I decide to go the mysql side. :)

p.s. maria DB 도 있던데 제가 어디선가 읽은거로는 mariaDB하고 mysqlDB하고 점점 다른길을 걷게된다고 하더라구요.

mariaDB자체가 mysqlDB와 같은 모듈을 쓰긴하는데 버젼이 서로 다른 카운트를 세고 있고

또 mariaDB에서 자신의 foundation만의 identity를 확립하기 위해 ?? 암튼 이제 슬슬 달라진다고 하네요. 전 mysql 테크를 타려구요.


이 문서는 2016년 2월 18일(GMT+09:00)을 기준으로 최신화된 문서입니다.

(SEO optimization을 위해 새로운 갱신은 문서를 새로 쓰는게 가장 좋을듯 합니다만 뭐..,. 수정하게 될 수도 있으니 ,.,. ?)


다른 소개글에서는 nginx를 먼저 설치합니다. 

저도 그러려고 했으나 사실상 의존 관계를 생각해본다면 mysql은 굉장히 독립적으로 움직이므로 

mysql을 먼저 설치하고 세팅하겠습니다. 

생각해보시면 php는 하나의 스크립트 덩어리에 불과할 것이고 

nginx는 port listening하고 network service를 담당하며 php에 call을 할것인데

mysql은 물론 php에서 call하겠지만 뭐랄까 혼자 3306 port 열고 혼자 노니까요. 더군다나 세팅할때 다른 프로그램과 맞춰줄 것 하나 없고.


MySQL Community Server 설치

링크 : http://dev.mysql.com/downloads/mysql/


다운로드 받으시고 압축을 풉시다.

그리고 앞으로의 편리성을 위해 C:\ 로 옮기며 폴더 이름도 간편하게 mysql로 바꿉시다.


먼저 해야할 일은 mysqld를 위해 my.ini라는 세팅을 해주는 것입니다.

my-default.ini이라는 파일이 있을텐데 이 파일은 쓰시면 안됩니다. 이 파일은 단지 세팅의 기본 구조만 간단히 알려주는 것 뿐입니다.

my.ini를 만들고 아래와 같이 작성합니다.


[mysqld]
basedir = C:\\mysql
datadir = C:\\mysql\\data
port = 3306
server_id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 


그리고 data라는 폴더를 만들어 줍니다.



data는 말그대로 db data가 저장될 곳인데 다른곳을 원하신다면 얼마든지 옮기실 수 있습니다.

만약 서비스 도중 옮기시는 거라면 당연히 원래 데이터도 같이 옮기셔야겠죠?


이제 mysqld를 실행시켜 봅시다. cmd를 관리자 권한으로 실행시키시고 아래와 같이 입력하세요.


cd C:\mysql\bin mysqld --initialize-insecure


mysqld --initialize-insecure 라는 명령어는 보안되지 않은 상태로 초기화하라는 겁니다.

여기서 보안되지 않는다는 의미는 root 계정의 비밀번호를 비워둔다는 의미입니다.

-insecure를 빼고 입력하시면 랜덤으로 root 계정의 비밀번호가 생성됩니다.




-insecure를 빼고 입력한 뒤에 data 폴더 안에 보시면 컴퓨터이름.err라는 파일이 생성되고 그 안에 저렇게 생성되어 있을 겁니다.


이제 초기화도 되었으니 아래와 같이 입력하여 실제로 mysql daemon을 실행시켜 봅시다.


mysqld --console



아마 기본적인 방화벽 설정이라면 이런 창이 뜰텐데 허용해주세요.




자 이로써 mysql의 설정은 끝났습니다가 아니라

insecure 옵션으로 initialize했으니 root의 비밀번호를 설정해줍시다.

p.s. 만약 저 창에서 이어서 작업하려고 하시면 아무것도 입력이 안되실 겁니다.

창을 닫으면 mysqld가 꺼질테니 그냥 놔두고, 새로운 cmd를 열어주셔서 작업하세요!


root의 비밀번호를 설정하는 법은 공식 documentation에 의하면 3가지가 있는데

data폴더를 직접 만들고 직접 초기화하는 것에 대한 공식 문서에 의하면


mysql -u -root --skip-password


를 통해 mysql을 root으로 접속하신 뒤 root에 대한 계정 정보를 alter로 바꿔주시면 됩니다. 


alter user `root`@`localhost` identified by 'pw';


여기서 root과 localhost를 감싸는 따옴표는 탭위에 있는 ` 입니다.

pw를 감싸는 따옴표는 엔터 옆에 있는 작은 따옴표입니다.

pw에는 원하시는 비밀번호를 넣어주시면 됩니다.


자 이로써 정말로 mysql의 설정은 끝났습니다.

p.s. mysqld를 --console옵션으로 돌리면 실시간으로 db accecss log를 보실 수 있어 정말로 편리합니다.



전 Thread Safe한 5.6.18 버젼을 다운로드 받았습니다.

압축을 푸시고 폴더 이름을 php로 바꾸신 뒤 C:\로 옮겨줍시다.


php의 세팅은 php.ini에서 이루어집니다.

그런데 보시면 php.ini가 없습니다.

대신 php.ini-development와 php.ini-production이 있습니다.

전자는 개발용 설정이고 후자는 서비스용 설정이겠지요.

대게 서비스용의 경우 많은 에러 표시들을 웹으로 보내주지 않습니다.

저희는 지금 개발중이니 php.ini-development를 선택하겠습니다.

간단하게 php.ini-development를 복사하고 php.ini로 이름을 바꾸어 주면 됩니다.


그리고 이제 좀 더 세밀한 세팅을 합니다.

php.ini를 열어 아래의 부분들을 찾아서 수정해 줍니다.


short_open_tag = On
//short open tag는 <?php 를 <? 만 써도 되도록 해줍니다
extension_dir = "ext"
//앞에 ; (세미콜론) 이 있었을 겁니다. 주석처리인데 그 세미콜론을 지워주세요.

// ; Windows Extensions 밑에 좌르륵 있는 여러가지 extension들 중에서 mysql (혹은 mysqli)의 주석처리를 지워주세요.

//시간설정입니다.
//[Date] 밑에 있는
date.timezone = Asia/Seoul
//로 해줍니다. 다른 시각을 원하신다면 알아서 ^-^


그리고 php를 실행시켜보겠습니다.

cmd를 열어서 아래와 같이 입력하여 실행시킬 수 있습니다.


cd c:\php
php-cgi -b 127.0.0.1:9000


Nginx 설치

링크 : http://nginx.org/en/download.html


저는 stable버젼을 다운로드 받았습니다. 메인 라인과의 log는 보지 못했지만 그냥 stable이 짱이죠.. -_-^

nginx도 마찬가지로 압축을 푸시고 폴더 이름을 nginx로 바꾸신 뒤 C:\로 옮겨줍시다.


자 이제 웹서버 세팅을 해볼까요?


단 두가지만 바꿔줍시다.

한가지는 index.php가 인식되도록, 그리고 php파일이 php-cgi로 잘 넘어가도록.

먼저 index.php가 인덱스로 잘 인식되도록 수정하려면 conf폴더 안에 있는 nginx.conf를 다음과 같이 수정해주세요.


index  index.html index.htm;
이것을 이렇게
index  index.html index.htm index.php; 


그리고 php-cgi는 이렇게.. 아마 주석처리되어 있을건데 주석처리(#)을 지워주시고 SCRIPT_FILENAME 부분만 바꾸어주세요.


location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


저기 $document_root이 중요해요 ~^^


그리고 nginx를 실행시켜볼까요? cmd를 켜시고~ 


cd c:\nginx
nginx




이렇게 뜨신다면 허용해주세요.


p.s. 중지 시킬때는 또다른 cmd를 키셔서


nginx -s stop


이렇게 해주셔야합니다. 



phpinfo(); 로 테스트하기


c:\nginx\html 이 기본 document root입니다.

해당 폴더안에 index.html를 지워주시고 

(nginx.conf보시면 index.html index.htm index.php순이라서 html이나 htm이 있으면 php에게 순서가 돌아오지 않습니다.)

index.php를 만드셔서


<?php
phpinfo();
?>


해주시고 저장눌러주시고 localhost에 접속해보세요.




이렇게 뜨셨으면 성공입니다.


오랜만에 긴 글 쓰니 힘드네요. 한국에 제대로된 문서가 없어서 -_- 여러 공식 documentation만 참조해서 만들었습니다.


msyql은 mysql documenation을

nginx도 nginx.org doc을

php는 원래 알던거라서 그냥 -b로 bin형태로 실행시키는것만 구글링.


nginx가 훨씬 conf 설정이 쉽고 직관적입니다.

php는 빼놓을 수 없는 독보적이고 native한 언어이구요.

mysql은 앞으로도 무료이고 mariadb와 같다고는 하지만 그래도 아몰랑 암튼 잘쓰세요~

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

윈도우에서 nginx php mysql 설치하기  (0) 2016.02.18
window nginx + php + mysql (mariadb)  (0) 2016.02.18
,

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today :
Yesterday :
Total :

태그