프로그래밍/PHP

Install nginx + php7 + codeigniter for Windows

채윤아빠 2018. 10. 16. 16:09
728x90
반응형



Install nginx

  • Eidt nginx.conf for php7 : "C:\Dev\nginx-1.15.5\conf\nginx.conf" 
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            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;
            }
    
    • 위와 같이 fastcgi 부분의 주석 해제
    • fastcgi_param SCRIPT_FILENAME 부분을 위와 같이 수정 ; "$document_root$fastcgi_script_name;"
    • SCRIPT_FILENAME을 수정하지 않으면 다른 폴더의 php 접근시 "nginx No input file specified." 오류 발생

Install PHP7

  • php7 downlaod in https://windows.php.net/download/ : PHP-7.2.10
  • Extract to "C:\Dev\php-7.2.10" 
  • Create php.ini
    • Copy "C:\Dev\php-7.2.10\php.ini-development" to "C:\Dev\php-7.2.10\php.ini"
  • Execute php-cgi
    C:\Dev\php-7.2.10>start php-cgi.exe -b 127.0.0.1:9000
    

Manage nginx service

  • Start nginx service
    C:\Dev\nginx-1.15.5>start nginx
    
  • Create example PHP file : "C:\Dev\nginx-1.15.5\html\p_info.php" 
    <?php
        phpinfo();
    ?>
    
  • Check phpinfo
    • 브라우저를 열고 http://localhost/p_info.php 를 열어서 정상적으로 phpinfo()가 호출되는지 확인
    • 오류 메시지 등에 따라 nginx.conf 등을 수정하여 문제 해결
  • Check nginx process
    C:\Dev\nginx-1.15.5>tasklist /fi "imagename eq nginx.exe" 
    
    이미지 이름                    PID 세션 이름              세션#  메모리 사용
    ========================= ======== ================ =========== ============
    nginx.exe                    11424 Console                    3      7,196 K
    nginx.exe                    12140 Console                    3      7,688 K
    
  • Stop (kill) nginx service
    # fast shutdown
    C:\Dev\nginx-1.15.5>nginx -s stop
    # graceful shutdown
    C:\Dev\nginx-1.15.5>nginx -s quit
    
    # force shutdown
    C:\Dev\nginx-1.15.5>taskkill /f /pid 11424 /pid 12140
    성공: 프로세스(PID 11424)가 종료되었습니다.
    성공: 프로세스(PID 12140)가 종료되었습니다.
    

Install CodeIgniter

  • Edit config.php : "C:\Dev\nginx-1.15.5\html\ci\application\config\config.php" 
    //$config['base_url'] = 'http://localhost/';
    $config['base_url'] = 'http://localhost/ci/';
    
    //$config['index_page'] = 'index.php';
    $config['index_page'] = '';
    
    $config['uri_protocol']    = 'REQUEST_URI';
    
    • $config['base_url'] 설정값을 CodeIgniter를 설치한 폴더에 맞게 수정
    • $config['index_page'] 설정값을 비워둠 ; index.php 없이도 RESTful API 와 같은 형태의 URI로 호출이 가능하도록 함

nginx + php7 + CodeIgniter3의 URI에서 index.php 제거하기

  • nginx.conf 파일에서 다음과 같이 수정 ; rewirte 이용
    • "location /" 설정 부분에 아래 내용 추가
          if ( $uri !~ ^/(index\.php|css|images|core|uploads|js|robots\.txt|favicon\.ico) ) {
              rewrite ^ /ci/index.php last;
          }
      
    • "location ~ \.php$" 설정 부분에 아래 내용 추가
          try_files $uri =403;
          fastcgi_split_path_info ^(.+.php)(.*)$;
      

참고자료