Jenkins+Docker實現discuz論壇的快捷化更新

1、採用LNMP環境搭建discuz論壇

一、LNMP起一個docker容器

docker run -itd --privileged -p 80:80 docker.io/centos /usr/sbin/init
#入口命令改成/usr/sbin/init,是爲了支持systemctl風格啓動服務 

在這裏插入圖片描述注:若是出現上述報錯,重啓docker服務再試一下便可!php

二、安裝nginx、mariadb

yum install nginx mariadb mariadb-devel mariadb-server -y
vim /etc/nginx/nginx.conf
nginx -s reload
systemctl start mariadb
mysql_secure_installation
mysql -uroot -pmysql
server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.php; #我如今才搞清楚這個根location的做用,不管動態頁面仍是靜態頁面都是先匹配/,index參數:是把root參數的目錄下的相應文件取出來,而後再匹配下面這個動態和靜態的處理方式的location,因此通常來講還須要一個匹配靜態頁面的location,可是咱們這裏不須要!
        }
	location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

三、安裝php

我試着採用yum安裝php,整了好久,php-fpm進程起了,端口9000也監聽了,但nginx就是沒法將動態頁面交給php解析。因此後面就採用了wget,纔好了的!html

php安裝教程:https://blog.csdn.net/weixin_44571270/article/details/103223557
注:安裝php5.4.44這個版本便可!!不要安裝php5.5.0以上的版本!mysql

2、搭建jenkins平臺

一、起docker容器

docker search jenkins
docker pull docker.io/jenkins
docker run -itd -p 8080:8080 docker.io/jenkins
#容器中須要部署服務的才加/usr/sbin/init入口命令,這個容器自己就是一個服務,因此不須要加入口命令就能夠啓動它!

在這裏插入圖片描述注:須要密碼nginx

cat /var/jenkins_home/secrets/initialAdminPassword

在這裏插入圖片描述

二、修改admin用戶的密碼

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

3、jenkins和Docker的整合

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述這裏的shell直接執行命令,是在jenkins所在容器執行的!
由於咱們要實如今jenkins上對discuz論壇進行網站內容更新,因此咱們必需要到discuz web服務器(Nginx)所在的哪一個容器進行操做!因此咱們須要作ssh免密鑰認證!這裏不支持交互式情景!git

#兩個容器都要作:
yum install openssh openssh-server -y
vim /etc/ssh/sshd-config #看看那些參數須要修改,優化
systemctl start sshd
#discuz web容器:
yum install passwd -y
echo "1"|passwd --stdin root
#jenkins容器:
ssh-keygen
ssh-copy-id -i /var/jenkins_home/.ssh/id_rsa.pub root@172.17.0.2

如今咱們就要在jenkins上寫shell腳原本使discuz論壇網站能頁面更新!web

有人可能會問:咱們直接寫shell腳本一執行,不就好了,幹嗎還要jenkins呢?sql

答:咱們如今作的都是最簡單的一個使用方法,爲了便於入門的,jenkins還能夠和svn、git等代碼倉庫創建鏈接獲取網站代碼,開發把代碼傳到倉庫中,而後jenkins上點擊更新便可,這樣你就能理解jnekins的使用情景了吧!docker

腳本編寫目的:使discuz論壇能更新它的log圖片!log圖片隨便本身找一個!
先找到logo的目錄位置:
在這裏插入圖片描述在這裏插入圖片描述shell

ssh -tt root@172.17.0.2" cd /usr/share/nginx/html/static/image/common mv logo.png logo.png.bak wget https://www.baidu.com/img/bd_logo1.png?qua=high mv bd_logo1.png?qua=high logo.png"
#雙引號表示將命令導入這個終端!
#若是不加-tt,會出現Pseudo-terminal will not be allocated because stdin is not a terminal.這樣的報錯!-tt能夠強制分配僞終端!
#可是我看老師作的沒加-tt也能遠程執行成功!我加-tt解決了上面那個錯誤,也不能遠程執行成功!

而後apply、save、當即構建!就完成了
可是像上述這樣子構建,即便配置了免密鑰認證登陸也沒法遠程執行shell命令,老是失敗!vim

我後面百度發現新版本的jenkins,有一個名叫Publish Over SSH的插件,能夠實現遠程執行shell命令,因此下面我就使用wget下載jenkins.war包,在tomcat中發佈它!

3、採用tomcat發佈jenkins

注意:由於咱們須要安裝SSH插件,老版本不支持SSH,因此咱們只能本身用tomcat發佈新版本!

一、安裝tomcat,並啓動tomcat

https://blog.csdn.net/weixin_44571270/article/details/102939666

二、下載jenkins,並解壓到tomcat發佈目錄

wget -O /opt/tomcat/webapps/ROOT/jenkins.war /opt http://mirrors.jenkins-ci.org/war-stable/2.204.3/jenkins.war

/usr/local/jdk1.8.0_141/bin/jar xvf /opt/tomcat/webapps/ROOT/jenkins.war

完成!如今就能夠訪問了!

三、下載Publish Over SSH插件

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述下載完成後重啓jenkins便可!

四、SSH插件的使用及配置

在這裏插入圖片描述通常來講咱們都使用用戶名加密碼ssh便可!
在這裏插入圖片描述
注:這個不用動,不用填,這個是使用公鑰和私鑰文件去鏈接的。
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述只須要點擊這個便可!沒有這個的話,會報錯的!
在這裏插入圖片描述而後往上翻,找到Test Configuration,點擊它。
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

五、構建工程172.17.0.2,查看logo是否更換

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述能夠看到構建成功了!清除緩存!刷新discuz論壇網站!
在這裏插入圖片描述採用jenkins,logo更換成功!

相關文章
相關標籤/搜索