参考:
macos 自带apache2
, 不用装nginx
等软件
apache2 常见命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # 启动apache2
sudo apachectl start
# 停止apache2
sudo apachectl stop
# 重启apache2
sudo apachectl restart
# 查看apache2状态
sudo apachectl status
# 检查配置
sudo apachectl configtest
# 重新加载配置
sudo apachectl graceful
# 添加自启服务
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
# 使用homebrew 替换内置apache先停止内置的
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
|
编辑主配置文件
1
2
3
| # 先备份
sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf.bak
sudo vim /etc/apache2/httpd.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
| # 修改主机名
ServerName macmini.local:80
# 和webdav相关的行取消注释
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
Include /private/etc/apache2/extra/httpd-dav.conf
# 修改用户和用户组
# 在终端中输入 id 获取
User 用户名
Group staff
|
编辑webdav配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| # 备份
sudo cp /private/etc/apache2/extra/httpd-dav.conf /private/etc/apache2/extra/httpd-dav.conf.bak
# /Users/用户名/Documents/webSite/webdav/var这个目录是自己创建的
DavLockDB "/Users/用户名/Documents/webSite/webdav/var/DavLock"
# 需要共享的文件夹 /music是服务器路径, 后面的是要分享的本地文件夹
Alias /music "/Users/用户名/Music"
# 这里也同样改动
<Directory "/Users/用户名/Music">
Dav On
AuthType Digest
# 貌似是密码提示相关,就保持webdav
AuthName webdav
# You can use the htdigest program to create the password database:
# htdigest -c "/usr/user.passwd" DAV-upload admin
# 这个密码文件后面生成
AuthUserFile "/Users/用户名/Documents/webSite/webdav/user.passwd"
Require valid-user # 新增的一行
AuthDigestProvider file
# Allow universal read-access, but writes are restricted
# to the admin user.
# 这里注释掉三行
# <RequireAny>
# Require method GET POST OPTIONS
# Require user admin
# </RequireAny>
</Directory>
|
补充: 子文件夹重定向到系统其他目录(有顺序)
需要先在davRoot
目录下新建obsidian
和music
文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| Alias /dav/music "/Users/用户名/Music"
Alias /dav/obsidian "/Users/用户名/Documents/obsidian"
Alias /dav "/Users/用户名/Documents/webSite/davRoot"
<Directory "/Users/用户名/Music">
Dav On
AuthType Digest
AuthName webdav
AuthUserFile "/Users/用户名/Documents/webSite/webdav/user.passwd"
AuthDigestProvider file
Require valid-user
</Directory>
<Directory "/Users/用户名/Documents/obsidian">
Dav On
AuthType Digest
AuthName webdav
AuthUserFile "/Users/用户名/Documents/webSite/webdav/user.passwd"
AuthDigestProvider file
Require valid-user
</Directory>
<Directory "/Users/用户名/Documents/webSite/davRoot">
Dav On
AuthType Digest
AuthName webdav
AuthUserFile "/Users/用户名/Documents/webSite/webdav/user.passwd"
AuthDigestProvider file
Require valid-user
</Directory>
|
生成密码文件
1
2
3
4
5
6
7
| # 创建配置目录
mkdir -p /Users/用户名/Documents/webSite/webdav/var
# 生成密码文件
sudo htdigest -c "/Users/用户名/Documents/webSite/webdav/user.passwd" webdav 用户名
# 自己实际的 用户名:用户组
sudo chown -R 用户名:staff /Users/用户名/Documents/webSite
sudo chmod -R 755 /Users/用户名/Documents/webSite
|
添加磁盘权限
macOS 设置,隐私与安全性,完全磁盘访问权限,依次添加 httpd 与 htdigest
路径为/usr/sbin/httpd
, /usr/sbin/htdigest
设置host
1
2
3
4
| sudo vim /etc/hosts
# 新增
127.0.0.1 macmini.local www.macmini.local
|
重新启动
1
2
3
4
| # 检查配置
sudo apachectl configtest
# 重新加载配置
sudo apachectl graceful
|
日志路径: /var/log/apache2/error_log
连接
在Finder
中按下cmd + k
, 输入地址http://macmini.local/music
作为静态服务器
修改基本配置
1
2
3
4
5
6
7
8
9
10
| sudo vim /etc/apache2/httpd.conf
# 取消注释
Include /private/etc/apache2/extra/httpd-vhosts.conf
# 改成自己要挂载的路径
DocumentRoot "/Users/用户名/Documents/webSite/www"
<Directory "/Users/用户名/Documents/webSite/www">
MultiviewsMatch Any
|
设置虚拟主机
1
2
3
4
5
6
7
8
9
10
11
12
| sudo cp /etc/apache2/extra/httpd-vhosts.conf /etc/apache2/extra/httpd-vhosts.conf.bak
sudo vim /etc/apache2/extra/httpd-vhosts.conf
# 新增
<VirtualHost *:80>
ServerAdmin admin@macmini.local
DocumentRoot "/Users/用户名/Documents/webSite/www"
ServerName macmini.local
ServerAlias www.macmini.local
ErrorLog "/private/var/log/apache2/macmini.local-error_log"
CustomLog "/private/var/log/apache2/macmini.local-access_log" common
</VirtualHost>
|
重启
把静态资源放到DocumentRoot
, 包含index.html
1
2
3
4
| # 检查配置
sudo apachectl configtest
# 重新加载配置
sudo apachectl graceful
|
浏览器输入地址http://macmini.local
webdav改成basic验证
安卓上的一些同步软件不支持Digest
验证, 只好换成Basic
1
2
3
4
| # AuthType Digest
AuthType Basic
# AuthUserFile "/Users/用户名/Documents/webSite/webdav/user.passwd"
AuthUserFile "/Users/用户名/Documents/webSite/webdav/user-basic.passwd"
|
1
2
3
4
5
6
7
8
9
| # 生成新的授权文件
sudo htpasswd -c "/Users/用户名/Documents/webSite/webdav/user-basic.passwd" 用户名
sudo chmod -R 755 /Users/用户名/Documents/webSite/webdav/user-basic.passwd
sudo chown -R 用户名:staff /Users/用户名/Documents/webSite/webdav/user-basic.passwd
# 检查配置
sudo apachectl configtest
# 重新加载配置
sudo apachectl graceful
|
上传超过1G的文件失败
/private/etc/apache2/extra/httpd-dav.conf
添加: