Shell編程之if語法練習(LNMP)全過程

大家好,我是延凱,本人原來在CSDN寫作已經快一年了 都是相關Linux運維這方面的技術知識,現在搬到博客園也是我一直想的,本博客主要寫Python,docker,shell等偏向開發云計算等知識點,謝謝各位,聲明:(原先的CSDN也會不定時更新Linux運維等方面的知識!)

?

#!/bin/bash  
# DATE:Wed Jan 17 1# ywyankerp@163.com  
#this is a yankerp  # The Nginx service is being installed  
ROOT_ID=0  
ML=/usr/local/src  
NGINX_ML=/usr/local/src/nginx-1.12.2  
PML=/usr/local/src/php-5.6.27  
QD=`netstat -anpt | grep 80 | awk '{print $7}' | cut -d "/" -f2 | cut -d ":" -f1`  
ADDR=`ip a | grep eno16777728$ | awk '{print $2}' | cut -d "/" -f1`  
MMM=`netstat -anput | grep mysqld | awk '{print $4}' | cut -d ":" -f4`  
MAR=`rpm -qa | grep mariadb`  
cd $ML && {  
wget http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null  
mv Centos-7.repo /etc/yum.repos.d/Centos-Base.repo  
yum clean all &> /dev/null  
yum makecache &> /dev/null  
}  if [ $? -eq 0 ]  then  echo "Yum源更新完畢,開始安裝!!!"  else  echo "Yum源error"  exit 1  
fi  
echo "Yum源配置成功"  if [ "$UID" -eq "$ROOT_ID" ]  then  echo "root用戶運行中" && systemctl stop firewalld && yum install -y gcc gcc-c++  pcre-devel zlib-devel openssl-devel &> /dev/null  else  echo "請使用Root用戶運行"  exit 1  
fi  
echo "依賴包安裝完成!"  
cd $ML || {  echo "進入目錄失敗!!!"  exit 1  
}  wget http://nginx.org/download/nginx-1.12.2.tar.gz &> /dev/null && {  
tar zxf nginx-1.12.2.tar.gz && groupadd www && useradd -g www www -s /sbin/nologin  
}  
echo "Nginx包下載成功"  
cd $NGINX_ML && {  ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www &> /dev/null && make &> /dev/null && make install &> /dev/null   
}  if [ $? -eq "0" ]  then  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ;nginx && echo "Nginx啟動成功,請訪問http://$ADDR:80"  else  echo "Nginx啟動失敗!!!"  exit 1  
fi  #Start installing MySQL5.7echo "開始下載MySQL二進制安裝包,請稍等..."  
if [ -z "$MAR" ]  then  echo "開始安裝MySQL"  
fi  
if [ -n "$MAR" ]  then  rpm -e mariadb-libs --nodeps && echo "卸載mariadb成功!正式安裝MySQL"  
fi  cd $ML || {  echo "進入目錄失敗!!!"  exit 1  
}  wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz &> /dev/null && {  
tar zxf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  && mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql  
cd /usr/local/mysql/ && mkdir data && mkdir log && echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  
source /etc/profile && groupadd mysql && useradd -r -g mysql -s /bin/false mysql  
}  cat << EOF >/etc/my.cnf  
[client]    
socket=/usr/local/mysql/mysql.sock    
[mysqld]    
basedir=/usr/local/mysql    
datadir=/usr/local/mysql/data    
pid-file=/usr/local/mysql/data/mysqld.pid    
socket=/usr/local/mysql/mysql.sock    
log_error=/usr/local/mysql/log/mysql.err  
EOF  if [ ! -d /etc/my.cnf ]  then  chmod 750 data/ && chown -R mysql . && chgrp -R mysql . && bin/mysqld --initialize --user=mysql && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && service mysqld start &> /dev/null  else  echo "錯誤!!!"  
fi  
if [ $? -eq "0" ]  then  echo "MySQL正式安裝完成殺青!"  else  echo "MySQL安裝失敗!!!"  exit 1  
fi  #PHP install sccessy  
yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null  
if [ $? -eq 0 ]  then  echo "依賴包安裝成功!!!"  else  echo "依賴包安裝失敗!!!"  
fi  cd $ML || {  echo "進入目錄失敗!!!"  exit 1  
}  wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz &> /dev/null  && {  
tar zxf libmcrypt-2.5.7.tar.gz && cd libmcrypt-2.5.7/ && ./configure --prefix=/usr/local/libmcrypt &> /dev/null && make &> /dev/null && make install &> /dev/null  
}  if [ $? -eq 0 ]  then  echo "Libmcrypt安裝成功!"  else  echo "Libmcrypt-ERROR!"  exit 1  
fi  
# PHP install  
cd $ML || {  echo "進入目錄失敗!!!"  exit 1  
}  
wget http://cn2.php.net/distributions/php-5.6.27.tar.gz &> /dev/null && {  
tar zxf php-5.6.27.tar.gz && cd php-5.6.27/ &&  ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts  &> /dev/null  
}  
if [ $? -eq 0 ]  then  make &> /dev/null  && make install &> /dev/null  &&  echo "PHP編譯安裝成功,正在配置請稍等...."  else  echo "PHP安裝失敗"  
fi  cd $PML || {  echo "進入目錄失敗!!!"  exit 1  
}  
cp php.ini-production /etc/php.ini && {  
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod +x /etc/init.d/php-fpm && chkconfig --add php-fpm && chkconfig php-fpm on  
}  if [ $? -eq 0 ]  then  cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf && echo "復制主配置成功"  else  echo "PHP權限失敗,請重試!"  
fi  if [ ! -d /usr/local/php5.6/etc/php-fpm.conf ]  then  sed -i 's#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g' /usr/local/php5.6/etc/php-fpm.conf  sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g' /usr/local/php5.6/etc/php-fpm.conf  sed -i 's/pm.max_children = 5/pm.max_children = 300/g' /usr/local/php5.6/etc/php-fpm.conf  sed -i 's/pm.start_servers = 2/pm.start_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf  sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf  sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' /usr/local/php5.6/etc/php-fpm.conf  else  echo "NONONO"  
fi  
if [ $? -eq 0 ]  then  systemctl start php-fpm && echo "PHP啟動成功"  else  echo "啟動PHP失敗"  
fi  #配置nginx解析php  
if [ ! -d /usr/local/nginx/conf/nginx.conf ]  then  sed -i 's/index  index.html index.htm;/index  index.php index.html index.htm;/g' /usr/local/nginx/conf/nginx.conf  sed -i 's/#    root           html;/    root           html;/g' /usr/local/nginx/conf/nginx.conf  sed -i 's/#    fastcgi_pass   127.0.0.1:9000;/    fastcgi_pass   127.0.0.1:9000;/g' /usr/local/nginx/conf/nginx.conf  sed -i 's/#    fastcgi_index  index.php;/    fastcgi_index  index.php;/g' /usr/local/nginx/conf/nginx.conf  sed -i 's*#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*g' /usr/local/nginx/conf/nginx.conf  sed -i 's/#    include        fastcgi_params;/    include        fastcgi.conf;/g' /usr/local/nginx/conf/nginx.conf  sed -i '71d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;70a}' /usr/local/nginx/conf/nginx.conf  sed -i '65d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;64alocation ~ \\.php$ {' /usr/local/nginx/conf/nginx.conf  else  echo "解析PHP失敗!!!"  
fi  touch /usr/local/nginx/html/yankerp.php  
cat << EOF >/usr/local/nginx/html/yankerp.php  
<?php  
phpinfo();  
?>  
EOF  if [ ! -d /usr/local/nginx/html/yankerp.php ]  then  nginx -s reload && systemctl restart php-fpm  else  echo "測試目錄文件失敗"  
fi  
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  &> /dev/null && yum install -y sl &> /dev/null  
sl  
if [ $? -eq 0 ]  then  echo "LNMP安裝成功,請您訪問http://$ADDR/yankerp.php"  else  echo "安裝失敗"  
fi  if [ $? -eq 0 ]  then  echo "LNMP安裝成功,請您訪問http://$ADDR/yankerp.php"  else  echo "安裝失敗"  
fi  
###################################################################################################This is a yankerp~ 

