# 说明
本来 Vbox 虚拟机的共享文件夹用的好好的
因为电脑突然断电,重新挂载共享文件夹后发现,nginx 无法访问共享文件夹的静态文件
其他目录下,nginx 倒是访问好好的
始终没找到解决办法
最后想试试不用 Vbox 的共享文件夹,直接 windows 设置共享后挂载,最后可以访问正常了
#资源访问报错
net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)
#error log 日志
[alert] 82080#0: *53 sendfile () failed (22: Invalid argument) while sending response to client,
# 设置 windows 共享文件夹
选择一个文件夹 [share],右键 选择属性 弹出属性窗口 选择分页共享
创建共享,分配权限,可以新建一个用户比如账密为 share, 专门用来访问这个共享文件夹
成功后路径就是 //ip 地址 /share
# Linux 挂载 windows 共享文件夹
使用 mount.cifs 来挂载 windows 共享文件夹
参考链接 https://www.cnblogs.com/xia-weiwen/p/7416666.html
# 安装依赖
使用 mount.cifs 需要 cifs-utils 软件包(以及 cifs-utils 依赖的软件包)
sudo apt install cifs-utils |
# 挂载共享文件夹
挂载命令
#参考 | |
sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw] | |
#或者 | |
sudo mount -t cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw] | |
# 我的具体命令 | |
# 先创建挂载点目录 | |
sudo mkdir /mnt/www | |
sudo mount -t cifs /mnt/www -o //192.168.0.179/share username="share",password="share" |
挂载成功后发现,nginx 静态资源能正常访问了 [思考为什么之前 Vbox 的共享文件夹不能访问]
不过这样添加后,nginx 访问 php 项目报错 file_put_contents 权限问题,只能读,不能写
以上命令还有一些额外参数
#参考 | |
sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw],uid=[UID] | |
#先卸载原先的挂载 | |
sudo umount [mount point] | |
# 我需要 www 权限 id 为 1001 也可以设置,dir_mode=0777,file_mode=0777 | |
id -u [username] | |
#我的具体命令 | |
mount -t cifs //192.168.0.179/share /mnt/www -o username="share",password="share",uid=1001,dir_mode=0777,file_mode=0777 |
这样 nginx 下的 php 项目就能正常访问了
# 开机时自动挂载
使用 mount 挂载的方法在系统重新启动后就会失效,如果希望开机时自动挂载
根据自己的具体情况将下面设置加入 /etc/fstab 文件最后面就可以了。
//192.168.0.179/share /mnt/www cifs defaults,username=share,password=share,uid=1001,dir_mode=0777,file_mode=0777 0 2 |
# 进阶
vbox 网络 之前一直选择桥接模式,并且设置了固定 IP, 方便局域网内的其他主机访问。
但是家庭和工作网络环境差异,IP 网段差异,不能正常使用虚拟机。
可以设置双网卡,比如,一个桥接,一个 host-only,
其中 host-only 模式下,默认网段 192.168.56.* ,宿主机默认 IP 192.168.56.1
可以根据个人需要设置,并且不会因为网络环境改变,影响虚拟机的使用
# 遇到的坑
起先挂载是不顺利 一直报错
参考链接 https://blog.csdn.net/u010886217/article/details/102781023
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
Windwos 的安全策略
- win+r 然后输入 “gpedit.msc”
- 网络访问:本地账户的共享和安全模型
- 修改设置为 “经典”
# failed: Host is down
实际主机是正常的,挂载远程 NAS 时可以尝试指定不同的版本:vers=2.0,如果 2.0 不行,可以尝试 1.0 或 3.0
mount -t cifs //192.168.0.179/share /mnt/www -o username="share",password="share",uid=1001,dir_mode=0777,file_mode=0777,vers=2.0