馬哥教育網絡班22期+第16周課程練習

1、源碼編譯安裝LNMP架構環境;

安裝開發包組
	yum groupinstall "Development Tools" "Server Platform Development" -y

	yum install -y pcre-devel zlib-devel

	yum install openssl openssl-devel -y

	groupadd -r -g 911 nginx
	useradd -r -g nginx -u 911 -s /sbin/nologin nginx
	mkdir -p /var/tmp/nginx/client
	cd /usr/local
	wget http://nginx.org/download/nginx-1.8.1.tar.gz
	tar -xf nginx-1.8.1.tar.gz 
	cd /usr/local/nginx-1.8.1/

	./configure \
	--prefix=$dst \
	--conf-path=/etc/nginx/nginx.conf \
	--user=nginx \
	--group=nginx \
	--error-log-path=/var/log/nginx/error.log \
	--http-log-path=/var/log/nginx/access.log \
	--pid-path=/var/run/nginx/nginx.pid \
	--lock-path=/var/lock/nginx.lock \
	--with-http_ssl_module \
	--with-http_gzip_static_module \
	--with-debug \
	--with-http_stub_status_module \
	--http-client-body-temp-path=/var/tmp/nginx/client \
	--http-proxy-temp-path=/var/tmp/nginx/proxy \
	--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
	--http-uwsgi-temp-path=/var/tmp/nginx/uwsg \
	--http-scgi-temp-path=/var/tmp/nginx/scgi \
	--with-pcre \
	--with-debug

	make
	make install

	vim /etc/nginx/nginx.conf          //編輯nginx配置安裝文件

	location / {
	            root   html;
	            index  index.php index.html index.htm;  //設置根目錄可識別index.php
	        }

	location ~ \.php$ {
	            root           html;
	            fastcgi_pass   127.0.0.1:9000;
	            fastcgi_index  index.php;
	            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;     //設置使用fastcg協議的php文件根目錄
	            include        fastcgi_params;
	        }


	修改PATH環境變量,讓系統可以直接使用nginx的相關命令
	vim /etc/profile.d/nginx.sh
	export PATH=/usr/local/nginx/sbin:$PATH
	source /etc/profile.d/nginx.sh 

	nginx  啟動nginx

	yum install -y mariadb mariadb-server php-fpm php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash 

	systemctl start mariadb.service

	vim /etc/php-fpm.d/www.conf      //編輯php-fpm配置文件

	listen = 127.0.0.1:9000      //如不是監聽本地地址,可修改為需要監聽的地址
	listen.allowed_clients = 127.0.0.1   //本地訪問
	user = nginx
	group = nginx

	systemctl start php-fpm  //啟動 php-fpm

	vim /usr/local/nginx/html/index.php

	 測試頁面index.php示例如下:

	<?php

	$conn = mysql_connect('127.0.0.1','root','');
	if ($conn)
	        echo "ok";
	else
	        echo "Failure";

	phpinfo();
	?>

2、編寫一個腳本完成以下功能:

   (1)、一鍵搭建LNMP源碼編譯環境;

   (2)、可通過在腳本后面跟上一些參數來自定義安裝目錄等其他選項。

	# install run environment packages
	echo "install development tools and server platform develpment"
	yum groupinstall "Development Tools" "Server Platform Development" -y
	if [ $? -ne 0 ];then
		echo -e "\033[31m install development packages faild \033[0m" && exit
	else
		echo -e "\033[37m install development packages finished \033[0m"
	fi
	yum install -y pcre-devel zlib-devel openssl openssl-devel
	if [ $? -ne 0 ];then 
		echo -e "\033[31m install run environment packages faild\033[0m" && exit
	else 
		echo -e  "\033[37m install run environment packages finished\033[0m"
	fi 

	sleep 3s
	#install nginx
	echo -e "\033[37m install nginx\033[0m"
	groupadd -r -g 911 nginx
	useradd -r -g nginx -u 911 -s /sbin/nologin nginx

	dst=$1
	#dst=/usr/local/nginx
	#[ ! -d $dst ] && mkdir -p $dst
	mkdir -p /var/tmp/nginx/client

	cd /usr/local
	[ ! -f nginx-1.8.1.tar.gz ] && wget http://nginx.org/download/nginx-1.8.1.tar.gz
	tar -xf nginx-1.8.1.tar.gz 
	cd /usr/local/nginx-1.8.1/

	./configure \
	--prefix=$dst \
	--conf-path=/etc/nginx/nginx.conf \
	--user=nginx \
	--group=nginx \
	--error-log-path=/var/log/nginx/error.log \
	--http-log-path=/var/log/nginx/access.log \
	--pid-path=/var/run/nginx/nginx.pid \
	--lock-path=/var/lock/nginx.lock \
	--with-http_ssl_module \
	--with-http_gzip_static_module \
	--with-debug \
	--with-http_stub_status_module \
	--http-client-body-temp-path=/var/tmp/nginx/client \
	--http-proxy-temp-path=/var/tmp/nginx/proxy \
	--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
	--http-uwsgi-temp-path=/var/tmp/nginx/uwsg \
	--http-scgi-temp-path=/var/tmp/nginx/scgi \
	--with-pcre \
	--with-debug

	make
	make install
	if [ $? -ne 0 ];then
	        echo -e "\033[31m install nginx faild \033[0m" && exit
	else 
	        echo -e "\033[37m install nginx finished \033[0m"
	fi
	sleep 3s

	#install mariadb php-fpm
	echo -e "\033[37m install mariadb php-fpm \033[0m"

	yum install -y mariadb mariadb-server php-fpm php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
	if [ $? -ne 0 ];then
	        echo -e "\033[31m install mariadb php-fpm faild \033[0m" && exit
	else
	        echo -e "\033[37m install mariadb php-fpm finished \033[0m"
	fi
	sleep 3s

	#config nginx
	echo -e "\033[37m config nginx \033[0m"
	sed -r -i 's/(^[[:space:]]+index ).*/\1index.php index.html index.htm;/g' /etc/nginx/nginx.conf
	sed -r -i '/pass the/,/}/s/(.*)#(.*)/\1\2/g' /etc/nginx/nginx.conf
	sed -r -i 's/(^[[:space:]]+)(pass the .*)/\1#\2/g' /etc/nginx/nginx.conf
	sed -r -i 's@(^[[:space:]]+fastcgi_param.*)/scripts(.*)@\1/usr/local/nginx/html\2@g' /etc/nginx/nginx.conf

	#config php-fpm
	echo -e "\033[37m config php-fpm \033[0m"
	sed -i 's/^user = apache/user = nginx/g'  /etc/php-fpm.d/www.conf
	sed -i 's/^group = apache/group = nginx/g'  /etc/php-fpm.d/www.conf

	#create php test page
	cd /usr/local/nginx/html
	#[ ! -f "/usr/local/nginx/html/index.php" ] && cat >>test.test<<EOF

	[ ! -f "/usr/local/nginx/html/index.php" ] && cat >>index.php<<EOF
	<?php

	\$conn = mysql_connect('127.0.0.1','root','');
	if (\$conn)
	        echo "ok";
	else
	        echo "Failure";

	phpinfo();
	?>
	EOF
	sleep 3s
	#start service
	echo -e "\033[37m start nginx service\033[37m"
	/usr/local/nginx/sbin/nginx
	echo -e "\033[37m start mariadb serivce\033[0m"
	systemctl start mariadb.service
	echo -e "\033[37m start php-fpm serivce \033[0m"
	systemctl start php-fpm.service
	