?

以上使用的過程都是一些if的判斷,這樣的練習能夠熟練掌握shell的if語句的作用,以及對if語句有一些清晰的了解,希望讀者能夠自己也去寫個shell腳本 尤其是剛接觸if語句的朋友么,這樣才能夠提高自己的shell知識,同時也可以掌握shell之if語句的語法以及作用,如果完全可以看懂以上腳本的朋友么 那么恭喜你,你以及對if語句有一些認識了

    再見!

?

轉載于:https://www.cnblogs.com/YankaiJY/p/8831115.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251956.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251956.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251956.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于UNet和camvid數據集的道路分割

基于UNet和camvid數據集的道路分割h(1.3.0)&#xff1a; 背景 語義分割是深度學習中的一個非常重要的研究方向&#xff0c;并且UNet是語義分割中一個非常經典的模型。在本次博客中&#xff0c;我嘗試用UNet對camvid dataset數據集進行道路分割&#xff0c;大致期望的效果如下&…

二分法查找和普通查找

一、普通查找 對于數組和一個需要查找的元素來說&#xff0c;普通查找的原理很簡單&#xff0c;即為從數組的第一個元素到最后一個元素進行遍歷&#xff0c;如果第i個元素的值等于我們需要查找的值&#xff0c;那么返回找到的角標i&#xff0c;否則返回-1表示沒有查找到。這里以…

Linux下安裝zookeeper集群(奇數個)

1、 解壓zookeeper壓縮包 2、 data里創建“myid”文件&#xff08;命令touch myid&#xff09;&#xff0c;內容是1&#xff08;命令 echo 1 >> myid&#xff09; 3、 zoo.cnf里配置dataDir、clientport、server.nIP:端口1&#xff08;2881&#xff09;&#xff1a;端…

立體標定

立體標定應用標定數據轉換成深度圖標定 由于攝像頭目前是我們手動進行定位的&#xff0c;我們現在還不知道兩張圖像與世界坐標之間的耦合關系&#xff0c;所以下一步要進行的是標定&#xff0c;用來確定分別獲取兩個攝像頭的內部參數&#xff0c;并且根據兩個攝像頭在同一個世…

if _name_ == _main_

1.作用 py文件有2種使用方法&#xff0c;第1是自己本腳本自己獨立執行&#xff1b;第2是被import到其他文件腳本中執行. if _name_ " _main_" 該語句控制其他下一步的腳本是否執行。如果是自己本腳本獨立執行&#xff0c;那就運行該if條件下的腳本&#xff1b;如果…

LLVM完整參考安裝

文章目錄 一、直接下載編譯好的,見圖片命令二、下載源代碼自己編譯安裝 下面提供下載并mv完全的文件包三、安裝LLVM編譯器一、直接下載編譯好的,見圖片命令 這里使用llvm官網編譯好的包, 直接解壓即可用LLVM下載官網點擊這里下載llvm-6.0.1 下載完成后解壓tar -vxf clangllv…

微軟正式釋出基于 Chromium 的 Edge 預覽版本

百度智能云域名服務&#xff0c;.com新用戶首購僅需25元 微軟基于 Chromium 的全新版本 Edge 一直吸引著開發者與用戶的目光&#xff0c;當地時間 8 日&#xff0c;官方終于釋出了第一個 Dev 和 Canary 頻道構建版本。 Dev 與 Canary build 都是開發者預覽版&#xff0c;同屬…

下載和安裝R、RStudio !

現如今&#xff0c;R語言是統計領域廣泛使用的工具&#xff0c;是屬于GNU系統的一個自由、免費、源代碼開放的軟件&#xff0c;是用于統計計算和統計繪圖的優秀工具。而RStudio是R的集成開發環境&#xff0c;用它進行R編程的學習和實踐會更加輕松和方便。下面就教大家如何下載并…

豆瓣首頁話題輸入框的實現

在做問答的時候&#xff0c;遇到一個需求&#xff0c;用戶的問題需要限制字數&#xff0c;不僅顯示計算的超出字數&#xff0c;還需在超出的內容上加一些提醒的效果&#xff0c;例如豆瓣首頁的話題輸入框&#xff0c;抽時間研究了下&#xff0c;需要考慮下面幾個問題&#xff1…

pytorch 吸煙檢測yolov5s

YOLOV5s 吸煙目標檢測 參考學習 文章目錄 本原創項目長期更新&#xff0c;旨在完成校園異常行為實時精檢測&#xff0c;作到集成N次開發優化&#xff08;不止局限于調包&#xff09;為止&#xff0c;近期將不斷更新如下模型數據標注文件教程。關注博主&#xff0c;Star 一下g…

