kubernetes 部署 lnmp+discuz

###在kubernetes中搭建LNMP環境,並安裝Discuzxphp

本實驗,須要已經搭建好kubernetes集羣和harbor服務。node

首先克隆本項目:git clone https://github.com/donxan/k8s_lnmp_discuzx.gitmysql

下載鏡像

docker pull mysql:5.7
docker pull richarvey/nginx-php-fpm

用dockerfile重建nginx-php-fpm鏡像

cd k8s_discuz/dz_web_dockerfile/
docker build -t nginx-php .

將鏡像push到harbor

##登陸harbor,並push新的鏡像
docker login harbor.abcgogo.com  //輸入正確的用戶名和密碼,若是以前已建立secret,就能夠免輸入密碼
docker tag nginx-php  harbor.abcgogo.com/lnmp/nginx-php
docker push harbor.abcgogo.com/lnmp/nginx-php
docker tag mysql:5.7 harbor.abcgogo.com/lnmp/mysql:5.7
docker push harbor.abcgogo.com/lnmp/mysql:5.7

搭建NFS

能夠參考如下:nginx

假設kubernetes集羣網段爲192.168.2.0/24,本機IP爲192.168.2.10git

  • 安裝包
    yum install nfs-utils
  • 編輯配置文件
    vim /etc/exportfs  //內容以下
    /data/k8s/ 192.168.2.0/24(sync,rw,no_root_squash)
  • 啓動服務
    systemctl start nfs
    systemctl enable nfs
  • 建立目錄
    mkdir -p  /data/k8s/discuz/{db,web}

    注意db,web的屬主,db999,web 100.github

搭建MySQL服務

  • 建立secret (設定mysql的root密碼)
    kubectl create secret generic mysql-pass --from-literal=password=DzPasswd1
  • 建立pv
    cd ../../k8s_discuz/mysql
    kubectl apply -f mysql-pv.yaml
  • 建立pvc
    kubectl apply -f mysql-pvc.yaml
  • 建立deployment
    kubectl apply -f mysql-dp.yaml
  • 建立service
    kubectl apply -f mysql-svc.yaml

搭建Nginx+php-fpm服務

注意搭建步驟,在部署mysql時,不能deploy,svc一塊兒執行,須要一步一步來操做。web

  • 搭建pv
    cd ../../k8s_discuz/nginx_php
    kubectl apply -f web-pv.yaml
  • 建立pvc
    kubectl apply -f web-pvc.yaml
  • 建立deployment
    kubectl apply -f web-dp.yaml
  • 建立service
    kubectl apply -f web-svc.yaml

    安裝Discuz

  • 下載dz代碼 (到NFS服務器上)
    cd /tmp/
    git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git
    cd /data/k8s/discuz/web/
    mv /tmp/DiscuzX/upload/* .
    chown -R 100 data uc_server/data/ uc_client/data/ config/
  • 設置MySQL普通用戶sql

    kubectl get svc dz-mysql //查看service的cluster-ip,個人是10.68.122.120
    mysql -uroot -h10.68.122.120 -pDzPasswd1  //這裏的密碼是在上面步驟中設置的那個密碼
    > create database dz;
    > grant all on dz.* to 'dz'@'%' identified by 'dz-passwd-123';

    部署traefik ingress

    cd ../../k8s_discuz/nginx_php
    kubectl apply -f web-ingress.yaml

    kubernetes 部署 lnmp+discuz
    若是沒有部署ingress,可使用安裝nginx,配置nginx反向代理。
    參考以下。docker

  • 設置Nginx代理vim

    注意:目前nginx服務是運行在kubernetes集羣裏,node節點以及master節點上是能夠經過cluster-ip訪問到,可是外部的客戶端就不能訪問了。
      因此,能夠在任意一臺node或者master上建一個nginx反向代理便可訪問到集羣內的nginx。
    kubectl get svc dz-web //查看cluster-ip,個人ip是10.68.190.99
    nginx代理配置文件內容以下:
    server {
            listen 80;
            server_name dz.abcgogo.com;
    
            location / {
                proxy_pass      http://10.68.190.99:80;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

作完Nginx代理,就能夠經過node的IP來訪問discuz了。

#### 安裝Discuz

按照提示配置便可。
![](https://s1.51cto.com/images/blog/201901/20/c7474ceeaca14303513c3d953aa1b295.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相關文章
相關標籤/搜索