天天看點

腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:

1.shell 腳本:linux centos 7 系統 2.python shell 腳本:window 系統 3.其他:python selenium 子產品,谷歌浏覽器, 谷歌浏覽器驅動。 4.discuz 連結:https://pan.baidu.com/s/1vown_f56wjlizaugrfor1q 提取碼:mijf

vim lnmp.sh

#!/bin/bash #this is auto install lamp or lnmp shell! #apache安裝 apache() { #apache編譯安裝 cd /opt/httpd-2.4.29 &&./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &&make && make install &&cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd # #修改配置檔案 #在/etc/init.d/httpd檔案中第二行插入2段 sed -i "2i#chkconfig: 35 85 21 \n\ #description: apache is a world wide web server." /etc/init.d/httpd #将listen 80 替換成 listen $ip:80 ,$ip為變量,是本機ip位址(特别注意變量的替換方法) sed -i "s/^listen 80/listen $ip:80/g" /usr/local/httpd/conf/httpd.conf #優化服務 ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd ;ln -s /usr/local/httpd/bin/* /usr/local/bin/ chkconfig --add httpd systemctl daemon-reload systemctl start httpd #檢查端口和網頁測試 port=`netstat -anpt | grep httpd | wc -l` if [ $? -eq 0 ] && [ $port -ne 0 ]; then echo -e "\033\t\t\t[44;32m test http://$ip \033[0m" read -p "input result:(y/n) " u if [ $u == "y" ]; then echo -e "\033\t\t\t[32m apache install success!\033[0m" else echo -e "\033\t\t\t[5;31m apache install fail!\033[0m" fi #"-e" 為轉義,\033為固定格式(同 \e),"/t"為制表位,同tab鍵,"5"為閃爍,31m為字型顔色,此處紅色,"\033[0m "為固定結束格式 echo -e "\033\t\t\t[5;31m apache install fail,check!!\033[0m" exit 0 } #安裝nginx nginxt() #編譯安裝 useradd -m -s /sbin/nologin nginx cd /opt/nginx-1.12.0/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ;nginx &&nginx -t; #檢查服務啟動 stat=`netstat -ntap | grep "80" | wc -l` if [ $? -eq 0 ]&&[ $stat -ne 0 ] ;then echo -e "\033\t\t\t[32m nginx install success!!\033[0m" echo -e "\033\t\t\t[5;31m nginx install fail!!\033[0m" #mysql安裝 mysql_con() #判斷有無/usr/local/mysql目錄,沒有就建立 [ ! -d /usr/local/mysql ] && mkdir -p /usr/local/mysql /usr/sbin/useradd -s /sbin/nologin mysql cd /opt/mysql-5.5.24 cmake -dcmake_install_prefix=/usr/local/mysql \ -dmysql_unix_addr=/home/mysql/mysql.sock \ -ddefault_charset=utf8 \ -ddefault_collation=utf8_general_ci \ -dwith_extra_charsets=all \ -dwith_myisam_storage_engine=1 \ -dwith_innobase_storage_engine=1 \ -dwith_memory_storage_engine=1 \ -dwith_readline=1 \ -denabled_local_infile=1 \ -dmysql_datadir=/home/mysql \ -dmysql_user=mysql \ -dmysql_tcp_port=3306 if [ $? -eq 0 ];then echo "export path=$path:/usr/local/mysql/bin/ " >> /etc/profile source /etc/profile && chown -r mysql:mysql /usr/local/mysql &&cd /usr/local/mysql/support-files &&cp my-medium.cnf /etc/my.cnf &&cp mysql.server /etc/init.d/mysqld &&chmod 755 /etc/init.d/mysqld &&chkconfig --add /etc/init.d/mysqld ; chkconfig mysqld --level 35 on echo -e "\e\t\t\t[5;31m set error,check ![0m" exit 1 #初始化資料庫 /usr/local/mysql/scripts/mysql_install_db \ --user=mysql \ --ldata=/var/lib/mysql \ --basedir=/usr/local/mysql \ --datadir=/home/mysql ln -s /usr/local/mysql/bin/ /usr/local/bin/ #搜尋basedir=,datadir=,并替換 sed -i 's#^basedir=.$#basedir=/usr/local/mysql#' /etc/init.d/mysqld sed -i 's#^datadir=.*$#datadir=/home/mysql#' /etc/init.d/mysqld #mysql啟動和檢查 systemctl daemon-reload && systemctl start mysqld port=`netstat -ntap | grep mysql |wc -l` if [ $? -eq 0 ]&&[ $port -ne 0 ];then echo -e "\033\t\t\t[32m mysql install success!! \033[0m" echo -e "\033\t\t\t[5;31m mysql install fail,check!! \033[0m" #apache-php安裝 apa_php() #php編譯安裝 cd /opt/php-5.6.11 --prefix=/usr/local/php5 \ --with-gd \ --with-zlib \ --with-apxs2=/usr/local/httpd/bin/apxs \ --with-mysql=/usr/local/mysql \ --with-config-file-path=/usr/local/php5 \ --enable-mbstring make && make install &&cp php.ini-development /usr/local/php5/php.ini && ln -s /usr/local/php5/bin/ /usr/local/bin/ ; ln -s /usr/local/php5/sbin/ /usr/local/sbin/ ; useradd -m -s /sbin/nologin php #檢查httpd.conf檔案中是否有php5_module,并統計 num=`cat /usr/local/httpd/conf/httpd.conf | grep "php5_module" | wc -l` #判斷是否有php5_module if [ $num -eq 0 ] ;then echo -e "\e\t\t\t[5;31m no php5_module, check! \e[0m" echo -e "\e\t\t\t[32m php5_module is exist! \e[0m" #修改httpd配置,測試php #在第258行行尾加index.php sed -i '258s/$/ index.php/' /usr/local/httpd/conf/httpd.conf #在383行插入相關檔案 sed -i "383iaddtype application/x-httpd-php .php\n\ addtype application/x-httpd-php-source .phps" /usr/local/httpd/conf/httpd.conf systemctl restart httpd #echo檔案到index.php裡面 echo -e "<?php\nphpinfo();\n?>" >>/usr/local/httpd/htdocs/index.php #輸出使用者測試網頁連結 echo -e "\e\t\t\t[5;34m test http://$ip/index.php \e[0m" #php連接配接mysql測試 read -p "if connect mysql? (y/n)? " an if [ $an == "y" ];then #echo檔案到index.php中,注意單引号中不識别$ip echo -e '<?php\n$link=mysql_connect(localhost);\nif($link) echo "success!!";\nelse echo "fail!!";\nmysql_close();\n?>' >>/usr/local/httpd/htdocs/index1.php #将localhost替換成 $ip','root' ,注意雙引号中不識别$link(要特别注意單引号和雙引号之間的差別!) sed -i "s/localhost/'$ip','root'/g" /usr/local/httpd/htdocs/index1.php echo -e "\e\t\t\t[32m http://$ip/index.php \e[0m" echo -e "\e\t\t\t[32m lamp install finish!\e[0m" #nginx-php安裝 nginx_php() --enable-mbstring \ --with-jpeg-dir \ --with-openssl \ --disable-ipv6 \ --enable-fpm #安裝gd和修改php配置檔案 cd /opt/zend-loader-php5.5-linux-x86_64/ && cp zendguardloader.so /usr/local/php5/lib/php echo -e "[zend guard loader]\nzend_extension=/usr/local/php5/lib/php/zendguardloader.so\nzend_loader.enable=1" >>/usr/local/php5/php.ini cd /usr/local/php5/etc/ && cp php-fpm.conf.default php-fpm.conf #替換檔案 sed -i 's#^user = .$#user = php#' php-fpm.conf sed -i 's#^group = .$#group = php#' php-fpm.conf sed -i 's#^pm.max_children = .$#pm.max_children = 50#' php-fpm.conf sed -i 's#^pm.max_spare_server = .$#pm.max_children = 35#' php-fpm.conf sed -i 's#^pm.min_spare_server = .$#pm.min_children = 5#' php-fpm.conf sed -i 's#^pm.start_server = .$#pm.min_children = 20#' php-fpm.conf #php服務啟動和檢查 /usr/local/php5/sbin/php-fpm port=`netstat -ntap | grep ":9000" | wc -l` echo -e "\033\t\t\t[32m php install success! \033[0m" echo -e "\033\t\t\t[5;31m php install fail! \033[0m" #nginx和php結合 ngin_vim() #修改nginx配置 mkdir -p /var/www/html/btcom #将45行 ; 替換成index.php; (或者在 ; 前面加 index.php,這個指令不好寫) sed -i '45s/;/ index.php;/g' /usr/local/nginx/conf/nginx.conf #在64行插入 sed -i "64ilocation ~ .php$ {\n\ root /var/www/html/btcom;\n\ fastcgi_pass 127.0.0.1:9000;\n\ fastcgi_index index.php;\n\ fastcgi_param script_filename;\n\ include fastcgi_params;\n\ }" /usr/local/nginx/conf/nginx.conf #在68行;後插入語句,注意雙引号不識别$document_root$fastcgi_script_name,才用單引号重新插入 sed -i '68s/;/ $document_root$fastcgi_script_name;/g' /usr/local/nginx/conf/nginx.conf echo -e "<?php\nphpinfo();\n?>" >>/var/www/html/btcom/index.php nginx -s reload echo -e "\e[32m test http://$ip/index.php \e[0m" #php連接配接mysql read -p "php connect mysql (y/n)? " answer if [ $answer == "y" ];then #echo檔案,注意但,雙引号,原因同上 echo -e '<?php\n$link=mysql_connect(localhost);\nif($link) echo "success!!";\nelse echo "fail!!";\nmysql_close();\n?>' >>/var/www/html/btcom/index1.php sed -i "s/localhost/'$ip','root'/g" /var/www/html/btcom/index1.php echo -e "\e\t\t\t[32m test http://$ip/index.php \e[0m" echo -e "\e\t\t\t[32m lnmp install finish!\e[0m" #論壇安裝 discuz() #不登入mysql,建立資料庫,授權。 mysql -e "create database bbs;grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123';flush privileges;" #bbsuser 連接配接 資料庫 sed -i "s/localhost/'$ip','bbsuser','admin123'/g" /usr/local/httpd/htdocs/index1.php #去網頁驗證連接配接資料庫是否成功 echo -e "\e\t\t\t[32m test http://$ip/index1.php \e[0m" #進行人機互動,連接配接成功進行discuz安裝 read -p "bbs connect mysql success (y/n)? " aw if [ $aw == "y" ];then unzip discuz_x2.5_sc_utf8.zip -d /opt && mkdir -p /usr/local/httpd/htdocs/bbs/ &&cp -r /opt/upload/ /usr/local/httpd/htdocs/bbs/ &&cd /opt/httpd/htdocs/bbs/upload/ chown -r daemon ./config/ chown -r daemon ./data/ chown -r daemon ./uc_client/ chown -r daemon ./uc_server/data/ sed -i '927s/;date.timezone =/ date.timezone = utc/g' /usr/local/php5/php.ini #輸出完成資訊,提醒使用者去網頁安裝,給出安裝連結 echo -e "\e\t\t\t[5;31m you can install discuz at http://$ip/bbs/upload/install \e[0m" #資料庫連接配接失敗,直接退出腳本 else echo -e "\e\t\t\t[5;31m bbs connect mysql fail,check! \e[0m" #執行package.sh腳本 ./package.sh #關閉防火牆,增強性 systemctl stop firewalld.service setenforce 0 #過濾出本機ip ip=`ifconfig ens33 | grep "netmask" | awk '{print $2}'` #檢視e.sh,将2個腳本連接配接起來 num=`cat /root/e.sh` #2腳本已經建立連接配接,删除e.sh,防止占用空間 rm -rf e.sh #lamp腳本安裝 if [ $num == "lamp" ] then #apache 安裝 apache #mysql 安裝 mysql_con #apache和php連接配接 apa_php discuz #lnmp腳本安裝 elif [ $num == "lnmp" ] #nginx.mysql,php安裝 nginxt &&mysql_con &&nginx_php #修改nginx配置檔案 ngin_vim echo -e "\e\t\t\t[5;31m input error,check! \e[0m"
chmod +x *.sh
./lnmp.sh
from selenium import webdriver import time #采用谷歌浏覽器 driver = webdriver.chrome() #進入安裝連結 driver.get("http://192.168.65.185/bbs/upload/install/") print(driver.title) #定位“同意”元素,點選滑鼠 driver.find_element_by_name("submit").click()
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
#定位“下一步”元素,點選滑鼠 driver.find_element_by_xpath("//input[@type='submit']").click()
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
driver.find_element_by_name("submitname").click()
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
#定位"資料庫伺服器填寫框", 清除原有文本 driver.find_element_by_name("dbinfo[dbhost]").clear() #在上一步,清除文本後,輸入新文本 driver.find_element_by_name("dbinfo[dbhost]").send_keys("192.168.65.185") #定位,清除文本 driver.find_element_by_name("dbinfo[dbname]").clear() #填寫新文本 driver.find_element_by_name("dbinfo[dbname]").send_keys("bbs") driver.find_element_by_name("dbinfo[dbuser]").clear() driver.find_element_by_name("dbinfo[dbuser]").send_keys("bbsuser") driver.find_element_by_name("dbinfo[dbpw]").clear() driver.find_element_by_name("dbinfo[dbpw]").send_keys("admin123") driver.find_element_by_name("admininfo[password]").send_keys("admin123") driver.find_element_by_name("admininfo[password2]").send_keys("admin123") #定位"下一步"元素,點選滑鼠
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
#跳轉到論壇首頁 driver.get("http://192.168.65.185/bbs/upload") #自動輸入使用者名,密碼 driver.find_element_by_name("username").send_keys("admin") driver.find_element_by_name("password").send_keys("admin123") #點選自動登入 driver.find_element_by_xpath("//button[@type='submit']").click() #點選登入 driver.find_element_by_name("cookietime").click()
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
腳本安裝Discuz論壇(shell + Python 實作自動化安裝)實驗環境實驗步驟溫馨提示:
1.本次腳本是在上一篇部落格的基礎上完成的,package.sh腳本檢視上一篇部落格https://blog.51cto.com/13760351/2352154 2.window 網頁自動安裝方法是采用python selenium 子產品,這部分知識将在後面的部落格中釋出,請期待! 3.此腳本不适用于新手安裝discuz論壇(腳本執行太快,出現問題,無法找到問題,解決問題),隻适合作為shell和python shell 腳本愛好者練習使用。 4.腳本安裝的方法很多,這隻是其中一種,若大家有更友善快捷的腳本,歡迎留言交流! 5.腳本資料下載下傳位址:http://down.51cto.com/data/2459604 6.每個人的伺服器位址不一樣,需要手動去python shell修改,shell腳本執行完成後,需要手動去執行python shell 腳本!

繼續閱讀