美文网首页
第二篇 Docker搭建Discuz

第二篇 Docker搭建Discuz

作者: 暮暮it | 来源:发表于2019-11-27 16:01 被阅读0次

    1 前言

    一直想要搭建自己的BBS论坛,找了不少开源的BBS系统,因为个人熟识Java开发,在GitHub上找了不少java版本的开源BBS,但是,真的我可能对所谓瀑布流式的样式欣赏不来,感觉乱糟糟的,所以还是选择了Discuz这个开源BBS,一个个栏目分的清清楚楚的,整个人感觉好多了,虽然好多年没更新的,但是最新版的也足够用了,可以直接从官网下载最新版,本文档编写时,最新版是discuz3.4,我选择的是utf-8版本,毕竟是要部署在linux服务器上的。

    2 Discuz部署

    下载好压缩包后,上传到你的服务器,不建议上传解压后的文件,真的超级多速度又慢。

    2.1 解压并修改文件权限

    还记得第一篇我们部署nginx的时候,新建的那些文件夹吧,不记得的话可以点这里,接下来执行下面的命令:

    $ unzip -o -d /data/nginx/www/discuz discuz.zip ##命令中的路径就是上一篇文章新建的
    $ chmod -R 777 /data/nginx/www/discuz  ##此命令是吧discuz文件夹下的所有文件夹及文件都赋予读写权限,防止安装时候有权限问题
    

    2.2 新建数据库

    这个是安装discuz前需要建好的,库名可以自己随意设定,比如我的就叫“discuz”,安装的时候注意填写这个就行。

    2.3 编写nginx配置文件

    Nginx配置文件分两大类,nginx的conf文件夹下,我个人理解这个相当于一个全局配置文件,我一般也不动它;还有就是conf.d文件夹下,我理解这是可定制配置文件存放的地方,也就是说,我有一个网站,那么就在这里增加一个对应的配置文件,基本上我所有网站的配置文件都是在这里存放的。
    编写论坛网站对应的配置文件,名字随便起,但是一定要放在我们第一篇说到的“/data/nginx/conf.d”文件夹下,如果你自己不是这个路径,就放在你自己的路径下,内容如下:

    server {
        listen       80;  ##访问的端口,如果没意外的话一般都是80,这样地址访问无需再加上一个端口号了
        server_name  198.xxx.xxx.xxx;  #服务器IP地址,如果要匹配域名,还可以加"*.xxx.cn"
        
        location / {
            root /usr/share/nginx/html/discuz;            #站点根目录,虽然我们自建的是/data/nginx/www,但是对于容器来说,它自身的路径还是html这个,相当于它把你www文件夹下的文件都拷贝到html来了,所以你写www路径的话是查不到数据的,请转换一下用docker和用系统本身搭建的思维。
            index index.html index.htm index.php;    #默认导航页
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        # PHP配置
        location ~ \.php$ {
            # 设置监听端口
            fastcgi_pass m_phpfpm:9000;      ##还记的我们第一篇运行php容器时,起的别名么,就要用在这里,替代容器的IP,因为IP每次重启容器都会变,还要手工查,所以用运行的容器名称,就解决这个大问题了。
            # 设置nginx的默认首页文件
            fastcgi_index index.php;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include fastcgi_params;
            root /usr/share/nginx/html/discuz;  ##一定要再指定一遍,不然的话根本访问不了,会提示错误,网上很多说上面指定了这里就不用了,反正我试的不行,必须再指定
        }
    }
    

    到这里就算准备完成了,接下来你可以重新启动以下nginx,启动命令还是用第一篇介绍的命令,然后访问你的ip地址就可以跳转到安装页面了,一路跟着提示安装即可。

    3 遇到的问题

    3.1 数据表创建失败

    在discuz安装的时候,执行到数据库导入的时候,会报数据库无法连接,表创建不了,数据无法导入等错误,我的解决方式为:

    1. 数据库配置页面,数据库地址请直接用你的服务器IP,不要用localhost,也不要用127.0.0.1;
    2. 如果你的数据库端口号不是默认的3306,请在配置数据库地址的时候直接填入IP+端口号,如“198.1.1.1:8888”;
    3. 如果1和2都操作了,但还是不行,那么看一下你安装的数据库版本,我尝试过8.x的,失败,后来改为5.6版本,目前我也不建议采用很高的数据库版本,因为好多PHP模板网站支持的版本没那么高,不知道会不会有问题,没必要后续还在这个事情上花太多时间,就用5.6版本的。
    4. 数据库8.x版本之所以有问题,是因为密码的加密方式变了,用docker运行时设置的密码,还要登入mysql镜像里面,通过alter操作再重新更改密码以及加密方式,注意更改密码针对的用户包括'root'@'%',以及'root'@'localhost'。具体怎么改可以参考这个地址。

    3.2 安装成功后数据库显示连接错误

    这个问题一直困扰我,主要是docker部署mysql不知道为什么会不定时的就自动关闭了,又要重启。所以,假如希望认认真真运营一个网站,我建议还是购买云服务商的数据库产品,稳定又有保障,也不担心数据没了。

    3.3 安装成功后样式问题

    我安装discuz成功后,遇到了所有css和js都加载不了的问题,检查网页发现这些资源的地址都不对,都是形如“IP/xx.js”这种形式,肯定不对啊,但是怎么解决呢?我查了很多资料,都是说nginx配置文件里面,应该增加静态资源的访问配置,但是我试了没用。最后,重装解决。

    本次就到这里吧,其实部署大多数PHP模板网站的方式都非常一致,可能会存在一些特别的问题,就需要自己慢慢搜索去解决了。

    相关文章

      网友评论

          本文标题:第二篇 Docker搭建Discuz

          本文链接:https://www.haomeiwen.com/subject/jdfpwctx.html