MacOS下通过homebrew安装LNMP(PHP7.1)开发环境

Mac系统下安装LNMP一直没有一键安装包,最近重装了系统,发现要把这几个整起来还是有点麻烦的,百度很棒,可是要挨个查再配置终究还是很麻烦,记录一下整个安装配置过程,方便以后翻阅。

homebrew是个好东西,mac下绝对是开发者的福音,装软件那是梭梭的,按顺序来装吧。homebrew下最新的一路安装。

1.Nginx安装

brew install nginx

nginx安装完默认是8080端口,我还是喜欢80端口,修改掉。

默认配置文件路径

vim /usr/local/etc/nginx/nginx.conf
 

修改下文件夹权限,要不然系统重启的时候nginx起不来

#这里的目录根据你实际安装的目录来填写,默认是这个目录,不同的只是nginx的版本号而已
sudo chown root:wheel /usr/local/Cellar/nginx/1.12.2_1/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.12.2_1/bin/nginx
然后加入开机自启动
 brew services start nginx

输入浏览器查看是否访问正常http://127.0.0.1/

2.Mysql安装

brew install mysql
brew services start mysql

执行下mysql_secure_installation重置下密码然后就可以愉快的连接上去了

 

MySQL 8.0 调整密码验证规则:

set global validate_password.policy=0;
 set global validate_password.length=1;

SET GLOBAL innodb_fast_shutdown = 1;

 

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

3.PHP安装

先把php的资源加进去

brew tap josegonzalez/homebrew-php

然后一股脑全装上,反正开发环境总会用到的,当然你用不到的可以删掉

brew install php71

安装好以后基本上差不多了

vim ~/.bash_profile

里面添加环境变量

echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.zshrc 
echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.zshrc
php -v 看看版本对不对,不对就改改软连接之类的

我用vscode可以debug,所以配置下xdebug

查找下php.ini的配置文件路径

 php -i|grep ini
pecl install xdebug

vim /usr/local/etc/php/7.1/conf.d/ext-xdebug.ini

改下配置文件

zend_extension="/usr/local/Cellar/php@7.1/7.1.22/pecl/20160303/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1

保存好以后再确认下是否开启了远程调试

php -i|grep xdebug.remote_enable

xdebug.remote_enable => On => On

4.安装redis

brew install redis

5.安装DNSMasq

brew install dnsmasq

修改配置

vim /usr/local/etc/dnsmasq.conf

加入配置

address=/.dev/127.0.0.1
listen-address=127.0.0.1

修改配置

sudo mkdir /etc/resolver
sudo touch /etc/resolver/dev
sudo vim /etc/resolver/dev

添加

nameserver 127.0.0.1


sudo brew services start dnsmasq


测试结果

dig akblog.dev @127.0.0.1


6.安装Nginx支持SSL

cd /usr/local/etc/nginx/ssl
touch aktracking.dev.conf
vim aktracking.dev.conf

写入如下配置,自己修改最后的域名

[ req ]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only
[ subject ]
countryName                 = Country Name (2 letter code)
countryName_default         = US
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = NY
localityName                = Locality Name (eg, city)
localityName_default        = New York
organizationName            = Organization Name (eg, company)
organizationName_default    = Example, LLC
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_default          = Example Company
emailAddress                = Email Address
emailAddress_default        = test@example.com
[ x509_ext ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints       = CA:FALSE
keyUsage               = digitalSignature, keyEncipherment
subjectAltName         = @alternate_names
nsComment              = "OpenSSL Generated Certificate"
[ req_ext ]
subjectKeyIdentifier = hash
basicConstraints     = CA:FALSE
keyUsage             = digitalSignature, keyEncipherment
subjectAltName       = @alternate_names
nsComment            = "OpenSSL Generated Certificate"
[ alternate_names ]
DNS.1       = aktracking.dev

执行自签名生成

openssl req -config aktracking.dev.conf -new -sha256 -newkey rsa:2048 -nodes -keyout aktracking.dev.key -x509 -days 365 -out aktracking.dev.crt

7.Nginx配置虚拟主机和SSL

删除nginx.conf的配置内容,或者安装下面的内容修改

vim /usr/local/etc/nginx/nginx.conf

创建日志文件目录

mkdir -p /Volumes/MyDisk/studio/web/www/log/nginx/
    worker_processes  1;
error_log  /Volumes/MyDisk/studio/web/www/log/nginx/error.log;
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  /Volumes/MyDisk/studio/web/www/log/nginx/access.log  main;
    #sendfile            on;
    sendfile            off;
    #keepalive_timeout   65;
    keepalive_timeout   1;
    index index.html index.php;
    include /usr/local/etc/nginx/sites-enabled/*;
}


虚拟主机配置文件

touch /usr/local/etc/nginx/sites-available/aktracking
vim /usr/local/etc/nginx/sites-available/aktracking
    server {
    listen       80;
    server_name  aktracking.dev;
    root       /Volumes/MyDisk/studio/web/aktracking.com;
    access_log /Volumes/MyDisk/studio/web/www/log/default.access.log  main;
    error_log  /Volumes/MyDisk/studio/web/www/log/nginx/default.error.log  debug;
    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;
}
touch /usr/local/etc/nginx/sites-available/aktracking-ssl
vim /usr/local/etc/nginx/sites-available/aktracking-ssl
server {
    listen       443;
    server_name  aktracking.dev;
    root       /Volumes/MyDisk/studio/web/aktracking.com;
    access_log  /Volumes/MyDisk/studio/web/www/log/nginx/default-ssl.access.log  main;
    error_log  /Volumes/MyDisk/studio/web/www/log/nginx/default-ssl.error.log  debug;
    ssl                  on;
    ssl_certificate      ssl/aktracking.dev.crt;
    ssl_certificate_key  ssl/aktracking.dev.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;
}

编辑php-fpm

vim /usr/local/etc/nginx/conf.d/php-fpm
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;
}

加入可访问站点,直接软连接

ln -sfv /usr/local/etc/nginx/sites-available/aktracking /usr/local/etc/nginx/sites-enabled/aktracking
ln -sfv /usr/local/etc/nginx/sites-available/aktracking-ssl /usr/local/etc/nginx/sites-enabled/aktracking-ssl

重启nginx

nginx -s reload

Chrome自签名报错问题解决

8.Chrome自签名报错问题解决

74aa94a45f0c6fb7d7dc115239e0283f.jpeg

chrome下https会报错,解决方法为打开chrome的开发者工具

33eb85284b414aec740ceef7d1a19d39.jpeg

点击 View Certificate

f071af12ea7cc47e47a6c335d8e12aae.jpeg

把箭头指向的证书拖到桌面上,这个长按可以拖拽的

3b10d77603a075ba6d270e9dd99d1b83.jpeg

把证书安装到钥匙串里面

4b75648426aa52b84554eac88e5179cf.jpeg

选择系统钥匙串,拖进去

右键证书查看简介

74c9033cfa99daf6c4224bfbbf42dd4b.jpeg

选择始终信任改证书,再次访问的时候就正常了

706
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments