Mac系统下安装LNMP一直没有一键安装包,最近重装了系统,发现要把这几个整起来还是有点麻烦的,百度很棒,可是要挨个查再配置终究还是很麻烦,记录一下整个安装配置过程,方便以后翻阅。
homebrew是个好东西,mac下绝对是开发者的福音,装软件那是梭梭的,按顺序来装吧。homebrew下最新的一路安装。
1.Nginx安装
brew install nginx
nginx安装完默认是8080端口,我还是喜欢80端口,修改掉。
默认配置文件路径
vim /usr/local/etc/nginx/nginx.conf
修改下文件夹权限,要不然系统重启的时候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
我用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自签名报错问题解决
chrome下https会报错,解决方法为打开chrome的开发者工具
点击 View Certificate
把箭头指向的证书拖到桌面上,这个长按可以拖拽的
把证书安装到钥匙串里面
选择系统钥匙串,拖进去
右键证书查看简介
选择始终信任改证书,再次访问的时候就正常了
No Leanote account? Sign up now.