概述:
Mac 下搭建
lamp开发环境很容易,有xampp和mamp现成的集成环境。但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且 Mac 本身自带apache和php,在brew的帮助下非常容易手动搭建,可控性很高
brew 安装
安装命令:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew常用命令:
安装软件:brew install 软件名,例:brew install wget
搜索软件:brew search 软件名,例:brew search wget
卸载软件:brew uninstall 软件名,例:brew uninstall wget
更新所有软件:brew update
更新具体软件:brew upgrade 软件名 ,例:brew upgrade git
显示已安装软件:brew list
查看软件信息:brew info/home 软件名 ,例:brew info git / brew home git
PS:brew home 指令是用浏览器打开官方网页查看软件信息
查看哪些已安装的程序需要更新: brew outdated
显示包依赖:brew reps
显示帮助:brew help
Apache 或 Nginx 二者安装一个即可, 本人安装的是 Nginx
Apache安装
Apache控制命令:
$ sudo apachectl start
$ sudo apachectl restart
$ sudo apachectl stop
唯一要改的是主目录,mac 默认在 home 下有个 Sites(站点)目录,访问路径是
http://localhost/~user_name
这样不太容易访问,修改/etc/apache2/httpd.conf 内容
DocumentRoot /Users/username/Sites
<Directory /Users/username/Sites>
Options Indexes MultiViews
# apache 2.2
# AllowOverride All
# Order allow,deny
# Allow from 127.0.0.1
# apache 2.4
Require local
</Directory>
这样 Sites 目录就是网站根目录了,通过 http://localhost 就可以访问了。
- 设置
vhost
设置 vhost 可以很方便的进行站点调试,尤其是对于需要在根目录运行的站点。推荐 VirtualHostX
然后输入:
<Directory "/pash/to/site">
Allow From All
AllowOverride All
Options +Indexes
</Directory>
<VirtualHost *:80>
ServerName "site.test"
DocumentRoot "/path/to/site"
</VirtualHost>
这么设置会有个问题,默认的 http://localhost 会被转到这儿来,所以专门再设置一下localhost 的 host 就好了。
<VirtualHost *:80>
ServerName localhost
DocumentRoot /path/to/root
</VirtualHost>
然后把 host 文件改一下,把刚刚设置的 ServerName 改到本地就好了。
$ sudo vi /etc/hosts
写入:
127.0.0.1 site.test
Nginx 安装
nginx 使用
安装 nginx
$ brew install nginx
打开 nginx (如果想要监听 80 端口,必须以管理员身份运行)
$ sudo nginx
nginx 配置重新加载|重启|停止|退出
$ nginx -s reload|reopen|stop|quit
nginx 重新加载可能会遇到下面报错
nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
解决方法
找到你的 nginx.conf 的文件夹目录, 运行下面命令
nginx -c /usr/local/etc/nginx/nginx.conf
再运行重新加载命令就可以了
nginx -s reload
测试配置是否有语法错误
$ nginx -t
配置修改 Nginx 配置文件
打开 nginx.config 文件
$ vim /usr/local/etc/nginx/nginx.conf
找到 server 的 location 配置,给 index 加一个 index.php
location / {
root html;
index index.html index.htm index.php;
}
打开 server 下被注释的 location ~.php$(即删除代码前面的 ‘#’)
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
修改 fastcgi_param 参数
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
修改为:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
创建 index.php
在
/usr/local/var/www目录下,删除index.html,创建index.php这个时候还不能访问php站点,因为还没有开启php-fpm
php-fpm 安装
Mac OSX 10.9的系统自带了PHP、php-fpm,省去了安装php-fpm的麻烦
修改 php-fpm 的配置,否则运行 php-fpm 会报错
$ sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
$ vim /private/etc/php-fpm.conf
修改 php-fpm.conf 文件中的 error_log 项【32行】,默认该项被注释掉,这里需要去注释并且修改为 error_log = /usr/local/var/log/php-fpm.log。如果不修改该值,运行 php-fpm 的时候会提示 log 文件输出路径不存在的错误
error_log = /usr/local/var/log/php-fpm.log
测试 nginx 服务, 在之前 nginx 配置文件 default.conf 中设置的 root 项对应的文件夹下创建测试文件
<!-- index.php 文件 -->
<!-- lang: php -->
<!-- ~/nginx_sites/index.php -->
<?php phpinfo(); ?>
查看 nginx 服务是否启动:【启动成功、有master这个进程】
$ ps -ef|grep nginx
- 启动nginx服务:
$ sudo nginx
- 修改
Nginx配置文件: 在上面已经配置好了 - 检查配置:【提示
successfull表示成功】
$ sudo nginx -t
过程中出现, 检查配置时会报下面警告, 该警告可以忽略
$ nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
4、重启 nginx 服务:
$ sudo nginx -s reload
5、启动php服务:
$ sudo php-fpm
6、在浏览器地址栏中输入 localhost:8080,如果配置正确地话,应该能看到 PHP 相关信息的页面
Mac下安装 MySQL (Mac 10.12)
注意电脑系统与
mysql版本匹配: 系统:mac 10.12 MySQL版本:5.7.15
建议安装 5.7.x 版本 Mysql
官方下载dmg安装包
- 官网下载
dmg安装包:【下载十分缓慢】 官网地址 MySQL 版本包网盘
注:dmg安装方式,新版本的安装包内,只有一个pkg包
- 点击
pkg包安装,一直默认步骤就可以【正常情况下就安装成功了】
重要提示: 生成的密码只是临时密码,会导致部分 mysql 工具提示临时密码拒绝登录。
- 测试并验证是否安装成功,进入
/usr/local/mysql/bin/,用ls命令查看是否有mysql
$ /usr/local/mysql/bin/
$ ls
如下图:
- 处理步骤
先关闭 MySQL 服务:系统偏好-MySQL-关闭【下面第6步后话中有界面图】
启动 mysq l的服务,输入以下命令:
$ sudo /usr/local/mysql/support-files/mysql.server start
注意,start为启动,那么 stop 就是停止,全命令如下:
$ sudo /usr/local/mysql/support-files/mysql.server stop
修改 mysql初始化密码
避免服务已经启动,所以第一步先关闭 mysql 的服务
$ sudo /usr/local/mysql/support-files/mysql.server stop
开启安全模式启动 mysql,这种方式可以不用输入默认密码
$ sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
出现如下画面是启动成功
此时,关闭这个终端窗口,再重新启动一个
进入 /usr/local/mysql/bin/,以root身份启动 mysql
$ ./mysql -u root
输入以下命令修改密码,其中PASSWORD里面就是要设置的密码
# UPDATE mysql.user SET authentication_string=PASSWORD('root') WHERE User='root';
# FLUSH PRIVILEGES;
退出 mysql,输入
$ quit;
停止 mysql 服务
$ sudo /usr/local/mysql/support-files/mysql.server stop
再启动mysql服务
$ sudo /usr/local/mysql/support-files/mysql.server start
使用以下命令进入mysql
./mysql -u root -p
此时,要求输入密码,就是前面设置的 root 密码
测试是否正常
$ show databases;
此时,如果出现 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement 的错误提示时,需要再设置一次密码
$ SET PASSWORD = PASSWORD('root');
再测试是否正常
$ show databases;
一切正常。
- 优化使用【关闭前面的
mysql,使用下面命令进行mysql监听】 通过上面的操作,每次都要进入到mysql的目录上进行启动,那么有两种方式alias和ln进行设置,ln其实不推荐,路径时很大的问题。推荐使用alias。
$ alias mysql=/usr/local/mysql/bin/mysql
【拓展】: mysql数据库操作的一些常用命令:
// 展示连接所有数据库信息
$ show databases;
// 使用某个数据库
$ use dataName;
// 查看当前数据库的表的信息
$ show tables;
// 查看某个特定表的详细信息
$ describe tableName;
- 后话
其实对比发现,用
dmg安转包安装的有很多好处,比如开机自动启动这些,全部都有gui工具使用 在系统的偏好设置上如下:
所以,非常推荐使用此方法安装在开发环境。
而对于linux下,命令行操作时首选。
使用brew命令安装mysql
安装
brew install mysql@版本号
常用命令
mysql.server start #启动mysql服务
mysql.server stop #关闭mysql服务
配置 在终端运行mysql_secure_installation脚本,该脚本会一步步提示你设置一系列安全性相关的参数,包括:设置root密码,关闭匿名访问,不允许root用户远程访问,移除test数据库。当然运行该脚本前记得先启动mysql服务。
部署在nginx服务器上的php文件连接mysql数据库
按照上面步骤配置好环境后:在www目录下创建php文件输入下面连接代码
<?php
$servername = "localhost";
$username = "root";
$password = "root";
try {
$conn = new PDO("mysql:host=$servername;", $username, $password);
echo "连接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
写完代码检可能会出现下面错误:【如果浏览器中显示连接成功,则就表示成功了】
mac上连接mysql数据库时报错:SQLSTATE[HY000] [2002] No such file or directory
解决方法
在 php.ini 文件中找到 extension=php_mysqli.dll 一行不需要取消注释,否则启动 php-fpm 会报错 Unable to load dynamic library
查看是否有php.ini文件
$ cd /etc
$ ls
没有php.ini文件执行下面命令
cp sudo cp php.ini.default php.ini
编辑php.ini文件:
$ vim php.ini
在php.ini文件中,找到以下三项,并做修改后如下:
1013行 pdo_mysql.default_socket= /tmp/mysql.sock
1162行 mysql.default_socket = /tmp/mysql.sock
1221行 mysqli.default_socket =/tmp/mysql.sock
重启nginx和php-fpm,在浏览器中输入localhost:8080文件名即可进行检验
参考资料 abing_hu 博文 简书文章 博文 Ryan_zheng博文