最近官产飞牛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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