Passos para configurar um projeto PHP com Nginx no Ubuntu on Windows (WSL), utilizando uma conexão com o PostgreSQL instalado no Windows.
Não é preciso o nginx para executar um servidor PHP, basta utilizar o servidor interno do PHP (possui algumas limitações)
php -S 0.0.0.0:8000 -t ./src ./src/router.php &
sudo apt-get update
sudo apt-get install php5 php5-gd php5-cli php5-json php5-curl php5-pgsql php-apc php5-fpm zip nginx
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer.phar
sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
sudo usermod -a -G www-data SEU_USUARIO
Facilita o trabalho no Ubuntu
sudo ln -s /mnt/c /c
Ex. Se seu projeto está em C:/dev/meu_projeto
no windows, entao execute
sudo cp /c/dev/meu_projeto/meu_projeto_nginx.conf /etc/nginx/sites-available/meu_projeto.conf
sudo ln -s /etc/nginx/sites-available/meu_projeto.conf /etc/nginx/sites-enabled/meu_projeto.conf
Pode-se remover a configuração default do nginx, desnecessário
sudo rm /etc/nginx/sites-available/default
Configurações pool do php-fpm
Edite o arquivo
sudo nano /etc/php5/fpm/pool.d/meu_projeto.conf
Adicione as configs (exemplo)
[mapas]
listen = 127.0.0.1:8000
listen.owner = SEU_USUARIO
listen.group = www-data
user = SEU_USUARIO
group = www-data
catch_workers_output = yes
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
chdir = /c/dev/meu_projeto/
php_admin_value[session.save_path] = /tmp/
php_admin_value[display_errors] = 'stderr'
env[PGHOST] = localhost
IMPORTANTE No WSL não existe unix socket, por esse motivo, as conexoes php-fpm, postgres, mysql e etc devem ser via TCP.
- Para o postgres
export PGHOST=localhost
(já configurado em /etc/php5/fpm/pool.d/meu_projeto.conf) - Para o nginx, editar as configs:
sudo nano /etc/nginx/nginx.conf master_process off; daemon off;
Finalmente, iniciar os serviços com:
sudo /etc/init.d/nginx start &
sudo service php5-fpm restart
Acessar o servidor em localhost:8080 (Ou configure o nginx para porta 80 e desabilite o IIS no windows)
IMPORTANTE No WSL não existe unix socket, por esse motivo, as conexoes php-fpm, postgres, mysql e etc devem ser via TCP.
me salvou, muito obrigado!