Устанавливаем nginx на наш Freebsd сервер:
cd /usr/ports/www/nginx make config-recursive
Выбираем настройки по-умолчанию.
make install clean
Добавляем nginx в автозагрузку:
echo 'nginx_enable="YES"' >> /etc/rc.conf
Редактируем файл настроек. Я приведу пример с двумя виртуальными серверами, на одном из которых будут настройки для wordpress, другой будет для phpmyadmin, я люблю его вешать на отдельный поддомен.
mcedit /usr/local/etc/nginx/nginx.conf
user www; worker_processes 1;
pid /var/run/nginx.pid; error_log /var/log/nginx-error.log warn;
events { worker_connections 1024; use kqueue; }
http { include mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] ' '«$request» $status $bytes_sent ' '«$http_referer» «$http_user_agent» ' '«$gzip_ratio»';
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; server_tokens off;
fastcgi_intercept_errors on; client_max_body_size 50m;
server { listen 80; server_name www.site1.ru; rewrite ^ http://site1.ru$request_uri? permanent; }
# wordpress server { listen 80; server_name site1.ru; root /web/sites/site1.ru/www/; index index.php index.html index.htm; access_log /web/sites/site1.ru/log/access.log main; error_log /web/sites/site1.ru/log/error.log;
location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ { access_log off; expires max; } location ~ \.php$ { fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /web/sites/site1.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/site1.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/site1.ru/www$fastcgi_script_name;
include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\.ht { deny all; } } # phpmyadmin server { listen 80; server_name pma.site1.ru; root /web/sites/pma.site1.ru/www/; index index.php index.html index.htm; access_log /web/sites/pma.site1.ru/log/access.log main; error_log /web/sites/pma.site1.ru/log/error.log;
location ~ \.php$ { fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /web/sites/pma.site1.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/pma.site1.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/pma.site1.ru/www$fastcgi_script_name;
include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } } } Создаем необходимые каталоги:
# mkdir /web && mkdir /web/sites && mkdir /web/sites/site1.ru && mkdir /web/sites/site1.ru/www && mkdir /web/sites/site1.ru/log && mkdir /web/sites/pma.site1.ru && mkdir /web/sites/pma.site1.ru/www && mkdir /web/sites/pma.site1.ru/log # chown -R www:www /web Проверяем конфигурацию:
# rehash # nginx –t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: [emerg] mkdir() «/var/tmp/nginx/client_body_temp» failed (2: No such file or directory) nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed Почему-то nginx не смог создать папку во временном каталоге. Поможем ему сами:
# mkdir /var/tmp/nginx # nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Все в порядке. Наш web сервер на Freebsd готов. Запускаем nginx и проверяем, нормально ли запустился:
# /usr/local/etc/rc.d/nginx start # sockstat | grep nginx
www nginx 3488 10 tcp4 *:80 *:* www nginx 3488 11 stream → ?? root nginx 3487 3 stream → ?? root nginx 3487 10 tcp4 *:80 *:* root nginx 3487 11 stream → ?? Все в порядке, сервер запущен и слушает 80-й порт. Теперь проверим работу web сервера с помощью тестовой странички. Создаем ее:
# touch /web/sites/site1.ru/www/index.php # mcedit /web/sites/site1.ru/www/index.php php
Переходим на сайт по адресу http://site1.ru Не забудьте настроить DNS для доступа к установленному серверу, либо отредактируйте в windows файл hosts, добавив туда строку:
192.168.1.21 site1.ru где 192.168.1.21 адрес web сервера Freebsd 10.
Вы должны увидеть картинку:
phpinfo на php-fpm+nginx
Если видите ее у себя, поздравляю, вы все настроили правильно и web сервер полностью готов к работе. Остался только маленький
service nginx start
Когда nginx запущен, им можно управлять, вызывая исполняемый файл с параметром -s. Используйте следующий синтаксис:
nginx -s сигнал
Где сигнал может быть одним из нижеследующих:
stop — быстрое завершение quit — плавное завершение reload — перезагрузка конфигурационного файла reopen — переоткрытие лог-файлов
Для просмотра списка всех запущенных процессов nginx может быть использована утилита ps, например, следующим образом:
ps -ax | grep nginx
Ссылки:
https://serveradmin.ru/freebsd-nastroyka-php-fpm-i-nginx/#__nginx_Freebsd
https://sheensay.ru/nginx
http://nginx.org/ru/docs/beginners_guide.html