Mac 下 Nginx、MySQL、PHP-FPM 的安装配置
用了3年多的本本罢工,最近新入手了一台 rmbp,一堆工作环境要配置,LNMP 里的 NMP 是常规要安装的,恰好也是第一次在 mac 上安装配置 nginx、mysql、php,所以顺便做个记录,免得以后忘了也好查看,不用到处翻。
PS:下面的安装都是基于 homebrew,如果不熟悉或者还没安装有 homebrew 的话,可以查看这篇关于 homebrew 的介绍。
安装nginx
用 brew 一键安装 nignx:
|
1
|
brew install nginx |
如果需要安装其他 nginx 的版本,可以 "brew edit nginx" 打开修改 nginx 的安装信息包 formula,默认会用 vi 打开,在文件开头处修改 nginx 相应版本的下载地址就行。
brew 执行完后,nginx 就安装好了。可以用以下指令对 nginx 进行操作:
|
1
2
3
4
5
6
|
#打开 nginxsudo nginx#重新加载配置|重启|停止|退出 nginxnginx -s reload|reopen|stop|quit#测试配置是否有语法错误nginx -t |
详细 nginx 帮助信息:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
nginx 版本: nginx/1.2.6用法: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]选项: -?,-h : 打开帮助信息 -v : 显示版本信息并退出 -V : 显示版本和配置选项信息,然后退出 -t : 检测配置文件是否有语法错误,然后退出 -q : 在检测配置文件期间屏蔽非错误信息 -s signal : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件) -p prefix : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/) -c filename : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf) -g directives : 设置配置文件外的全局指令 |
打开 nginx 后,默认的访问端口 8080,如果要改为常用的 80 端口,则要修改 "/usr/local/etc/nginx/nginx.conf" 下监听(listen)端口值。
默认的文件访问目录(root)是 "/usr/local/Cellar/nginx/1.2.6/html"(这里的1.2.6是安装的nginx的版本,文件夹名以安装的nginx版本为准)。
把 nginx 设置为开机启动运行:
|
1
2
3
|
mkdir -p ~/Library/LaunchAgentscp /usr/local/Cellar/nginx/1.2.6/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist |
不过试了一下,不是超级用户登陆,而是普通用户登陆,并且监听的端口在1024以下的(例如把默认的8080端口改为了80端口),nginx 开机是启动不了。因此,要 nginx 开机启动的话,需要给予它管理员权限:
|
1
2
|
sudo chown root:wheel /usr/local/Cellar/nginx/1.2.6/sbin/nginxsudo chmod u+s /usr/local/Cellar/nginx/1.2.6/sbin/nginx |
安装mysql
|
1
|
brew install mysql |
在上面 brew 安装完后,会在终端上显示一些初始配置 mysql 的信息,如下:
1)初始安装 mysql 的一些配置数据库(例如:information_schema、mysql)
|
1
|
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp |
执行完后,就可以在终端里运行 "mysql",直接进入mysql数据库里。对,不用输入密码,可以直接连接,初始默认是可以匿名访问的。超级用户 "root" 也是没设密码,要设密码的话可以执行下面指令
|
1
|
/usr/local/opt/mysql/bin/mysqladmin -u root password 'new-password' |
现在访问 mysql 还是不用密码就可以连接,如果要设置一些登陆密码的安全访问限制,则需执行下面的 mysql安全安装指令
|
1
|
/usr/local/opt/mysql/bin/mysql_secure_installation |
主要是设置修改root密码(设置过了可以不用设置,略过)、删除匿名访问、删除root网络访问、删除test数据库。指令执行完后,登陆mysql就需要密码验证了
|
1
|
mysql -u root -p |
开机启动 mysql
|
1
2
3
|
mkdir -p ~/Library/LaunchAgents/cp /usr/local/Cellar/mysql/5.5.28/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist |
如果要停止 mysql 服务则:
|
1
|
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist |
设置 MySQL 的配置文件 my.cnf(默认在 /usr/local/Cellar/mysql/5.5.28/my.cnf,最好把配置文件移到 /etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf 这些位置之一,避免以后升级版本后 MySQL 配置被覆盖):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
[client]port = 3306[mysqld]port = 3306server_id = 1character-set-server = utf8default-storage-engine = INNODBsocket = /tmp/mysql.sockskip-external-lockingkey_buffer = 16Kquery_cache_limit = 256Kquery_cache_size = 4Mmax_allowed_packet = 1Mtable_open_cache = 128 # 表缓存的数目,一般是 max_connections 的倍数max_connections = 32thread_concurrency = 2sort_buffer_size = 64Kread_buffer_size = 256Kread_rnd_buffer_size = 256Knet_buffer_length = 2Kthread_stack = 64K#skip-bdbsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehashdefault-character-set = utf8[isamchk]key_buffer = 8Msort_buffer_size = 8M[myisamchk]key_buffer = 8Msort_buffer_size = 8M[mysqlhotcopy]interactive-timeout |
至此,mysql安装完毕。
安装php-fpm
Mac是预装了php,不过很多扩展都没安装,目测最多只能在终端里执行下php指令,所以我选择重新安装php。由于 brew 默认是没有 php 安装,所以要使用 “brew tap” 来安装 brew 的第三方程序包,这里使用 josegonzalez 的php安装包,具体操作如下:
|
1
2
|
brew tap homebrew/dupesbrew tap josegonzalez/homebrew-php |
执行完后,就可以用 brew 安装php了。这里php有几个版本可以安装,具体可以执行 "brew search php" 查看一下有什么php版本可以安装,一般会有“php52、php53、php54”版本,我安装的是最新的php5.4版本。由于PHP5.4版本已经内嵌了 FPM(FastCGI Process Manager),在安装选项里标明就行,本人 php 的安装配置指令如下:
|
1
|
brew install php54 --with-imap --with-tidy --with-debug --with-pgsql --with-mysql --with-fpm |
更多的安装选项可以通过 "brew options php54" 查看。指令执行完后,php 跟 php-fpm 就安装好了。
由于是重装php,之前系统预装的php还没卸载,因此在终端调用php时,还是以之前系统的php版本做解析,所以这里需要修改path,指定 php 的解析路径。在~/.bashrc(没有则创建)最后加入一行:
|
1
|
export PATH="$(brew --prefix php54)/bin:$PATH" |
添加之后再执行一下source,使之生效
|
1
|
source ./.profile |
OK,php-fpm安装完成。
要修改配置 php 或者 php-fpm 的话,可以修改 "/usr/local/etc/php/5.4/php.ini" 、 "/usr/local/etc/php/5.4/php-fpm.conf"。
启动 php-fpm 的话就直接在终端里执行 "php-fpm",默认打开 php-fpm 会显示一个状态 shell 出来,也可以把 php-fpm 的配置文件里的 "daemonize = no" 改为 "daemonize = yes",就会以后台守护进程的方式启动,对于刚修改的配置文件,可以执行 "php-fpm -t" 来检测配置有没有问题。
开机启动 php-fpm(下面的 5.4.9 是当前安装 php 的具体版本号):
|
1
2
3
|
mkdir -p ~/Library/LaunchAgentscp /usr/local/Cellar/php54/5.4.9/homebrew-php.josegonzalez.php54.plist ~/Library/LaunchAgents/launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php54.plist |
为了方便,写了个启动、关闭、重启 php-fpm 的 shell 脚本:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/bin/shparam=$1start(){ fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'` if [ ! -n "$fpms" ]; then php-fpm echo "PHP-FPM Start" else echo "PHP-FPM Already Start" fi}stop(){ fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'` echo $fpms | xargs kill -9 for pid in $fpms; do if echo $pid | egrep -q '^[0-9]+$'; then echo "PHP-FPM Pid $pid Kill" else echo "$pid IS Not A PHP-FPM Pid" fi done}case $param in 'start') start;; 'stop') stop;; 'restart') stop start;; *) echo "Usage: ./phpfpm.sh start|stop|restart";;esac |
设置 Nginx 的 PHP-FPM 配置
打开 nginx 默认注释掉的php location设置,修改如下(具体配置参数,例如路径,这里以我本地安装为准):
|
1
2
3
4
5
6
7
|
location ~ \.php$ { fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/Cellar/nginx/1.2.6/html$fastcgi_script_name; include /usr/local/etc/nginx/fastcgi_params;} |
OK,这样就可以在访问目录下(默认是/usr/local/Cellar/nginx/1.2.6/html)执行 php 文件了。嗯,赶快输出一下 "phpinfo()" 吧:)
一些问题
|
1
2
3
4
5
|
Error: SHA256 mismatchExpected: 3fe780e5179e90c4d37276e79acc0d0692f1bc0911985af694b92c664c0ef3c4Actual: f9dbbb4e5ecd98010a3c4686d0713dcda6a77223fb9d05537089b576ab8f7fddArchive: /Library/Caches/Homebrew/php54-5.4.28To retry an incomplete download, remove the file above. |
这里是 PHP 5.4.28 源代码地址出错的问题,修改文件 /usr/local/Library/Taps/josegonzalez/homebrew-php/Formula/abstract-php-version.rb 下 Php54Defs 的源码地址 PHP_SRC_TARBALL 的值,这里改用http://mirrors.sohu.com/php/php-5.4.28.tar.bz2 这个地址。
Mac 下 Nginx、MySQL、PHP-FPM 的安装配置的更多相关文章
- Linux下 nginx + 最新版php5.5 安装配置详解
1.nginx的安装: 首先nginx的安装需要依赖最基础的三个包,这里面我们不设计更多的扩展模块,只是安装最基础的三个包, zlib 此包主要是对http内容进行gzip压缩,减少网络传输流量 PC ...
- mac下Nginx+lua模块编译安装
Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...
- CentOS 7 下 JDK1.8+Maven+Nginx+MySql+Git+Redis环境安装
CentOS 7 下 JDK1.8+Maven+Nginx+MySql+Git+Redis环境安装 安装目录准备 新建data目录,用来放下载的软件 mkdir -p /data 切换到该data目录 ...
- 搭建windows环境下(nginx+mysql+php)开发环境
搭建windows环境下(nginx+mysql+php)开发环境 1. 所需准备应用程序包 1.1 nginx 程序包nginx-1.0.4.zip或其他版本(下载地址: http ...
- mac下启动mysql
mac下使用mysql有点蛋疼,每次都要找命令.可能不同版本或者安装方式mysql的位置不太一样, 可以使用locate mysql.server查找一下. # start sudo /usr/loc ...
- Linux下查看mysql、apache是否安装,安装,卸载等操作
Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root ? :: /bin/sh /usr/ ...
- Mac下sublime text 的“package control”安装
小伙伴们好,我根据昨晚的经历写一个小总结:关于“Mac下sublime text 的“package control”安装”.本来安装package control是一个无比简单的事情,即使是初次使用 ...
- MAMP mac下启动Mysql
MAMP mac下启动Mysql /Applications/MAMP/Library/bin/mysql -u root -p 初始密码 root:
- mac 下重启 MYSQL 命令
在mac 下重启mysql的命令如下: 启动MySQL服务 sudo /usr/local/MySQL/support-files/mysql.server start 停止MySQL服务 sud ...
- Linux下PHP+MySQL+CoreSeek中文检索引擎配置
说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...
随机推荐
- 什么才是程序员的核心竞争力?zz
原文出处: 知乎 姚冬的观点 学习能力,尤其是自学能力,你啥时看到那些有名的程序高手在论坛上问“学习 XX 该看什么书,如何快速学习 XXX,学习 XXX 有什么代码推荐”之类的问题,他们想学什么很快 ...
- DJANGO的API跨域实现
Ajax跨域请求报错:XMLHttpRequest cannot load ''. No 'Access-Control-Allow-Origin' header is present on the ...
- PHP 过滤 及 字符转换 函数
PHP过滤html标签的内部函数. php过滤html的函数: strip_tags(string) 这样就可以过滤掉所有的html标签了. 如果想过滤掉除了<img src="&qu ...
- Android 命名规范 (提高代码可以读性) 转
转自:http://blog.csdn.net/vipzjyno1/article/details/23542617 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件 ...
- SQLServer2008 和SQLServer2008 R2版本导出 数据库结构和数据sql
①SQLServer2008 版本导出 数据库结构和数据sql ②SQLServer2008R2 版本导出 数据库结构和数据sql 采集 #HUABAN_WIDGETS .HUABAN-red-nor ...
- matlab练习程序(图像球面化)
十一没什么事干,接着看图像算法. 这个球面化算法最初是在ps上的球面化滤镜中看到的,感觉挺有意思,就研究了一下. 算法的详细推导可以在这篇博客中找到,我比较懒,只在纸上推了一遍,就不在博客上编辑了. ...
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- haohantechsoft-PDA软件,PDA管理软件,PDA管理系统,仓库PDA销售开单盘点软件
为了更好服务于广大服装客户群体进行销售.盘点.调拨配送等.推出基于无线网络版移动PDA销售开单盘点软件系统.该系统支持无线3G.WIFI.GPRS系统,用户可以手持PDA在无线网络连接状态下进行销售. ...
- Hadoop_10_12虚拟机01_虚拟机NAT方式联网【自己的亲测笔记】
NAT方式 1.查看网络信息--ifconfig(同windows中的ipconfig相同) 主要关注的是第三行内容,分别是Ip地址.广播地址.子网掩码 2.安装完系统后需要配置三个地方--IP地 ...
- 水题 Codeforces Round #296 (Div. 2) A. Playing with Paper
题目传送门 /* 水题 a或b成倍的减 */ #include <cstdio> #include <iostream> #include <algorithm> ...