配置环境
OSX:10.12
Apache: Apache/2.4.25 (Unix)
背景
近日项目中需要对某一个接口下发不同类似的数据,这玩意可以让服务器下发,但因为需频繁修改,后端改动发布麻烦,索性就想起在本地搭建一个apache服务器。
apache在Mac是默认支持的,可以通过以下命令查看版本:
sudo apachectl -v
其他常见命令
sudo apachectl start //启动服务器
sudo apachectl stop //关闭服务器
sudo apachectl restart //重启服务器
这时,我想设置自己的apache根目录,在apache的项目目录/etc/apache2中,有个叫httpd.conf的配置文件,对它进行如下修改:
#DocumentRoot "/Library/WebServer/Documents"
DocumentRoot "/User/Documents/docs"//设置自己的根目录
#<Directory "/Library/WebServer/Documents">
<Directory "/User/Documents/docs"> //配置自己的根目录
...
</Directory>
端口更换:
#Listen 80
Listen 81
启动服务器后,可以在浏览器中输入localhost:81或127.0.0.1:81查看,如下图:
看起来像是我们没有权限访问根目录,为什么见根目录访问受限?
访问服务器上具体的文件
localhost:81/pages/test.json
即对应本地路径:
/User/Documents/docs/pages/test.json
请求路由
工具:Charles
菜单栏-Tools-Map Remote进行路由配置,如下:
添加路由
路由配置
此时,接口就可以成功被路由了。
根目录访问受限
遇到根目录访问受限时,可以查看apache的错误日志:
cd /var/log/apache2
cat error_log
看到最近的一段错误信息
[Fri Sep 20 10:31:45.304974 2017] [core:error] [pid 16208] (13)Permission denied: [client ::1:59081] AH00035: access to / denied (filesystem path '~/Documents/docs') because search permissions are missing on a component of the path
证实了的确没有访问权限,修改文件夹权限:
chmod o+rx ~/Documents/docs
同时,它也是由httpd.conf设置的。可以如下配置,获得权限:
<Directory />
AllowOverride none
Require all granted
Allow from all
</Directory>
权限说明
类似的权限有:apache权限
更多关于目录的权限参考:目录配置
参考
http://www.cnblogs.com/silence-wzx/p/5137766.html
http://www.cnblogs.com/leoyu/p/apache24_use_require_for_access_control_by_ip_and_useragent.html