Linux
系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Red hat/CentOS
有yum
,Ubuntu
有apt-get
Mac os
没有自带类似的东东,但有第三方支持:Homebrew
,Homebrew
简称brew
,是Mac OSX
上的软件包管理工具
,能在Mac
中方便的安装软件或者卸载软件,可以说Homebrew
就是mac
下的apt-get
或yum
在Mac中打开Termal
输入命令
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew home
brew update
这会更新 Homebrew
自己,并且使得接下来的两个操作有意义
brew outdated
这回列出所有安装的软件里可以升级的那些
brew upgrade
升级所有可以升级的软件们
brew upgrade <xxx>
如果不是所有的都要升级,那就这样升级指定的
brew cleanup
清理不需要的版本极其安装包缓存
brew search 软件名
,如brew search wget
正则查询 brew search /wge*/
brew info mysql
主要看具体的信息,比如目前的版本,依赖,安装后注意事项等
brew list
brew deps mysql
brew install 软件名
如
brew install wget
brew install nginx
brew install mysql
brew install php55
brew install git
brew remove 软件名
如brew remove wget
或 brew uninstall wget
这个相信很多人都已经用到过了,安装他人扩展的 brew
服务。由于 brew
和包含的包源都是通过 github
来管理,人为的维护管理,除了自己的源还允许别人的源添加进来。类似与 Ubuntu
的 ppa
。好处在于只有我安装规定的方式把包丢到 github
上面就可以用了!
brew tap <gihhub_user/repo>
这个命令也就是把一些库添加进来,brew
有个默认库
, 假如默认库
中没有php
我们就可以这样把php
添加进来
brew tap josegonzalez/php
有时会出现多个库的情况 如安装php55时
Error: Formulae found in multiple taps:
* homebrew/php/php55
* josegonzalez/php/php55
如果想去掉扩展的话可以使用命令
brew untap josegonzalez/php
假如我们用brew
安装nginx
brew install nginx
完成后brew会自动把nginx注册为服务
查询所有的服务
brew services list
就会发现多了一个nginx
那么这样操作这些服务呢
brew services start nginx
brew services restart nginx
brew services stop nginx
PHP
开发环境也可以直接下载集成环境
下面用brew
配置 PHP
环境
brew install openssl
xcode-select --install
先添加brew的PHP扩展库:
brew update
brew tap homebrew/dupes
brew tap homebrew/php
brew tap josegonzalez/homebrew-php
brew untap josegonzalez/php
可以使用 brew options php55
命令来查看安装php5.5的选项,这里我用下面的选项安装
brew install php55 --with-apache --with-gmp --with-imap --with-tidy --with-debug
请注意: 如果你希望以
apache
作为web server
,编译时要加--with-apache
;如果你的web server
是nginx
这类,就需要加上--with-fpm
。
PHP编译过程中如果遇到
configure: error: Cannot find OpenSSL's <evp.h>
错误,执行xcode-select --install
重新安装一下Xcode Command Line Tools
即可解决该错误
由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本:
echo 'export PATH="$(brew --prefix homebrew/php/php55)/bin:$PATH"' >> ~/.bash_profile #for php
echo 'export PATH="$(brew --prefix homebrew/php/php55)/sbin:$PATH"' >> ~/.bash_profile #for php-fpm
echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile #for other brew install soft
source ~/.bash_profile #更新配置
php -v
/usr/bin/php -v
查看扩展
php -i | grep extension_dir
发现版本已经是新安装的了 如果安装多个怎样切换
这种方式只能切大版本 也就是切5.5
,5.6
这种
要是切5.5.30
, 5.5.35
就不能这种方式了 就要用方式2
brew unlink php56
brew link php56
1) 安装php-version
brew install php-version
然后执行
source $(brew --prefix php-version)/php-version.sh && php-version 5
2) 使用php-version
直接执行
php-version
就可以看到现有的版本
然后使用以下命令切换即可
php-version 5.5.35
再看php的版本,已经切换好了。
chmod -R 777 /tmp
打开目录/usr/local/etc/php/5.5/
文本文档打开 php.ini
搜索session.save_path
设置为
session.save_path = "/tmp"
打开配置文件
sudo vim /etc/apache2/httpd.conf
把
LoadModule php5_module libexec/apache2/libphp5.so
修改为
LoadModule php5_module /usr/local/Cellar/php55/5.5.35/libexec/apache2/libphp5.so
可以在/Libary/WebServer/Documents/
目录中建立个phpinfo.php
来测试了
<?php phpinfo(); ?>
重启apache
sudo apachectl restart
sudo vi /etc/apache2/httpd.conf
,打开Apche的配置文件
httpd.conf
中找到#Include /private/etc/apache2/extra/httpd-vhosts.conf
,去掉前面的#
,保存并退出 已开启虚拟主机功能。sudo vi /etc/apache2/extra/httpd-vhosts.conf
,添加如下配置<VirtualHost *:80>
ServerName fqy.psvmc.cn
DocumentRoot "/Library/WebServer/Documents/fengqing"
ErrorLog "/private/var/log/apache2/fqy-error_log"
CustomLog "/private/var/log/apache2/fqy-access_log" common
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
/Library/WebServer/Documents
文件夹下的项目就不能访问了,所以要添加下面的配置,把默认位置配置为虚拟主机就可以了<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Library/WebServer/Documents"
ErrorLog "/private/var/log/apache2/localhost-error_log"
CustomLog "/private/var/log/apache2/localhost-access_log" common
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
sudo apachectl restart
,重启Apache
sudo vi /etc/hosts
,打开hosts配置文件
,加入127.0.0.1 fqy.psvmc.cn
,这样就可以配置完成虚拟主机了,可以访问http://fqy.psvmc.cn
了当然不想配置域名
的话也可以设置其它的端口
设置域名有局限性 用别的电脑或手机 是无法访问的 所以推荐使用其他端口
Listen 9999
NameVirtualHost *:9999
<VirtualHost *:9999>
ServerName localhost
DocumentRoot "/Library/WebServer/Documents/fengqing"
ErrorLog "/private/var/log/apache2/fqy-error_log"
CustomLog "/private/var/log/apache2/fqy-access_log" common
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
sudo apachectl restart
,重启Apache
http://localhost:9999/
访问了查看Apache的版本:sudo apachectl -v
Apache2.2
<Directory />
Order deny,allow
Deny from all
</Directory>
Apache2.4
<Directory />
Require all denied
</Directory>
Apache2.2
<Directory />
Order allow,deny
Allow from all
</Directory>
Apache2.4
<Directory />
Require all granted
</Directory>
Apache2.2
<Directory />
Order Deny,Allow
Deny from all
Allow from www.psvmc.cn
</Directory>
Apache2.4
<Directory />
Require host www.psvmc.cn
</Directory>
更多变化请查看
假如我的项目放在/Users/psvmc/Documents/php/fengqing
目录中 其中psvmc
是我电脑的用户名
然后添加如下配置
Listen 9999
NameVirtualHost *:9999
<VirtualHost *:9999>
ServerName localhost
DocumentRoot "/Users/psvmc/Documents/php/fengqing"
ErrorLog "/private/var/log/apache2/fqy-error_log"
CustomLog "/private/var/log/apache2/fqy-access_log" common
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
但发现无法访问http://localhost:9999/
试了很多方法都不行
报以下错误
You don't have permission to access / on this server.
有人说是修改项目文件夹的所有者
sudo chown -R _www:_www /Users/psvmc/Documents/php/fengqing
但是我试后发现并不起作用
但修改所有者也是必要的 这样修改的话 就不用更改文件夹的权限了
chmod -R 775 /Users/psvmc/Documents/php/fengqing
最后发现把文件共享
打开就行了
文件共享
打开方法
系统偏好设置
–> 共享
–> 文件共享
钩上
然后添加网站所在的文件夹
就可以了 这样网站就能访问了
直接安装官方的包
这里给个百度网盘的下载地址
但是并不推荐这样 因为安装容易卸载难啊
还是推荐用brew
安装
安装
brew install mysql
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql
获取当前登录用户名
whoami
例如我的是psvmc
设置文件的拥有者
sudo chown -R psvmc /usr/local/var/mysql/
启动mysql
mysql.server start
上面的启动方式 电脑重启就失效了 所以可以以服务的形式启动
brew services start mysql
最好给mysql设个密码,方法如下
mysqladmin -u root password 'root'
phpmyadmin
几乎是管理mysql
最容易的web应用了吧,每次我都顺道装上。
phpMyAdmin 4.4.15.5
,最新版本在我的PHP5.5.35
下运行有问题/Library/WebServer/Documents/
下 设置目录名字为phpmyadmin
phpmyadmin
目录下创建一个可写的config
目录http://localhost/phpmyadmin/setup
,安装一个服务,最后保存(这里只需要输入帐号密码就够了)config
下生成的config.inc.php
移到phpmyadmin
根目录下config
这样就装好了,虽然可能有点小复杂,但是来一次就习惯了。
这里很可能会遇到2002错误,就是找不到mysql.sock的问题,用下面方法解决
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
然后就可以通过http://localhost/phpmyadmin
访问
当然也可以用brew安装(不过安装的是英文版的)
brew install phpmyadmin
然后在apache的配置文件/etc/apache2/httpd.conf
中添加配置
Alias /phpmyadmin /usr/local/share/phpmyadmin
<Directory /usr/local/share/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
然后就可以通过http://localhost/phpmyadmin
访问
MongoDB可以说是最简单的一个,直接执行
brew install mongodb
为PHP添加MongoDB模块
brew install php55-mongo
启动方法
brew services start mongodb
卸载
brew uninstall php55-mongo
brew uninstall mongodb
重启Apache
sudo apachectl restart
默认帐号密码都是admin
RockMongo
是MongoDB
很好用的一个web应用,安装也很容易
/Library/WebServer/Documents/
下 设置目录名字为rockmongo
http://localhost/rockmongo
即可