记录在飞牛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

相关推荐
川石课堂软件测试2 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
追风林10 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
城南vision12 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge12 小时前
Docker篇(Docker Compose)
运维·docker·容器
梦魇梦狸º15 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
鬼才血脉15 小时前
docker+mysql配置
mysql·adb·docker
詹姆斯爱研究Java16 小时前
Docker 的基本概念和优势
docker
南猿北者18 小时前
docker镜像仓库常用命令
运维·docker·容器
杨浦老苏18 小时前
Docker可视化管理面板DPanel的安装
运维·docker·群晖
航月19 小时前
FTP、ISCSI、CHRONY、DNS、NFS、DOCKER、MARIADB、NGINX、PHP、CA各服务开启方法
nginx·docker·mariadb