最近做 Web 项目遇到一些问题,比如获取本地文件相关,或者 iframe 的传值问题,使用本地文件的方式(file:///)是无效的。而每次上传到阿里云服务器上来测试又太麻烦,所以可使用 Mac 自带的 Apache 服务器。
配置流程
1、创建文件夹
在家目录创建一个文件夹 Sites
,创建后这个文件夹会有所不同,文件夹上面有一个网络的标记。(提示:家目录也就是用户名目录,没有家目录的在 访达(Finder)-> 偏好设置-> 勾选家目录)
2、打开文件
打开终端,切换工作目录,进入 apache2
:
cd /etc/apache2/
打开此目录:
# 提示: `.` 代表当前目录; `..` 代表上一个目录
open .
备份文件,以防不测:
sudo cp httpd.conf httpd.conf.bak
3、修改文件内容
修改 httpd.conf
里面的内容:
这里我是直接用软件打开了文件来修改(确认修改内容时,需要电脑用户名的密码。)
# 查找 php,干掉一个注释。
LoadModule php7_module libexec/apache2/libphp7.so
#查找`#ServerName www.example.com:80`这行,去掉前面的#号,修改如下
#ServerName localhost:80 或者 ServerName 127.0.0.1:80
ServerName localhost:80
# 查找DocumentRoot,并修改路径为上面Sites的路径。
# 这里遇到了个麻烦,根据网上大多文章,接下的修改是 "/User/你的用户名/Sites",
# 而实际上我是该成了 Users 才成功,这不禁让我想起前段时间想改阿里云服务器的默认目录也一直不成功,会不是也是这个 Users 的问题,这里先记录下。
DocumentRoot "/Users/jianghouren/Sites"
<Directory "/Users/jianghouren/Sites">
# 查找 Options,在其后面加一个 Indexes
# 这个 Indexes 的作用是,如果此目录下没有 index.html 文件,则将目录内文件列出来,这用于本地测试很好用,但在正式服务器上一定要删除掉,否则可以通过域名加上目录名的方式,直接把服务器上的目录下文件都列出来。
Options Indexes FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride None
Require all granted
</Directory>
4、切换目录
切换目录到 /etc
,并拷贝 php.ini文件:
# 切换目录到 etc
cd /etc
# 并拷贝 php.ini文件
# `cp 文件1 文件2` 意思是 把文件1里面的内容全部拷贝到文件2
sudo cp php.ini.default php.ini
5、重启服务器
重启 apache 服务器:
# 暂停服务器: `sudo apachectl -k stop`
# 开启服务器: `sudo apachectl -k start`
sudo apachectl -k restart
6、验证
验证 apache 服务器是否配置成功,在浏览器输入:
http://localhost
或者输入
http://127.0.0.1
7、重试
如果重启 apache 出错了,可输入下面的命令,把上面的命令再重复一次:
有问题的话,就直接手动操作覆盖内容。
sudo cp httpd.conf.bak httpd.conf
8、更详细的图文操作,可查看参考资料链接。
注意:如果某一目录层级中有 index.html,会默认打开此文件。
9、连接同一网络的手机,可以通过访问 Mac 的 ip 地址来测试。(Mac 可以通过到网络里查看 ip 地址)
备注
参考资料: