Установка PHP5
Мы можем запустить в работу PHP5 в Nginx через FastCGI. Там нет автономного FastCGI пакета демона для CentOS, поэтому мы используем FastCGI пакет Lighttpd (Lighttpd, FastCGI) и установить его вместе с PHP-CLI и некоторые PHP5 модули, такие как PHP-MySQL которой вам нужно, если Вы хотите использовать MySQL с вашего PHP скрипта:
|
Затем откройте /etc/php.ini и добавьте строку cgi.fix_pathinfo = 1 в самом конце этого файла:
|
[...] cgi.fix_pathinfo = 1
Lighttpd FastCGI - пакет поставляется с исполняемым /usr/bin/spawn-fcgi которыqй мы можем использовать для запуска FastCGI процессов. Посмотрм на:
|
... чтобы узнать больше об этом.
Для запуска демона PHP FastCGI прослушиваем порт 9000 на localhost и запустим в качестве пользователя и группы Nginx, выполним следующую команду:
|
Конечно, Вы не хотите вводить эту команду каждый раз вручную, при запуске системы, поэтому, чтобы система выполняла команду автоматически во время загрузки, откройте /etc/rc.local ...
|
[...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
Настройка Nginx
Конфигурации Nginx в /etc/nginx/nginx.conf который мы открываем сейчас:
|
Конфигурация легко понять (Вы можете узнать больше об этом здесь: http://wiki.codemongers.com/NginxFullExample и здесь: http://wiki.codemongers.com/NginxFullExample2)
Первая (это не обязательно), вы можете увеличить количество рабочих процессов и установить keepalive_timeout до разумного значения:
[...] worker_processes 5; [...] keepalive_timeout 2; [...]
Виртуальные хосты определяются server {} контейнерах. Давайте изменим умолчанию виртуальный хост следующим образом:
[...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...]
server_name _; делает этот виртуальный хост по умолчанию всеохватывающий (конечно, Вы можете также указать имя хоста здесь, как www.example.com ).
В location / части, я добавил index.php на index строки. root /usr/share/nginx/html, означает, что корневая директория файлов /usr/share/nginx/html.
Важной частью для PHP это location ~ \.php$ {} строфы. Уберите это, чтобы включить его. Изменение корневой строки dosument корень веб-сайта (например, root /usr/share/nginx/html; ). Пожалуйста, убедитесь, что Вы изменили fastcgi_param строки SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; поскольку в противном случае PHP интерпретатор не найдет PHP скрипт, который Вы вызываете в Вашем браузере.
Теперь сохраните файл и перезагрузите Nginx:
|
Теперь создайте следующий файл PHP в корневой документ /usr/share/nginx/html ...
|
<?php phpinfo(); ?>
Теперь мы вызываем этот файл в браузере (например, http://192.168.2.222/info.php ):
Как видите, PHP5 работает, и он работает через FastCGI, как показано в Server API строке. Если Вы прокрутите дальше вниз, Вы увидите все модули, которые уже включены в PHP5, включая модуль MySQL:
На данный урок имеется виртуальный образ готового сервера, ознакомиться с которым подробней и скачать его можно на форуме Nginx с PHP5 и MySQL в CentOS 5.6 + скачать.
- << Назад
- Вперёд