dtomasi / default
DNSMasq is used to resolve all domains that end with .dev to 127.0.0.1. So you don´t need to touch hosts-File anymore.
curl -L https://gist.githubusercontent.com/dtomasi/ab76d14338db82ec24a1fc137caff75b/raw/550c84393c4c1eef8a3e68bb720df561b5d3f175/dnsmasq.conf -o /usr/local/etc/dnsmasq.conf sudo curl -L https://gist.githubusercontent.com/dtomasi/ab76d14338db82ec24a1fc137caff75b/raw/550c84393c4c1eef8a3e68bb720df561b5d3f175/dev -o /etc/resolver/dev
# Start sudo brew services start dnsmasq # Stop sudo brew services stop dnsmasq # Restart sudo brew services restart dnsmasq
dig testing.a.domain.that.should.point.to.localhost.dev @127.0.0.1
brew tap homebrew/dupes && \ brew tap homebrew/php && \ brew install --without-apache --with-fpm --with-mysql php70
sudo nano /usr/local/etc/php/7.0/php-fpm.d/www.conf
user = YOUR_USERNAME group = YOUR_GROUP || staff
sudo brew services start php70
lsof -Pni4 | grep LISTEN | grep php
brew tap homebrew/nginx && \ brew install nginx
## Start Nginx sudo brew services start nginx ## Check if Nginx is running on default port curl -IL http://127.0.0.1:8080
Output should look like this
HTTP/1.1 200 OK Server: nginx/1.10.0 Date: Sat, 07 May 2016 07:36:32 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 26 Apr 2016 13:31:24 GMT Connection: keep-alive ETag: "571f6dac-264" Accept-Ranges: bytes
sudo brew services stop nginx
Create missing directories
mkdir -p /usr/local/etc/nginx/sites-available && \ mkdir -p /usr/local/etc/nginx/sites-enabled && \ mkdir -p /usr/local/etc/nginx/conf.d && \ mkdir -p /usr/local/etc/nginx/ssl
# Remove default rm /usr/local/etc/nginx/nginx.conf # Copy mine curl -L https://gist.githubusercontent.com/dtomasi/ab76d14338db82ec24a1fc137caff75b/raw/c7c99476e6d8bd5b23e814c5593861adb9b54765/nginx.conf -o /usr/local/etc/nginx/nginx.conf
## Start Nginx sudo brew services start nginx ## Check if Nginx is running on default port curl -IL http://localhost ## Output should look like this HTTP/1.1 200 OK Server: nginx/1.10.0 Date: Sat, 07 May 2016 08:35:57 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 26 Apr 2016 13:31:24 GMT Connection: keep-alive ETag: "571f6dac-264" Accept-Ranges: bytes
Create a folder for our SSL certificates and private keys:
mkdir -p /usr/local/etc/nginx/ssl
Generate 4096 bit RSA keys and the self-sign the certificates in one command:
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj «/C=US/ST=State/L=Town/O=Office/CN=localhost» -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt
Setup example virtual hosts
These are working presets. But you need to edit Document-Root
curl -L https://gist.githubusercontent.com/dtomasi/ab76d14338db82ec24a1fc137caff75b/raw/c7c99476e6d8bd5b23e814c5593861adb9b54765/default -o /usr/local/etc/nginx/sites-available/default && \ curl -L https://gist.githubusercontent.com/dtomasi/ab76d14338db82ec24a1fc137caff75b/raw/c7c99476e6d8bd5b23e814c5593861adb9b54765/default-ssl -o /usr/local/etc/nginx/sites-available/default-ssl
ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl
Create info.php for testing echo » /path/to/your/document/root
sudo brew services restart nginx curl -IL http://localhost/info.php # Output should look like this HTTP/1.1 200 OK Server: nginx/1.10.0 Date: Sat, 07 May 2016 08:40:36 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/7.0.6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
server |
listen 80; |
server_name localhost; |
root /Users/YOUR_USERNAME/Sites; |
access_log /Library/Logs/default.access.log main; |
location / |
include /usr/local/etc/nginx/conf.d/php-fpm; |
> |
location = /info |
allow 127.0.0.1; |
deny all; |
rewrite (.*) /.info.php; |
> |
error_page 404 /404.html; |
error_page 403 /403.html; |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
server |
listen 443; |
server_name localhost; |
root /Users/YOUR_USERNAME/Sites; |
access_log /Library/Logs/default-ssl.access.log main; |
ssl on; |
ssl_certificate ssl/localhost.crt; |
ssl_certificate_key ssl/localhost.key; |
ssl_session_timeout 5m; |
ssl_protocols SSLv2 SSLv3 TLSv1; |
ssl_ciphers HIGH:!aNULL:!MD5; |
ssl_prefer_server_ciphers on; |
location / |
include /usr/local/etc/nginx/conf.d/php-fpm; |
> |
location = /info |
allow 127.0.0.1; |
deny all; |
rewrite (.*) /.info.php; |
> |
error_page 404 /404.html; |
error_page 403 /403.html; |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
address=/.dev/127.0.0.1 |
listen-address=127.0.0.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
worker_processes 1 ; |
error_log /Library/Logs/nginx/error.log debug ; |
events |
worker_connections 1024 ; |
> |
http |
include mime.types; |
default_type application/octet-stream; |
log_format main ‘ $remote_addr — $remote_user [ $time_local ] » $request » ‘ |
‘ $status $body_bytes_sent » $http_referer » ‘ |
‘» $http_user_agent » » $http_x_forwarded_for «‘ ; |
access_log /Library/Logs/nginx/access.log main ; |
sendfile on ; |
keepalive_timeout 65 ; |
index index.html index.php; |
include /usr/local/etc/nginx/sites-enabled/*; |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
location ~ \.php$ |
try_files $uri = 404; |
fastcgi_pass 127.0.0.1:9000; |
fastcgi_index index.php; |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
include fastcgi_params; |
> |
By section dnsmasq => configure.
Before download the dev in /etc/resolver, must be create the resolver directory.
By sites configuration default in line 15 and default-ssl in line 25 replace with:
rewrite (.*) /info.php;
Replace the correctly curl url for:
After download site configuration, download php-fpm configuration.
MySQL and nginx modules are installed by default in the php70 install (apache is disabled by default).
—without-apache —with-fpm —with-mysql is unneeded as the options no longer exist and you’ll get warnings from brew (it will probably still build fine, but it always hurts my OCD).
In the section
«Test Installation and Start and Test Nginx»
curl -IL http://127.0.0.1:8080
curl -IL http://localhost
I get curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused and curl: (7) Failed to connect to localhost port 80: Connection refused
Help! Everything else went fine with no trouble, I just can’t view anything.
@the-interactive-company you might have manually create the /Library/Logs/nginx/ directory
i keep getting bad gateway error when trying to run php files. Im on El Capitan.
This is completely full of bugs and direct rip off of https://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/ for an older version of PHP.
It does more damage that usefulness — cannot even get HTML to work now.
@chaeMil your php-fpm instance is not running.
Some corrections to make this thing works:
on PHP-FPM, in Configure ( sudo nano /usr/loca/etc/php7.0/php-fpm.d/www.conf ), use:
user = YOUR_USERNAME group = staff
(don’t need the YOUR_GROUP || staff)
After Stop Nginx, Create missing directories and Configure nginx.conf , edit nginx.conf and make following changes:
remove the line error_log /Library/Logs/nginx/error.log debug;
inside http section, insert/update the following lines:
remove sendfile on;
then, the php-fpm must be configured.
create a file in /usr/local/etc/nginx/conf.d/php-fpm with the following content:
and finally, configure the virtual hosts.
edit the files /usr/local/etc/nginx/sites-available/default and /usr/local/etc/nginx/sites-available/default-ssl , and remove the files access_log (access log is already configured in nginx.conf
I don’t remember if this is all that I changed, but worked fine after this.
Thank you for wasting my time with this buggy shit.
@tobecwb : your config are correct just in the nginx.conf at the header it’s important to add
user YOUR_NAME YOUR_GROUP;
without this you have an 403 error
Here you find a good config nginx website
I cannot tap to homebrew/dupes. When I run command «brew tap homebrew/dupes». I got this message: «Error: homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated». How’s about this issue?
@thanhoangxuannghiep I don’t think you need homebrew/dupes anymore, it looks like everything you need is available from Homebrew core.
sudo nginx -t
nginx: [emerg] open() «/usr/local/etc/nginx/conf.d/php-fpm» failed (2: No such file or directory) in /usr/local/etc/nginx/sites-enabled/default:9
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed
Why php-fpm is not in conf.d folder?
Some corrections to make this thing works:
on PHP-FPM, in Configure ( sudo nano /usr/loca/etc/php7.0/php-fpm.d/www.conf ), use:
user = YOUR_USERNAME group = staff
(don’t need the YOUR_GROUP || staff)
After Stop Nginx, Create missing directories and Configure nginx.conf , edit nginx.conf and make following changes:
worker_process auto;
remove the line error_log /Library/Logs/nginx/error.log debug;
inside http section, insert/update the following lines:
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
remove sendfile on;
then, the php-fpm must be configured.
create a file in /usr/local/etc/nginx/conf.d/php-fpm with the following content:
and finally, configure the virtual hosts.
edit the files /usr/local/etc/nginx/sites-available/default and /usr/local/etc/nginx/sites-available/default-ssl , and remove the files access_log (access log is already configured in nginx.conf
I don’t remember if this is all that I changed, but worked fine after this.
Thanks for your php-fpm configuration content! It save my day!