最近官产飞牛NAS系统开始公测,发现介绍的还不错,于是在虚拟机里面搭建了一个飞牛NAS系统试一试,发现这个nas系统里面的docker特别好用,特别是在现在很难拉取Docker官网的镜像。
飞牛NAS里面的docker内容丰富,拉取速度也不慢,很适合在极空间的NAS里面用虚拟机运行,完全解决了极空间docker不使用代理无法拉取镜像的问题,有兴趣的可以试试。
这里记录在飞牛NAS系统中通过Docker搭建Linux版本XAMPP软件环境所遭遇的问题,不得不说为了在docker中运行XAMPP,愣是耗了两天的时间才搞定…
目录导读
一、在 Windows虚拟机中安装飞牛NAS系统
为了复刻之前遭遇的问题,所以决定在Windows系统的虚拟机中重新搭建飞牛nas系统测试,
首先通过飞牛NAS系统官网下载TRIM.iso 镜像
再在虚拟机中进行安装,(如果是在极空间虚拟机中安装就没这么麻烦了,只需要修改UEFI固件启动就能直接安装完成.)
- 新建虚拟机
- 选择操作系统
通过hostnamectl
命令查询到飞牛Nas系统(fnOs)内核是linux 6.X版本
后面就一直默认就行,直到等待分区 - fnOS安装
设置好分区后,进入安装,这操作流程也是简单
安装后,如果提示异常或者重启出现异常提示,就手动重启虚拟机,
直到出现
就是安装完毕。
然后在游览器中访问输出的(fnOs Web UI can be directly accessed at:)地址:
http://192.168.193.138:8000/ - 登录注册进入NAS
二、Docker 安装 Linux版本XAMPP
Docker需要选择一个存储空间:
在使用Docker前需要先初始化存储空间,创建虚拟机时,注意虚拟机的硬盘大小,一开始我设置的20GB,后面不够用又重新追加20GB,才初始化文件目录。
- 安装chromium浏览器
飞牛NAS的应用中心中的应用,也是一些NAS热门的,本职上也是docker应用,只不过预先设置好的。
为了判断是否安装XAMPP成功,需要在nas中安装游览器
等待chromium浏览器安装完成
- Docker镜像
一看docker仓库里,125页的镜像也是牛皮,
现在国内基本连不上docker官方的镜像库了,各大镜像源也开始收费的收费,停用的停用。
下载安装XAMPP镜像
- 下载XAMPP镜像
在镜像仓库里面搜索xampp;
选择faridjapan112/xampp镜像下载
- 安装XAMPP
下载好后,在本地镜像中
启动配置-资源限制看个人需求,开机自动启动建议开启
- 端口设置
左边本地端口,右边容器端口
建议修改本地端口,避免和Docker中的其他镜像冲突
- 存储位置
存储位置都是按目录结构创建,
至少要有一个路径映射,要不然后面php文件都不知道怎么放进去
其他的环境变量,功能,网络,命令都可以直接使用默认值,开始下一步
使用chromium浏览器打开 (172.17.0.1:8080 )
xampp环境搭建成功!
启动容器进入终端,查看目录结构
测试运行PHP示例
使用PHP基础示例:简单的在线文件管理 一文的代码作为一个demo运行,
在之前创建的/www映射路径下创建一个index.php并写入demo代码
完整路径:/vol1/1000/XAMPP/www/Engineering/index.php
- 修改启动目录
想要运行这个demo需要修改以下配置文件,修改xampp的启动目录
- 修改:/opt/lampp/apache2/conf/httpd.conf 文件
先将 /opt/lampp/apache2/conf/httpd.conf 文件导出到 /www 目录下,修改完后,在替换原文件,通过终端命令输入:
cp /opt/lampp/apache2/conf/httpd.conf /www/httpd.conf
打开文件,将
Alias /bitnami/ "/opt/lampp/apache2/htdocs/"
Alias /bitnami "/opt/lampp/apache2/htdocs"
<Directory "/opt/lampp/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
修改为:
Alias /bitnami/ "/www/Engineering/"
Alias /bitnami "/www/Engineering"
<Directory "/www/Engineering">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
其中的/www/Engineering/
是指的项目目录,
再覆盖原有文件
cp /www/httpd.conf /opt/lampp/apache2/conf/httpd.conf
- 修改:/opt/lampp/etc/httpd.conf 文件
同样复制到/www目录下
cp /opt/lampp/etc/httpd.conf /www/etc_httpd.conf
打开文件,将229行和230行
修改为:
替换原有文件
cp /www/etc_httpd.conf /opt/lampp/etc/httpd.conf
再重启 apache
/opt/lampp/lampp restartapache
然后刷新chromium游览器172.17.0.1:8080出现异常
Warning: Unknown: Failed to open stream: Permission denied in Unknown on line 0
Fatal error: Failed opening required ‘/www/Engineering/index.php’ (include_path=‘.:/opt/lampp/lib/php’) in Unknown on line 0
这是因为没有权限访问,
通过vdir 命令,查看到/www 目录权限
修改权限
chown -R root:root /www/Engineering
chmod -R u+rwx,go+rwx /www/Engineering
在执行 /opt/lampp/lampp restartapache
重启后刷新正常访问:
值得注意的是,每次修改 /www/Engineering 目录下的文件或目录后,
都需要重新修改一遍 /www/Engineering 目录权限,要不然还是会有异常。
修改XAMPP中的PHP版本
重新复现操作的时候发现,就这点问题,愣是没搞明白,
但实际上再刚开始出现
Warning: Unknown: Failed to open stream: Permission denied in Unknown on line 0
警告的时候,我以为是PHP版本的问题,毕竟查看目录发现没有php的文件,于是走偏了,又重新去php的官网下载了一个最新版的php,替换原来的php配置,这一系列操作/找资料又耗费了一段时间。
如果要修改XAMPP的PHP版本配置,可以参考:
记录下使用XAMPP为PHP更换不同的版本教程
如何在XAMPP中更改PHP版本
三、使用Zeronews内网穿透
ZeroNews 是一个创新的边缘云内网穿透平台,中文名称为【零讯】,旨在帮助用户快速解决内网与外网之间的安全、快速访问需求,通过自研高性能zeronews tunnel协议,满足在无需更改内网网络环境或安装 VPN 等工具的情况,实现用户即可通过 ZeroNews 便捷地访问内网应用及资源。
ZeroNews 为用户提供免安装客户端程序,下载即可快速运行,无需系统依赖,支持 Windows、macOS、Linux、Openwrt、树莓派 等 x86 和 ARM 系统及设备。
使用 ZeroNews 完全可以替代向日葵的内网穿透服务,而且免费,
在Docker中使用ZeroNews 可以将Xampp搭建的172.17.0.1:8080地址映射到外网上,通过域名访问,
实现通过域名访问网站或者其他NAS服务。
可以参考:Docker 中 运行 Zeronews