[root@test ~]# bash lnmp.sh /usr/local/nginx	

原創文章,作者:N22_上海_長清,如若轉載,請注明出處:http://www.www58058.com/65099

(0)
N22_上海_長清N22_上海_長清
上一篇 2017-01-03 11:05
下一篇 2017-01-03 11:33

相關推薦

  • 公鑰和私鑰的原理

          今天上課老師講到公鑰和秘鑰,模模糊糊聽了個大概,始終還是不能夠詳細的理解公鑰怎么會事?私鑰怎么會事?工作原理是怎么的?今天在網上找了半天,通過查看大家對這個密鑰對的理解,總算弄清楚了,咱就把我的心得寫出來給大家對密鑰對有疑問的同志們看看。      公鑰和私鑰就是俗稱…

    Linux干貨 2016-11-30
  • linux快捷鍵

    $ 用法 $變量名 表引用變量的值 $()或(單引號) 表示引用命令執行的結果 $[] 表示運算 ${變量名} 或"$變量名" 當變量名的起止不分明時,用來劃定變量名的范圍,同時引用變量。 {} 用法 {a..z} 表示引用指定范圍的字母 {1..9999} 表示引用指定范圍的數字? {1,3,5} 表示分別引用每一個字符 TAB 用法 …

    Linux干貨 2017-07-13
  • N23 9月底的

    1.linux下文件管理命令 cat 讀取文件 或者連接顯示touch 建立文件 改變時間 cp 復制文件 -f 強制復制 不論覆蓋-r 連同子目錄遞歸處理-l 建立硬鏈接-s 建立符號連接 rm 刪除文件 -r 遞歸刪除 連同子目錄也一起干掉-f 強制 刪除文件或者目錄-d 直接刪除目錄 file 辨識文件類型 find 查找文件 whereis 查找文件…

    Linux干貨 2016-09-25
  • 正則表達式和grep用法,及文本查看、處理工具

    概念 正則表達式,又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),是計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些匹配某個模式的文本。(維基百科) 通俗…

    2017-10-21
  • 魔術方法

    魔術方法 屬性 含義 __name__ 類、函數、方法等的名字 __module__ 類定義所在的模塊名 __class__ 對象或類所屬的類 __bases__ 類的基類的元組,舒徐為他們在基類列表中出現的順序 __doc__ 類、函數的文檔字符串,如果沒有定義則為None __mro__ 類的mro,class.mro()返回的結果保存在__mro__中…

    Linux干貨 2017-11-21
  • Week 1–Linux基礎2

    四. Linux系統命令使用格式:  但首先,在linux中我們要知道linux系統中基本的命令格式如下: 命令字 【命令選項】 【命令參數】   Command 【option】 【arguments】 在這里主要介紹這幾個命令的使用格式(Ifconfig,echo, tty, startx, export, pwd, history, shut…

    Linux干貨 2016-12-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-01-04 16:04

    腳本寫的很好,一部分也做了條件判斷,我認為條件判斷還可以在多一點,如果第二次執行腳本會怎么樣?多加一些條件判斷吧

欧美性久久久久