Mac安装apache24和PHP多版本切换MongoDB和MYSQL

来源:互联网 发布:python做时间序列分析 编辑:程序博客网 时间:2024/06/08 18:09

Mac安装apache24和PHP多版本切换MongoDB和MYSQL

参考博客

中文翻译
英文原创

安装历程

安装Homebrew

  1. 打开终端输入($去掉):$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. 查看brew的版本:brew -v
  3. 看brew是否配置成功:brew doctor
  4. 添加第三方仓库:brew tap homebrew/php brew tap homebrew/apache
  5. 更新brew:brew update

安装Apache

Mac 10.12 有本机预装的Apache2.4,但是删除了很多脚本,要拓展插件还要自己编译,所以特别麻烦,所以抛弃本机自带的,我们自己安装一个。

如果之前已经运行过本机的Apache,那么要执行下面的命令来停止它还有阻止它自启动.
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ brew install httpd24 --with-privileged-ports --with-http2

执行成功出现 ,记住这个路径。
�� /usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 minute 45 seconds

设置自启动

$ sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons$ sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist$ sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

你也可以不设置自启动,以后需要时这样启动

启动Apache:brew services start homebrew/apache/httpd24重启Apache:brew services restart homebrew/apache/httpd24关闭Apache:brew services stop homebrew/apache/httpd24

已经成功安装apache,在chrome运行localhost出现it works

注意,如果不能连接服务器,
$ ps -aef | grep httpd来查看apache是否运行,
$ sudo apachectl -k restart重启apache,
$ tail -f /usr/local/var/log/apache2/error_log来查看错误日志


配置Apache

用mac的文本编辑器来打开,Apache的配置文件

$ open -e /usr/local/etc/apache2/2.4/httpd.conf

搜索 DocumentRoot,然后你会看到下面这行:

DocumentRoot "/usr/local/var/www/htdocs"

紧接着还要将上面这行代码下面的 <Directory> 也改为你的新的document root

<Directory "/Users/your_user/sites">    

<Directory>代码块里面,我们还需要将 AllowOverride 改为下面的样子:

# AllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords:#   AllowOverride FileInfo AuthConfig Limit#AllowOverride All   

接下来通过取消注释使用 mod_rewrite 模块:

LoadModule rewrite_module libexec/mod_rewrite.so    

现在 Apache 已经指向了我们的用户主目录下的 sites 目录,不过依旧还存在一个问题。Apche 运行的时候,其用户及用户组都是 daemon,当程序访问我们的用户主目录的时候,就会遇到权限问题。解决这个问题的方法就是,在 httpd.conf 将用户和用户组分别改为你的用户名 your_userstaff


PHP的安装

你可以使用 brew options php55 来查看所有可以安装的选项设置,比如在这个例子中,我们使用 --with-httpd24 参数来编译安装 PHP 以及使 Apache 支持 PHP 所需要的一些模块。

$ brew install php55 --with-httpd24$ brew unlink php55$ brew install php56 --with-httpd24$ brew unlink php56$ brew install php70 --with-httpd24$ brew unlink php70$ brew install php71 --with-httpd24

注意:我只安装了PHP56还有PHP71,一个稳定版,一个开发版,你们自己选择。如果之前已经安装过 PHP,可能需要使用 reinstall 来代替 install 进行安装。

我在安装时遇到这个错误:

==> ./configure --prefix=/usr/local/Cellar/php56/5.6.11_2 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/5.6 --with-config-file-path=/usr/local/etc/php/5.6 --withchecking whether to enable the SQLite3 extension... yeschecking bundled sqlite3 library... yeschecking for ZLIB support... yeschecking if the location of ZLIB install directory is defined... noconfigure: error: Cannot find libz

其原因可能是 Xcode 的 Command Line Tool 没有正确安装。解决问题的方法是运行下面的命令来重新安装

$ xcode-select --install

可能你要修改PHP配置文件

/usr/local/etc/php/5.5/php.ini/usr/local/etc/php/5.6/php.ini/usr/local/etc/php/7.0/php.ini/usr/local/etc/php/7.1/php.ini

Apache 和 PHP 的配置

我们已经成功安装了多个版本的 PHP,但我们还需要告诉 Apache 怎么使用它们。再次打开 /usr/local/etc/apache2/2.4/httpd.conf,并搜索 LoadModule php5_module 所在行。

可以发现,每个版本的 PHP 都有一个 LoadModule 入口,每个 LoadModule 都指向一个特定版本的 PHP。这里默认的路径如 /usr/local/Cellar/php71/7.1.0_11/libexec/apache2/libphp7.so 是 brew 应用程序的安装路径,我们可以使用一个更通用的路径来替换它们(具体的路径可能有所不同):

LoadModule php5_module        /usr/local/Cellar/php55/5.5.38_11/libexec/apache2/libphp5.soLoadModule php5_module        /usr/local/Cellar/php56/5.6.29_5/libexec/apache2/libphp5.soLoadModule php7_module        /usr/local/Cellar/php70/7.0.14_7/libexec/apache2/libphp7.soLoadModule php7_module        /usr/local/Cellar/php71/7.1.0_11/libexec/apache2/libphp7.so