JQuery的ajax函數執行失敗,alert函數彈框一閃而過

先查看<form>標簽是否有action屬性&#xff0c;如果沒有&#xff0c;并且最后<button>標簽的type屬性為submit‘時&#xff0c;默認提交位置就是當前頁面 如果在頁面右鍵檢查&#xff0c;點擊網絡&#xff0c;會在開頭發現這樣的post包&#xff1a; 在右側消息頭處…

C#中Request.ServerVariables詳細說明及代理

Request.ServerVariables("Url") 返回服務器地址Request.ServerVariables("Path_Info") 客戶端提供的路徑信息Request.ServerVariables("Appl_Physical_Path") 與應用程序元數據庫路徑相應的物理路徑Request.ServerVariables("Path_Transla…

coco與voc相互轉化

把LabelImg標注的YOLO格式標簽轉化為VOC格式標簽 和 把VOC格式標簽轉化為YOLO格式標簽 點亮&#xff5e;黑夜 2020-07-07 11:08:24 3537 已收藏 90 分類專欄&#xff1a; 19—目標檢測 文章標簽&#xff1a; voc yolo 版權 把LabelImg標注的YOLO格式標簽轉化為VOC格式標簽 和…

angular中封裝fancyBox(圖片預覽)

首先在官網下載最新版的fancyBox(一定要去最新網站&#xff0c;以前依賴的jquery版本偏低)&#xff0c;附上鏈接&#xff1a;http://fancyapps.com/fancybox/3/ 然后在項目中引用jquery&#xff0c;然后在引用jquery.fancybox.min.css和jquery.fancybox.min.js。 如果需要動畫和…

十二省聯考題解 - JLOI2019 題解

十二省聯考題解 - JLOI2019 題解 兩個T3的難度較大 平均代碼量遠大于去年省選 套路題考查居多 A 難度等級 1 $n^2$暴力可以拿到$60$分的優秀成績 然后可以想到把區間異或轉化為前綴兩點異或 可以想到使用二分答案的方法可持久化Trie解決&#xff0c;但是時間復雜度為$n\log^2 (…

前端vue的get和post請求

vue的get和post需要兩個文件vue.js和vue-resource.js 以下是實現的代碼&#xff0c;可以參考一下&#xff0c;需要注意的接口的請求需要考慮跨域的問題&#xff0c;其次就是訪問頁面需要在tomcat下訪問&#xff0c;否則也會報跨域的問題 <!DOCTYPE html> <html lang&q…

[Vijos 1143]三取方格數

Description 設有N*N的方格圖&#xff0c;我們將其中的某些方格填入正整數&#xff0c; 而其他的方格中放入0。 某人從圖得左上角出發&#xff0c;可以向下走&#xff0c;也可以向右走&#xff0c;直到到達右下角。 在走過的路上&#xff0c;他取走了方格中的數。&#xff08;取…

線掃相機相關規格說明

工業線陣相機與面陣相機特點分析 點滴成海~ 2018-06-29 13:50:38 12184 收藏 29 分類專欄&#xff1a; intership 文章標簽&#xff1a; 視覺元件分析 版權 最近在公司實習&#xff0c;實習中的項目是使用的是微視的一款線陣相機&#xff08;Microview MVC1024DLM-GE35&…

postgresql 不同數據庫不同模式下的數據遷移

編寫不容易,轉載請注明出處謝謝, 數據遷移 因為之前爬蟲的時候&#xff0c;一部分數據并沒有上傳到服務器&#xff0c;在本地。本來用的就是postgresql&#xff0c;也沒用多久&#xff0c;數據遷移的時候&#xff0c;也遇到了很多問題&#xff0c;第一次使pg_dump xx > file…

Oracle中主鍵自增長

最近在學習Oracle和MySql&#xff0c;MySql有自動配置主鍵自增長auto_increment&#xff0c;這樣在輸入數據的時候可以不考慮主鍵的添加&#xff0c;方便對數據庫的操作。 在Oracle中設置自增長首先用到sequence序列&#xff1b; 以創建學生表為例&#xff1a; create table St…