Nginx, APC 및 PostgreSQL로 PHP를 설정하는 방법은 무엇입니까?


9

Ubuntu Server 10.10을 사용하고 NginX , PHP 5.3.3, PostgreSQL 및 APC 및 PHP Suhosin이 있는 웹 서버 환경을 설정하고 싶습니다.

이미 PostgreSQL apt-get install postgresql과 Nginx를 설정했습니다 apt-get install nginx.

그러나 이것들을 위해 PHP를 어떻게 설정합니까? 이를 사용 apt-get install하여 소스를 다운로드하거나 컴파일해야합니까? 을 사용하여 선호합니다 apt-get.

Nginx에 PHP-FPM 을 사용하고 싶습니다 . 인터넷에서 찾은 대부분의 자습서는 오래되어 PHP를 컴파일하지만 프로덕션 서버에는 권장되지 않습니다.

Nginx, APC 및 PostgreSQL로 PHP를 가장 쉽게 설정하는 방법은 무엇입니까? 또는 적어도 PHP-FPM + Nginx?


최신 정보

이제 새로운 Ubuntu Server 10.10을 설치하고 Peterphp5-suhosin추가 하여 제안한 명령을 실행했습니다 . Nginx가 정상적으로 작동하면 생성 된 구성 파일을 다음과 같이 편집하십시오. 새 구성 파일을 다시로드 한 후에도 Nginx는 index.html파일을 사용하여 여전히 잘 작동 하지만 index.php파일을 추가하면 작동이 중지됩니다. 나는 이것이 PHP-FPM, APC 또는 PHP 관련과 관련이 있다고 생각합니다. 그러나 PHP-FPM의 구성 파일 일 수도 있습니다.

다음은 내가 사용하는 Nginx의 구성 파일이며 대부분 기본적으로 생성됩니다. 댓글을 건너 뛰었습니다.

server {

    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    location /favicon.ico {
        empty_gif;
    }

    location / {
        root     /var/www;
        index    index.php index.html index.htm;
    }

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

}

이 답변에 답한 다음 수락하여 두 솔루션을 함께 통합 솔루션으로 투표 할 수 있습니다.
Jorge Castro

@ 조지 : 이것은 대답 이 아닙니다 . 작동하지 않는 구성 파일 만 보여줍니다 . Peter Smit은 올바른 해결책을 의견과 함께 게시했으며 답변으로 받아 들였습니다.
Jonas

아 내 실수 야!
Jorge Castro

답변:


8

우분투 10.10부터는 새로운 php5-fpm 패키지로 간단합니다.

다음 패키지는 필요한 모든 것을 수행합니다

  • nginx -웹 서버
  • php5-fpm -빠른 CGI PHP 서버
  • php-apc -PHP 용 APC 패키지
  • php5-pgsql -PHP 용 PostgreSQL 모듈
  • postgresql -PostgreSQL 데이터베이스 서버

모두 함께 sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

또한 apache2가 설치되어 있는지 확인하는 것이 좋습니다. 그렇다면 sudo apt-get remove apache2포트 80에 대해 아파치 및 nginx가 경쟁하지 않도록 하려면을 사용하여 삭제하십시오 .

또한 xdebug 표준은 php5-fpm과 마찬가지로 포트 9000을 사용하려고합니다. 따라서 xdebug를 사용하는 경우 해당 포트를 9001로 변경하십시오.

그리고 보너스로 nginx 구성의 예 (/ etc / nginx / sites-available에 배치하고 / etc / nginx / sites-enabled에 심볼릭 링크)

server {
  listen 80;
  server_name site.com;
  access_log /data/log/www/site.com/access.log;
  error_log /data/log/www/site.com/error.log;

  root /data/www_data/site.com/public;
  index index.php;

  location = /favicon.ico {
    empty_gif;
    #return 204;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}

지금이 작업을 수행했으며 간단한 test.php파일을 만들었지 만 작동하지 않습니다. 브라우저에 "broken link"가 표시되고 Nginx 오류 로그에 "favicon.ico"에 대한 항목 만 있습니다. 구성 파일에 문제가 있다고 생각하지만 실제로는 모릅니다. 오류를 찾기가 매우 어렵습니다.
Jonas

@Jonas nginx 및 php5-fpm이 아직 시작되지 않았을 수 있습니다. 이 경우, sudo service nginx startsudo service php5-fpm start작업을 수행해야합니다. 물론, 그들이 줄 수있는 오류가 있는지 살펴보십시오.
Peter Smit

@Jonas 적어도 내 솔루션에서 empty_gif 부분을 복사 한 경우 오류 로그에 favicon.ico가 포함되어서는 안됩니다. 또한 변경 후 항상 다시 시작하는 것을 잊지 마십시오 ( sudo service nginx reload). 다른 모든 방법이 실패하면 구성 파일을 질문에 추가 할 수 있습니다.
피터 Smit

Nginx의 구성 파일로 질문을 업데이트했는데 PHP 설정에 문제가있는 것 같습니다. 즐겨 찾기 아이콘에 대한 줄을 구성 파일에 추가 한 후 더 이상 Nginx 오류 로그에 오류가 발생하지 않습니다. Nginx는 .html파일 과 함께 작동 하지만 파일에서는 작동 하지 않습니다 .php.
Jonas

1
@Jonas '깨끗한'구성 파일을 만드는 데 도움이 된 페이지는 wiki.nginx.org/Pitfalls 이지만 이해하지 못하는 변경 구현에 대한 경고는 무시하지 마십시오.
피터 Smit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.