将上面的路径修改为:

LoadModule php5_module        /usr/local/opt/php55/libexec/apache2/libphp5.soLoadModule php5_module        /usr/local/opt/php56/libexec/apache2/libphp5.soLoadModule php7_module        /usr/local/opt/php70/libexec/apache2/libphp7.soLoadModule php7_module        /usr/local/opt/php71/libexec/apache2/libphp7.so

之所以可以这么修改,是因为 /usr/local/opt/php71 其实是由 brew 创建的 /usr/local/Cellar/php71 的一个软连接。

这么修改的好处是,升级 PHP 的小版本号的时候,比如由 7.1.0_11 时,我们就不需要再修改 LoadModule 对应的值了

我们每次开发或运行依旧只需要一般也只能使用某一个版本的 PHP。以我们要使用 7.1 这个版本开发应用为例,将其他版本的 LoadModule 都注释掉,只保留对应版本的 LoadModule

#LoadModule php5_module        /usr/local/opt/php55/libexec/apache2/libphp5.so#LoadModule php5_module        /usr/local/opt/php56/libexec/apache2/libphp5.so#LoadModule php7_module        /usr/local/opt/php70/libexec/apache2/libphp7.soLoadModule php7_module        /usr/local/opt/php71/libexec/apache2/libphp7.so

接下来还需要配置 PHP 的主目录索引文件(Directory Indexes),找到下面的代码块:

<IfModule dir_module>    DirectoryIndex index.html</IfModule>

将其替换为下面的代码:

<IfModule dir_module>    DirectoryIndex index.php index.html</IfModule><FilesMatch \.php$>    SetHandler application/x-httpd-php</FilesMatch>

保存后重启 Apache,PHP 的安装就完成了:

$ sudo apachectl -k restart

验证PHP,新建一个index.php里面输入下面代码:

<?phpphpinfo();?>

打开浏览器输入:http://localhost,可以看到


PHP版本切换脚本

我使用的是sphp软件,国人很多使用php -v,哪个好用我也不知道。

把sphp放进bin目录下:

$curl -L https://raw.githubusercontent.com/sgotre/sphp-osx/master/sphp > /usr/local/bin/sphp

给sphp权限:

$ chmod +x /usr/local/bin/sphp

Homebrew 在安装程序的时候一般会把程序的可执行文件加入到 /usr/local/bin 和 /usr/local/sbin 这两个目录里面。通过下面的命令可以快速测试可执行文件路径是否正确:

$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

如果没有看到类似的输出,你可能需要手动添加这些路径。添加下面的代码到 shell 的配置文件中(不同的 shell 可能需要将路径添加到不同的配置文件中,如 ~/.profile ~/.bash_profile ~/.zshrc)。如果使用的是 macOS 默认的 shell,则添加到 ~/.profile (若没有这个文件,则创建它);如果使用的是 zsh,则添加到 ~/.zshrc:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

在添加路径到配置文件的时候,最好关闭其他不相关的终端,因为某些开着的终端可能会对路径造成一些奇怪的问题。添加完成后,配置会在下次打开终端的时候生效。或者使用下面的命令,重新载入配置文件使其立即生效

# 若使用的是默认终端$ source ~/.profile# 或如果使用的是 zsh$ source ~/.zshrc

MYSQL数据库的安装

旧版的安装

安装:brew install mysql启动:brew services start mysql重启:brew services restart mysql停止:brew services stop mysql

新版的安装

安装(drop-in replacement):$ brew install mariadb安装:$ mysql_install_db启动:$ mysql.server start停止:$ mysql.server stop修改密码:$ /usr/local/bin/mysql_secure_installation

配置如下:

Enter current password for root (enter for none):<–初次运行直接回车Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车New password: <– 设置root用户的密码Re-enter new password: <– 再输入一次你设置的密码Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车

MongoDb的安装

更新Homebrew的package数据库,在Mac的终端中输入:

$ brew update

开始安装MongoDb

$ brew install mongodb

我用的启动是(后台启动)

sudo mongod -f /usr/local/etc/mongod.conf

连接到MongoDb,可以用命令行工具mongo连接:

$ mongo

推荐使用可视化软件 Robomongo


注意(有用的提示)

Mac OS X取消(本机)Apache(httpd)开机启动

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist  

如果哪天你想让它开机启动了,则将unload 改为 load:

sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

目录结构

  • brew 软件的根目录

    /usr/local/Cellar
  • brew安装的apache配置文件在

    /usr/local/etc/apache2/2.4/httpd.conf
  • 本机自带的apache在

    /etc/apache2/httpd.conf
  • 本机PHP的配置文件在

    /etc/php.ini
  • brew 安装的PHP配置在

    /usr/local/etc/php/5.6/php.ini