mac apache2.4+php7.0+Laravel 搭建服
因为很久以前,在windows上搭建过apache+php的环境。所以这次要在mac上搭建以为很简单。但事实却是,搭建的过程异常艰辛。不过在我的不断google和探索下,最终还是搭建完成了。所以这里开一片帖子来记录下:
先来上两张图
Laravel默认站点 localhost站点
下面一步一步来安装
1. apache安装。
mac 其实自带的有apache服务器版本是2.4(mac sierra)。所以可以不用安装,直接启动就可以了。使用的相关命令是:
sudo apachectl start
sudo apachectl stop
sudo apachectl restart
启动后打开localhost:8080 可以看到 it works!
的网页。
2. php安装。
mac 也有自带的php 版本是5.6 你可以在终端输入:php -v
来查看自己的php 版本号。这里我安装的是php7.0 安装过程也是很曲折的。
我是用brewhome 来安装的。因为默认下php 不在brewhome的安装源中要手动添加上
brew tap homebrew/php
完成后输入:
brew install php70 --with-httpd24
我已开始没有加--with-httpd24 结果安装后找不到so文件。郁闷了半天。
--with-apache 已经废弃了。现在使用--with-httpd24来安装。这样安装时才会生成.so
文件供apache使用。使用这个命令后 brew 会自动安装httpd24 。所以有强迫症的患者可以手动删除。brew uninstall hhtp24
命令完成后在 usr/loca/Cellar/libexec/apache2文件夹下有一个libphp7.so文件。这个就是apache用到的so文件。
3. 配置apache
打开 /etc/apache2/httpd.conf
文件。这个文件及集成了对apache 服务器的配置。
搜索:Listen. 可以找到 Listen:8080字样。这个就是服务器使用的端口。这里改成80就可以了(当然也可以不改)。
接着往下可以看到很多加载模块的代码:
这里默认是会有这样的模块
#LoadModule php5_module libexec/apache2/libphp5.so
只要将#去掉就可以加载php5了。如果没有就自行添加。
我这里使用的是php7 所以在后面添加一句:
LoadModule php7_module/usr/local/opt/php70/libexec/apache2/libphp7.so
下面就是用户组的定义了:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
这个就是网站对应的用户组,这个之后会使用到。
下面就是设置管理员邮箱。服务器名等等。这里我们就用默认的。
再下面就是目录配置了:
<Directory />
Require all denied
</Directory>
这里要讲denied 改为granted 不然打开网站会提示错误。
再后面就是DocumentRoot 。这个是网站根目录。默认是/Library/WebServer/Documents
你可以在这个目录下放置你的站点。也可以自定义其他目录。我这里使用了另外一种Virtual hosts
来配置。所以这里不动。
网站文件支持定义:在
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
中添加php 文件的识别:
我把所有的都添加上了
DirectoryIndex index.html index.htmdefault.htm index.php default.php index.cgi default.cgi index.shtmlindex.aspx default.aspx
在文件的最后一行有一个
Include /private/etc/apache2/other/*.conf
要把这行打开。使用php7。还要做点东西。打开/private/etc/apache2/other目录。这里有一个文件php5.conf 这是php5.6的配置文件。我们新建一个php7.conf文件。在其中添加如下代码:
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
现在就剩下最后一步了:
主机配置了:
前面说道我是使用Virtual hosts
来配置的。所以在httpd.conf文件中找到:
#Include /private/etc/apache2/extra/httpd-vhosts.conf
去掉#号。然后打开 /private/etc/apache2/extra/httpd-vhosts.conf
文件。添加站点配置:
<VirtualHost *:80>
ServerAdmin you@example.com
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
ServerAlias localhost
ErrorLog "/private/var/log/apache2/localhost-error_log"
CustomLog "/private/var/log/apache2/localhost-access_log" common
<Directory “/Library/WebServer/Documents">
AllowOverride None
Options Indexes FollowSymLinks Multiviews
MultiviewsMatch Any
Require all granted
</Directory>
</VirtualHost>
保存文件。 在documents 添加一个index.php文件。 重启apache
在浏览器中输入:localhost 就可以访问站点了。
如果出现了错误。可以在var/log/apache2目录下查看日志。查看日志要养成习惯。日志可以快速定位问题。
4.Laravel安装
安装Laravel之前先安装php的包管理器composer。
brew install composer
修改 composer 的全局配置文件
composer config -g repo.packagist composer https://packagist.phpcomposer.com
适用composer 安装Laravel
composer global require "laravel/installer=~1.1"
加入到path 中去:
sudo echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bash_profile
创建实例。这个命令会自动下载相关依赖源。注意先切换到自己的目录中。
laravel new <name>
下面就是站点配置:
在 /private/etc/apache2/extra/httpd-vhosts.conf 中添加自定义站点:
<VirtualHost *:80>
ServerAdmin you@example.com
DocumentRoot "/Users/a1234/Documents/Workspace/weixinApp/public"
ServerName www.test.com
ServerAlias test.com
ErrorLog "/private/var/log/apache2/www.test.com-error_log"
CustomLog "/private/var/log/apache2/www.test.com-access_log" common
<Directory “/Users/a1234/Documents/Workspace/weixinApp/public">
AllowOverride None
Options Indexes FollowSymLinks Multiviews
MultiviewsMatch Any
Require all granted
</Directory>
</VirtualHost>
然后去etc/hosts 中绑定
127.0.0.1 www.test.com
如果提示没有权限修改的话。在终端执行下面命令:
sudo chmod og+w /etc/hosts
然后保存。在浏览器中输入:www.test.com
网页提示403 去日志中查看 没有权限。好吧,网上一阵搜索,原来是权限问题,好吧输入命令:
chmod 755 /Users/a1234/Documents/Workspace/weixinApp/public
restart Apache 还是403 我就郁闷了,又想到是不是上层路径没有权限啊。于是把每个路径都授权了。重试了下,OK.可以访问了。但是 Laravel文件下的storage/log/log 写入失败,没有权限。好吧,又授权了。但是 还是不行。最后的解决办法是:
切换到网站目录,执行
php artisan cache:clear
sudo chmod -R 777 storage
这两个命令。再次重启。好了,进入了Laravel 欢迎界面。
大功告成。