• 资源教程
  • 1panel Linux 面板安装 Flarum 解决容器内无法获得真ip的问题

虽然1panel的应用商店自带了docker部署的Flarum,但是我通宵搞了一天也没有解决容器内无法获得用户真ip的问题,不知道ip问题很大,因为没法对一些抽象的发言进行溯源,只能自己背锅。
参考文档为:官方部署文档
站点地址

机主使用的*讯云2h4g的轻量服务器,系统为ubuntu

1环境准备

1Panel的安装就不介绍了,和宝塔一样简单。

1.1安装OpenResty ;MySql ;开启防火墙 ;安装composer

使用1Panel几乎只能用OpenResty,在应用商店安装,同时安装MySql数据库(根据服务器内存选则myaql5或8,推荐小内存用5)。
然后去 主机>>防火墙 开启防火墙,最近的OpenResty默认使用防火墙,不开会导致崩溃(?)
在ssh中使用 apt install composer

1.2创建php环境,推荐php82

前往网站>>运行环境>>创建运行环境,下面是参考,

必要拓展:curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer, zip

1.3新建数据库 网站

前往 数据库>>创建数据库
名称 用户名 密码随意

前往 网站>>网站>>创建网站>>运行环境>>选着刚刚创建好的>>确定

然后去官方文档下载安装包,推荐:flarum-v1.x-php8.2.tar.gz

2安装

其实就是上传文件的事情

2.1上传并设置路径

前往 网站>>网站>>网站目录>>点击刚刚建的网站的文件夹图标>>点进index目录上传刚刚下载的文件>>直接解压

前往 网站>>网站>>名称>>点击刚刚建的网站的名称>>网站目录>>运行目录>>选择 /public >>保存并重载

2.2设置权限

前往 网站>>网站>>网站目录>>点击刚刚建的网站的文件夹图标,将index的权限改为777 root root ,其实建议这么干,还请大佬在评论区指正

2.3访问网站,配置数据库连接和管理员用户

默认数据库 host为 172.18.0.1
数据库名,用户和密码就是刚刚设置的

2.4配置伪静态

include /www/sites/你建的网站目录/index/.nginx.conf;
添加上代码到:
网站>>网站>>名称>>点击刚刚建的网站的名称>>配置文件中
root /www/sites/你建的网站目录/index/public;下面,就像这样

root /www/sites/bbs.hello2233.top/index/public; 
include /www/sites/bbs.hello2233.top/index/.nginx.conf; 

3插件安装

3.1使用插件管理器

网站管理员后台内置了插件安装器
不过我用的时候不行

3.2使用docker命令

前往 容器>>看到关联资源为你建的网站的php容器>>选择右边的终端>>命令选择 /bin/ash
输入指令cd /www/sites/你建的网站/index
因为composer指令是在该目录下执行的
后面的安装流程就是一般的流程了
比如继续输入composer require flarum-lang/chinese-simplified来安装中文包

  • lain 回复了此帖

    lain
    2.2设置权限
    前往 网站>>网站>>网站目录>>点击刚刚建的网站的文件夹图标,将index的权限改为777 root root ,其实建议这么干,还请大佬在评论区指正

    打少字了,是不建议这么干!!!

      站点添加GB Redis Setup缓存队列
      而且对于非容器的flarum部署,但是php为容器部署的,也可在php容器的环境中添加

      REDIS_HOST=127.0.0.1 # Optional, else uses default
      REDIS_PORT=6379 # Optional, else uses default
      REDIS_PASSWORD=null # Optional, otherwise null
      REDIS_DATABASE_CACHE=1 # Optional, else uses default
      REDIS_DATABASE_QUEUE=2 # Optional, else uses default
      REDIS_DATABASE_SESSION=3 # Optional, else uses default
      REDIS_PREFIX='flarum_' # Optional, else uses default

      依旧是能读取的。
      我是这样填的的:

      REDIS_PORT=6379
      REDIS_PASSWORD=jhkdjhkjdhsIUTYURTU_*****
      REDIS_USER=root
      REDIS_HOST=1Panel-redis-w57r 
      # 如果是容器部署的redis,应该填容器的host,比如1panel的话就是连接信息里的那个,而不是ip

      之所以不用一键docker版还有应该原因是,我不会持久化数据,每次改东东都删我插件

      话说装了GB Redis Setup问 任务调度程序 还是不可用啊,定时草稿也没发,还得装别的东西吗?

      • lain 回复了此帖
        lain 更改标题为「1panel Linux 面板安装 Flarum 解决容器内无法获得真ip的问题

        获取用户真实IP,这玩意和宝塔差不多,可以修改OpenResty http{} 配置,按需添加进去就好了

        set_real_ip_from 0.0.0.0/0;
        real_ip_header X-Forwarded-For;

        当然也可以选择去修改PHP代码,也可以获取到用户真实IP

        lain 已经解决,用面板的用户不需要装corntab
        直接去计划任务创建一个每分钟执行的shell任务,选在容器中运行
        php /www/sites/bbs.hello2233.top/index/flarum schedule:run
        一定要指向根目录下的 flarum 文件。

          lain 这步你是不是搞错了,如果用php环境安装flarum,不用安装composer吧,而且你权限也有问题,人家1P直接设置1000用户权限,就不需要777读写权限了。
          再来你host填IP地址,有没有想过重启之后容器会重新分配IP。
          问题一:前面你都叫别人安装composer,后面为啥又要使用压缩包这种安装方式?
          问题二:1p 基本标配fileinfo了,不需要再输入一遍
          问题三:权限,1p是在网站设置里面给你一键1000用户权限了(先设置权限,再设定public目录,这样权限分配不会断层)。
          问题四:数据库不能填IP地址,不然服务器重启了你容器就会重新分配IP,这里是填容器的名称(人家数据库那里写明了连接的名称了)
          问题五:不建议在配置文件里面直接加伪静态,而是通过伪静态面板填写你的 .nginx.conf 路径。
          问题六:如果嫌在1p进入容器终端麻烦,可以记下你flarum的容器名称,在你ssh客户端使用docker exec -it <flarum在用的php容器名称> ash 。

          还有很多问题,我都懒得写了,看看我们是怎么写的: https://forum.gitzaai.com/d/139

            null o 感谢回复!感谢指正问题!
            毕竟是因为不懂才会发出来求指正的嘛。
            毕竟我是真正的小白,只是看到有个这样酷的论坛就心动不已。
            你们的教程很好。谢谢分享!很多东西网上都搜不到!如果早几天看到你的教程就好了
            最后请看到本篇教程的人移步这个教程:https://forum.gitzaai.com/d/139

              lain 就是大家要多发帖,这样更好把问题汇总,其实我也是经过很多次尝试和群友的帮助,才完善的。流程上你也没做错,比很多人厉害了(起码你能运行,不像其他一大堆问题)

              2 个月 后

              null o 大佬,我看到这个https://forum.gitzaai.com/d/139的教程是手动创建php来的,但是我用1panel面板是直接一键部署的flarum,我都没有安装php的过程,装完了,直接打开网站就能登录了,那什么配置填写数据库的步骤都省略了,没有了。我想请问,我这样的部署方式,有什么弊端吗?我需要安装上面给出的教程,重新部署一遍吗?

                火车啦啦 1p
                用的是一个第三方封装好的docker镜像,数据库配置是通过启动镜像时的环境变量设置的,缺点就是如果你不习惯操作容器的话,配置起来会比直接访问命令行来的些许麻烦

                  2 个月 后