记录在飞牛NAS系统中通过Docker搭建并配置Linux版本XAMPP镜像环境[图文]

最近官产飞牛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 目录下,修改完后,在替换原文件,通过终端命令输入:

bash 复制代码
cp /opt/lampp/apache2/conf/httpd.conf /www/httpd.conf

打开文件,将

cpp 复制代码
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>

修改为:

bash 复制代码
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/ 是指的项目目录,

再覆盖原有文件

bash 复制代码
cp /www/httpd.conf /opt/lampp/apache2/conf/httpd.conf
  • 修改:/opt/lampp/etc/httpd.conf 文件

同样复制到/www目录下

bash 复制代码
cp /opt/lampp/etc/httpd.conf /www/etc_httpd.conf

打开文件,将229行和230行

修改为:

替换原有文件

cpp 复制代码
cp /www/etc_httpd.conf /opt/lampp/etc/httpd.conf

再重启 apache

bash 复制代码
/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 目录权限

修改权限

bash 复制代码
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

相关推荐
檀越剑指大厂5 小时前
【Docker系列】docker inspect查看容器部署位置
运维·docker·容器
sg_knight8 小时前
Docker镜像搬运工:save与load命令的实战指南
docker·容器·备份与恢复·docker save·docker image备份
明仔丶10 小时前
开启docker中mysql的binlog日志
运维·docker·容器·binlog
大河之J天上来10 小时前
从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净
网络·爬虫·docker
zxy9821 小时前
Docker、Docker-compose、K8s、Docker swarm之间的区别
docker·kubernetes
心动啊1211 天前
docker常用命令总结
docker·容器·eureka
python算法(魔法师版)1 天前
Docker容器启动失败?无法启动?
linux·运维·nginx·docker·容器
不学无术の码农1 天前
Ubuntu 22.04 (WSL2) 上使用 Docker 安装 Nacos 3.0.0
ubuntu·docker
AnnyYoung1 天前
从Dockerfile 构建docker镜像——保姆级教程
docker·容器·eureka
何怀逸1 天前
安装 Docker
运维·docker·容器