# 1Panel 避坑/使用指南-比1Panel官方教程还有用

**URL:** <https://forum.rainyun.com/t/topic/6563>\
**Category:** 云服务器 RCS\
**Created:** [2024 年1 月 6 日 18:44 UTC](https://forum.rainyun.com/t/topic/6563 "2024-01-06T18:44:35Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

作者： ![hhjmk](https://forum.rainyun.com/user_avatar/forum.rainyun.com/hhjmk/32/11397_2.png) [@hhjmk](https://forum.rainyun.com/u/hhjmk)\
发布日期： [2024 年1 月 6 日 18:44 UTC](https://forum.rainyun.com/t/topic/6563/1 "2024-01-06T18:44:35Z")

</div>

# 当加入HSTS预加载列表检测失败时

你应该点击对应网站的配置按钮

 ![image](https://forum.rainyun.com/uploads/default/original/2X/7/782ca2162a7292b5bf3089439b2450c229d01ad7.png)

随后点击配置文件

找到类似下面这行

 ![image](https://forum.rainyun.com/uploads/default/original/2X/a/a851ca41f960ed47b1a4091966f0097102fdd04f.png)

如果找不到，你可以按下Ctrl + F打开查找，并输入"Strict-Transport-Security"

 ![image](https://forum.rainyun.com/uploads/default/original/2X/1/18853837f5e3727ec52cfead904090df358e03e4.png)

输入内容后点击一下next即可自动定位到该行

请重点观察本行是否有"includeSubdomains; preload"的字样，以及max-age等号后的数字是否大于31536000（1年，但推荐63072000）

如果未来1Panel更新了其他原生兼容的web服务器（而不是ols这样的社区套壳），请参考此文章来做出对应web服务器的配置修改

[WordPress启用HSTS，增强用户信任和网站安全性-风屿岛 (biliwind.com)](https://www.biliwind.com/805.html)

# 接入CDN、WAF后提示网页重定向次数过多

请首先尝试将CDN、WAF的上游（回源）服务器配置为https地址

 ![image](https://forum.rainyun.com/uploads/default/original/2X/a/a54854c6ebb027123ab55fb0b7a174b0405b35fd.png)

上图为雷池WAF的示例

如果依然不行，请尝试将此处改为“http可直接访问”

 ![image](https://forum.rainyun.com/uploads/default/original/2X/d/ddc5b6bdf21b6a52ab7870dfc41139aa61a4535a.png)

# 从其他环境迁移到1Panel后出现403错误

请仔细检查你的网站根目录中是否含有一个叫做“.user.ini”的文件

 ![image](https://forum.rainyun.com/uploads/default/original/2X/b/bf1b8350b41c6d38e412eefe9e0c6426a5a93f86.png)  
 ![image](https://forum.rainyun.com/uploads/default/original/2X/9/9896b299c706b7399de636f41fea65c0016b0363.png)

如果有，删除它，因为它可能包含了错误的执行位置限制路径

# 1Panel是否可以和宝塔共存

可以，你可以在服务器上同时安装1Panel和宝塔，也可以在1Panel中安装宝塔，或者在1Panel中安装1Panel

 ![image](https://forum.rainyun.com/uploads/default/original/2X/8/85ec77813c1fd6aadecb4d148107a6f6153cbb19.png)

但这么做的前提是你已经引入了第三方应用商店

# 为什么[雨云](https://www.rainyun.com/wp-admin_)有宝塔虚拟主机却没有1Panel虚拟主机

因为宝塔虚拟主机使用了LXD技术，这是宝塔所支持的，但1Panel依赖docker，LXD虚拟化中不能运行docker容器化，所以不支持

但[雨云](https://www.rainyun.com/wp-admin_)的云服务器、游戏云是支持的，因为其使用了KVM技术

# 为什么存储空间越用越少

可能是由于未使用的docker镜像占据了大量空间

 ![image](https://forum.rainyun.com/uploads/default/original/2X/4/4d5b99c16675106fc7f9efc521f05e43ef7d724e.png)

以上操作可以释放镜像，但当镜像过多时，1Panel有bug

此bug复现方式很简单，当你所在的页面没有状态是“未使用”的镜像时，点击清理镜像会无效

 ![image](https://forum.rainyun.com/uploads/default/original/2X/f/f76165dcaf43109de1636b41c6e87bc7281b7100.png)

临时修复方法是寻找其他分页，找到有“未使用”状态的镜像后再次清理即可清理全部未使用镜像

但是此方法可能会删掉你创建的运行环境镜像

# 1Panel申请证书时莫名其妙失败

此方法多半由于站点是由反向代理访问的，解决方法是不在服务器上生成证书，而是使用第三方服务生成

# 需要多个相同PHP版本但不同扩展的运行环境

此操作在宝塔上并不可行，但1Panel可以这样做

如果你的a应用需要PHP80+扩展X，b应用需要PHP80+扩展Y，但扩展X和扩展Y不支持共存，那么你可以使用两个运行环境

你只需要在创建运行环境时修改镜像名即可

 ![image](https://forum.rainyun.com/uploads/default/original/2X/0/000dc228ed25fbca14936eb6e1f8195100d577e7.png)

创建完成后的两个运行环境互相独立，互不影响

# 需要的扩展不在官方支持列表中

根据官方文档介绍，如果你要找的PHP扩展不在扩展选择列表中，可以手动输入然后选择第一个

 ![image](https://forum.rainyun.com/uploads/default/original/2X/7/7e86d687d607fbc363ddbc3973d5f77038c7faeb.png)

如扩展“zip”不在此列表中，我可以手动输入zip并选择第一个

 ![image](https://forum.rainyun.com/uploads/default/original/2X/8/8fe87ee8c263c296ca267269c88c239fd78803da.png)

但如果不在[PHP扩展列表](https://1panel.cn/docs/user_manual/websites/php/#php_1)中，那么需要手动安装

以魔方财务开心版为例，需要安装一个叫做idcsmart.so的扩展，但其并不在官方的扩展列表中，所以我们需要按照正常流程创建完运行环境和网站，并且在容器页面根据镜像名、容器名以及运行时间来判断哪个是刚刚创建的网站的容器

 ![image](https://forum.rainyun.com/uploads/default/original/2X/2/22a48662d0d4949de59452531747031f47c8d095.png)

假设这个容器就是要增加自定义插件的容器

 ![image](https://forum.rainyun.com/uploads/default/original/2X/5/58c724cdc8b7ca1cde214860b97e78617e5299d3.png)

首先要点击容器名

 ![image](https://forum.rainyun.com/uploads/default/original/2X/c/c41454e653844ba6de7d19c40c703b643161d7b7.png)

向下拉，复制MergedDir后面引号中的内容

 ![image](https://forum.rainyun.com/uploads/default/original/2X/7/771d826fe6247f78d9de50d23d00cf0b4299a8ee.png)

访问这个目录，分别点进/usr/local/lib/php/extensions目录中，之后打开里面这个no开头的文件夹

 ![image](https://forum.rainyun.com/uploads/default/original/2X/a/a6d639fb0a4f464d68dff004b5707c848c6fbb20.png)

将自定义扩展上传至此目录

 ![image](https://forum.rainyun.com/uploads/default/original/2X/0/0787e0e70781c85721154737854611b49f41c349.png)

在对应网站的PHP配置文件行末添加一个引用语句即可

 ![image](https://forum.rainyun.com/uploads/default/original/2X/3/36d7a4dde9896bc3d21d7b5f78d39f0473b3d9e7.png)

一般情况下，需要添加的内容为

```auto
extension=你的扩展名

```

注意是包含扩展名的全名

也有可能是

```auto
extension=/path/to/extension/你的扩展名

```

注意，此路径需要根据实际进行修改，例如此处可以修改为

```auto
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20200930/idcsmart.so

```

之后重启此容器即可  
注意，这种方式添加的扩展会在重建容器后丢失

# 创建网站时为什么要填写PHP-FPM端口

 ![image](https://forum.rainyun.com/uploads/default/original/2X/b/b9b6c1e06daaca7bbdf05a3c42155b5e8dc58fc4.png)

新手可能会问，这是我网站的访问端口吗？我是需要反向代理这个端口吗？

都不是，这是web服务器与PHP通信用的端口，宝塔默认使用套接字连接，所以你压根看不到这个设置，而1Panel使用TCP连接，所以需要这个端口来让PHP与web服务器进行通信

# 我只能使用openresty吗

1Panel官方支持且能用的web服务器只有openresty

 ![image](https://forum.rainyun.com/uploads/default/original/2X/e/e97f63b25eb9de70811e4e5f452851433ab6a950.png)

虽然官方有ols web服务器，但这东西是从社区搬过来的，并没有做出适配，你需要自己为ols写配置文件、编译lsphp等，1Panel中的任何操作都无法同步进ols中

当然，你可以使用nginx、openresty、tengine等基于nginx（或完全兼容nginx配置文件的web服务器）

首先你需要他们的docker镜像，但是我建议使用dockerfile构建一个并加入lua模块

之后找到openresty的docker容器，点击编辑

 ![image](https://forum.rainyun.com/uploads/default/original/2X/0/0c2bc2dd6636d8c54ff3994fdcfe9650195c1e3d.png)

之后选择你刚刚构建好的镜像，点击确认完成替换

 ![image](https://forum.rainyun.com/uploads/default/original/2X/1/1c74e26947a9204095ba4a0484feea6a692404c1.png)

# 容器编辑需要重建容器

其实某些操作并不需要重建，而是使用update语句

 ![image](https://forum.rainyun.com/uploads/default/original/2X/1/1f5b0d6a84eaed66bc688e43ef06c0b801e5f391.png)

证据：未持久化的数据并没有丢失，且更改生效，并且运行时间也正常（没有几秒前启动等明显的重启痕迹）

# MySQL、Redis等无法连接

这多数出现在PHP网站项目中或任何1Panel的应用中

这是因为1Panel中的所有docker部署的应用都会默认归为一个名为1panel-network的桥网络中

 ![image](https://forum.rainyun.com/uploads/default/original/2X/1/1d1317bf7e7db48d403b60738e46b490057e3c59.png)

并且1Panel在创建数据库等容器时指定了host名，所以需要通过mysql:3306，redis:6379来连接，而不是使用127.0.0.1这样的回环IP，因为回环IP只是相对于运行环境所在容器的，并不是相对于主机的，所以无法建立连接

openresty属于一种特殊的应用，它默认是host网络，即与服务器主机共享一个IP地址，但此共享并不是NAT（网络地址转换）共享IP，而是让容器内的进程直接获得与宿主机相同的网络权限，可以直接占用宿主机的网络端口，直接使用宿主机的IP地址，所以在反向代理时可以使用127.0.0.1

# 无法使用mysql:3306作为数据库连接地址

这种问题一般出现在某些项目中，原因是项目的验证逻辑认为mysql并不是一个有效的网络地址，而类似127.0.0.1，example.com才是有效的网络地址，我们可以将mysql的ip地址填进去

 ![image](https://forum.rainyun.com/uploads/default/original/2X/6/6be05c65fc8020cb23f6c9740ffc0ba19e93214e.png)

找到你的MySQL容器，即可看到此容器在这个桥网络中的内网IP地址，使用此地址连接即可（但不稳定，易受到外界因素干扰，如容器非正常顺序启动）

如果不希望使用此方法，可以将你的应用改为host网络，这样就可以使用127.0.0.1这样的回环IP进行连接（我在赫兹监控上使用的就是这种方法）

# 使用服务器级cron代替wp-cron执行时未找到文件

你很可能将cron目录填写错了

 ![image](https://forum.rainyun.com/uploads/default/original/2X/0/0f0df7793ac2d8a85bee2f34cbe0fe75a76feb39.png)

这虽然是正确的网站目录，但却是从容器中映射出来的，在容器中执行cron时肯定找不到这个路径

正确的方法是使用cron时选择网站所在的PHP容器，并且使用以下的执行命令

 ![image](https://forum.rainyun.com/uploads/default/original/2X/9/9eaedd395172cf96cf14e8abaf79175807f8f742.png)

```auto
php /www/sites/www.example.com/index/wp-cron.php

```

---

<div class="post-metadata">

作者： ![gzy](https://forum.rainyun.com/user_avatar/forum.rainyun.com/gzy/32/12796_2.png) [@gzy](https://forum.rainyun.com/u/gzy)\
发布日期： [2024 年1 月 7 日 03:21 UTC](https://forum.rainyun.com/t/topic/6563/2 "2024-01-07T03:21:12Z")

</div>

写的非常好

---

<div class="post-metadata">

作者： ![Misaka\_L](https://forum.rainyun.com/user_avatar/forum.rainyun.com/misaka_l/32/280_2.png) [@Misaka\_L](https://forum.rainyun.com/u/Misaka_L)\
发布日期： [2024 年2 月 2 日 15:44 UTC](https://forum.rainyun.com/t/topic/6563/3 "2024-02-02T15:44:50Z")

</div>

还有一个，如果你使用的是 DNSPod 作为 DNS 解析服务，那么很可能会遇到无法通过 DNS 方式签发证书的问题。

值得一提的是，DNSPod API 早已被弃用，被腾讯云 API 所取代。

## 相关文档连接

- [腾讯云 DNSPod API 3.0（新版-推荐使用） - DNSPod 服务与支持](https://docs.dnspod.cn/api/api3/)
- [DNSPod 简介\_腾讯云](https://cloud.tencent.com/document/api/1427/56193)

## 相关 Issues

### 1Panel

- [[BUG] 无法正常申请证书 · Issue #3431 · 1Panel-dev/1Panel · GitHub](https://github.com/1Panel-dev/1Panel/issues/3431)

### go-acme/lego (即 1Panel 使用的 ACME 客户端库)

- [desec: hangs forever at waiting for DNS record propagation · Issue #1406 · go-acme/lego · GitHub](https://github.com/go-acme/lego/issues/1406)
- [Option --dns.disable-cp not working · Issue #804 · go-acme/lego · GitHub](https://github.com/go-acme/lego/issues/804)
- [Dnspod api deprecated · Issue #2057 · go-acme/lego · GitHub](https://github.com/go-acme/lego/issues/2057)
