###在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
cd k8s_discuz/dz_web_dockerfile/ docker build -t nginx-php .
##登陆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
能够参考如下: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
kubectl create secret generic mysql-pass --from-literal=password=DzPasswd1
cd ../../k8s_discuz/mysql kubectl apply -f mysql-pv.yaml
kubectl apply -f mysql-pvc.yaml
kubectl apply -f mysql-dp.yaml
kubectl apply -f mysql-svc.yaml
注意搭建步骤,在部署mysql时,不能deploy,svc一块儿执行,须要一步一步来操做。web
cd ../../k8s_discuz/nginx_php kubectl apply -f web-pv.yaml
kubectl apply -f web-pvc.yaml
kubectl apply -f web-dp.yaml
kubectl apply -f web-svc.yaml
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';
cd ../../k8s_discuz/nginx_php kubectl apply -f web-ingress.yaml
若是没有部署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 按照提示配置便可。 