第十六周作業

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

    安裝nginx:

     1)安裝依賴包

]# yum groupinstall "Development Tools" "Development Libraries" -y
]# yum install wget openssl-devel ncurses-devel cmake pcre-devel libxml2-devel bzip2-devel libcurl-devel libmcrypt-devel -y

     2)關閉防火墻和selinux

]# iptables -F
]# systemctl stop firewalld.service
]# systemctl disable firewalld.service
]# setenforce 0
]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

     3)創建nginx用戶和組

]# groupadd -r nginx
]# useradd -r -g nginx nginx

     4)編譯安裝nginx

]# tar xf nginx-1.6.1.tar.gz
]# cd nginx-1.6.1
]# ./configure \
  --prefix=/usr/local/nginx \
  --sbin-path=/usr/local/nginx/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --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 \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_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/uwsgi \
  --http-scgi-temp-path=/var/tmp/nginx/scgi \
  --with-pcre
]# make && make install

     5)啟動nginx

]# mkdir /var/tmp/nginx/client -p
]# echo "export PATH=/usr/local/nginx/sbin:$PATH" >/etc/profile.d/nginx.sh
]# source /etc/profile
]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
]# nginx

     安裝mysql:

    6)創建mysql用戶和組

]# groupadd -r mysql
]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

     7)二進制方式安裝mysql

]# tar xf mysql-5.5.32.tar.gz
]# cd mysql-5.5.32
]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0 \
-DWITH_SSL=system

     8)初始化數據庫

]# mkdir /mydata/data
]# chown -R mysql.mysql /mydata/data
]# cd /usr/local/mysql
]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

     9)創建mysql參數文件

]# cp support-files/my-large.cnf /etc/my.cnf
]# vim /etc/my.cnf
[mysqld]
...
datadir= /mydata/data
innodb_file_per_table= ON
skip_name_resolve= ON
...

     10)創建啟動腳本

]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

     11)輸出mysql的頭文件至系統頭文件路徑/usr/include

]# ln -s /usr/local/mysql/include/ /usr/include/mysql

     12)輸出mysql的庫文件給系統庫查找路徑

]# echo "/usr/local/mysql/lib/" >/etc/ld.so.conf.d/mysql.conf
]# ldconfig 

    13)啟動mysql

]# echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
]# source /etc/profile
]# /etc/init.d/mysqld start

     安裝php:

    14)打補丁

]# tar xf php-5.4.4.tar.bz2
]# cd php-5.4.4
]# curl -o php-5.x.x.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt
]# patch -p0 -b < ./php-5.x.x.patch

    15)編譯安裝php

./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-openssl \
--enable-fpm \
--enable-sockets \
--enable-sysvshm \ 
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-libxml-dir=/usr \
--enable-xml \
--with-mhash \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2 \
--with-curl 
]# make && make install

     16)創建php-fpm啟動腳本

]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm 
]# chmod +x /etc/rc.d/init.d/php-fpm 
]# chkconfig --add php-fpm
]# chkconfig php-fpm on
]# /etc/init.d/php-fpm start

     17)創建并修改php配置文件

]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
]# vim /usr/local/php/etc/php-fpm.conf
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/php/var/run/php-fpm.pid

]# echo "fastcgi_param  SCRIPT_FILENAME    \$document_root\$fastcgi_script_name;" >> /etc/nginx/fastcgi_params

]# vim /etc/nginx/nginx.conf
location / {
            root   html;
            index  index.php index.html index.htm;
        } location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
]# nginx -s reload

     測試:

    18)測試nginx與php的聯動

]# cat > /usr/local/nginx/html/index.php << EOF
<?php
phpinfo();
?>
EOF

第十六周作業

    19)測試php與mysql的聯動

]# cat >/usr/local/nginx/html/index.php <<EOF
<?php
    \$conn = mysql_connect('127.0.0.1','root','');
    if (\$conn)
        echo "OK";
    else
        echo "Failure";
?>
EOF

第十六周作業

2、編寫一個腳本完成以下功能:
   (1)、一鍵搭建LNMP源碼編譯環境;

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

腳本執行前提:

1)操作系統版本為centos7

2)部署環境能夠訪問外網

3)源碼安裝包應提前準備好并與該腳本放在同一目錄下

#!/bin/bash
lnmp() {
echo "安裝前環境準備..."
sleep 3
yum remove nginx mysql mariadb php -y
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum groupinstall "Development Tools" "Development Libraries" -y
yum install openssl-devel \
ncurses-devel \
cmake \
pcre-devel \
libxml2-devel \
bzip2-devel \
libcurl-devel \
libmcrypt-devel -y

iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i '/^SELINUX\>/d' /etc/selinux/config
echo "SELINUX=disabled" >>/etc/selinux/config

echo "開始安裝nginx..."
sleep 3

#編譯安裝nginx
id nginx &>/dev/null && userdel -r nginx
groupdel nginx
groupadd -r nginx
useradd -r -g nginx nginx
tar xf $PWD/nginx-1.6.1.tar.gz
cd nginx-1.6.1
./configure \
--prefix=$dir/nginx \
--sbin-path=$dir/nginx/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--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 \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_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/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
make && make install

mkdir -p /var/tmp/nginx/client

#添加對php的支持
sed -i '65,71s/^[[:space:]]\+#//g' /etc/nginx/nginx.conf
sed -i '45s/index.html/index.php index.html/g' /etc/nginx/nginx.conf
echo "fastcgi_param  SCRIPT_FILENAME    \$document_root\$fastcgi_script_name;" >> /etc/nginx/fastcgi_params

#添加環境變量
echo "export PATH=$dir/nginx/sbin:$PATH" >/etc/profile.d/nginx.sh
source /etc/profile

nginx

#Nginx測試
if curl 127.0.0.1 &>/dev/null;then
    echo "Nginx安裝成功!"
else
    echo "Nginx安裝失敗!"
fi

echo "開始安裝MySQL..."
sleep 3
#編譯安裝MySQL
id mysql &>/dev/null && userdel -r mysql
groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
tar xf $PWD/mysql-5.5.32.tar.gz
cd mysql-5.5.32
cmake \
-DCMAKE_INSTALL_PREFIX=$dir/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0 \
-DWITH_SSL=system
make && make install

#初始化數據庫
cd $dir/mysql
chown -R root.mysql ./*
[ ! -d /mydata/data ] && mkdir -p /mydata/data
scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

#修改MySQL參數文件
/usr/bin/cp support-files/my-large.cnf /etc/my.cnf
sed -i '/\[mysqld\]/a datadir= /mydata/data\ninnodb_file_per_table= ON\nskip_name_resolve= ON' /etc/my.cnf

#生成MySQL啟動文件
/usr/bin/cp support-files/mysql.server /etc/rc.d/init.d/mysqld

ln -s $dir/mysql/include/ /usr/include/mysql
echo "$dir/mysql/lib/" >/etc/ld.so.conf.d/mysql.conf
ldconfig

#添加MySQL環境變量
echo "export PATH=$dir/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile

#啟動MySQL
/etc/init.d/mysqld start

echo "開始安裝php..."
sleep 3
tar xf $PWD/php-5.4.4.tar.bz2
cd php-5.4.4
#打補丁,解決編譯安裝過程中的報錯
curl -o php-5.x.x.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt
patch -p0 -b < ./php-5.x.x.patch
./configure --prefix=$dir/php \
--with-mysql=$dir/mysql \
--with-openssl \
--enable-fpm \
--enable-sockets \
--enable-sysvshm \
--with-mysqli=$dir/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-libxml-dir=/usr/include/libxml2/libxml \
--enable-xml \
--with-mhash \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2 \
--with-curl 
make && make install

#生成php-fpm啟動文件
/usr/bin/cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm 
chmod +x /etc/rc.d/init.d/php-fpm

#修改php參數文件
/usr/bin/cp $dir/php/etc/php-fpm.conf.default $dir/php/etc/php-fpm.conf
sed -i -e '/pm.max_children/d' -e \
'/\<pm.start_servers\>/d' -e \
'/\<pm.min_spare_servers\>/d' -e \
'/\<pm.max_spare_servers\>/d' -e \
'/pid = run\/php-fpm.pid/s/^;//g' $dir/php/etc/php-fpm.conf
cat >>$dir/php/etc/php-fpm.conf <<EOF
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
EOF

/etc/init.d/php-fpm start
echo "php安裝完畢!"
}

#主程序
PWD=$(pwd)
if [ ! -f $PWD/mysql-5.5.32.tar.gz ] || [ ! -f $PWD/nginx-1.6.1.tar.gz ] || [ ! -f $PWD/php-5.4.4.tar.bz2 ];then
    echo "請將安裝文件與腳本放在同一目錄下!"
    exit 1
fi

if [ $# -eq 0 ];then
    dir=/usr/local
elif [ $# -eq 1 ];then
    dir=$1
    if [ ! -d $dir ];then 
    mkdir -p $dir
    fi
else
    echo "參數無效,請重新執行!"
    exit 1
fi

lnmp

原創文章,作者:N26-西安-方老喵,如若轉載,請注明出處:http://www.www58058.com/73726

(1)
N26-西安-方老喵N26-西安-方老喵
上一篇 2017-05-02
下一篇 2017-05-02

相關推薦

  • 馬哥教育網絡班22期第二周課程練習1-未聞花名

    1、Linux管理文件和目錄的命令 命令 功能 命令 功能 pwd 顯示當前目錄 ls 查看目錄下的內容 cd 改變所在目錄 cat 顯示文件的內容 grep 在文件中查找某字符 cp 復制文件 touch 創建文件 mv 移動文件 rm 刪除文件 rmdir 刪除目錄 1.1 pwd命令 該命令的英文解釋為print working directory(打…

    Linux干貨 2016-08-22
  • 探索處理文本工具“sed”的相關奧妙

    一:sed工具 1,set的介紹:sed是一種流編輯器,它一次處理一行內容。處理時,把當前 處理的行存儲在臨時緩沖區中,稱為“模式空間”(patternspace),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。然后讀入下行,執行下一個循環。如果沒有使諸如‘D’的特殊命令,那會在兩個循環之間清空模式空間,但不會清空保留空間。這樣不斷…

    2017-08-26
  • 交互式與非交互式的區別

    交互式與非交互式shell /登錄shell于非登錄shell 外網連不上,教室裝修太吵,相關資料找不到,云云不知所云,托托癥又犯了 登錄shell_非登錄shell // .bash_profile .bashrc profile 文件的作用的執行順序 http://blog.csdn.net/robertaqi/archive/2010/04/04/54…

    Linux干貨 2017-06-11
  • 優云軟件數據專家最佳實踐:數據挖掘與運維分析

    這份研究報告,作者是優云軟件數據專家陳是維,在耗時1年時間制作的一份最佳實踐,今天和大家分享下,關于《數據采礦和運維分析》,共同探討~ 數據挖掘(Data Mining)是從大量數據中提取或“挖掘”知識。 廣義數據挖掘:數據挖掘是從存放在數據庫、數據倉庫或其它信息庫中的大量數據挖掘有趣知識的過程。 數據挖掘技術側重:1)概率與數理統計 2)數據庫技術 3)人…

    大數據運維 2016-07-16
  • kickstart+ftp+dhcp+tftp實現centos6的無人值守安裝

    環境IP : 172.16.0.32 centos 6.6 一.安裝相關包 安裝圖形界面 [root@localhost ~]# yum groupinstall “Desktop” “X Window System” “Chinese Support” [root@localhost ~]# yum -y install dhcp tftp-server …

    Linux干貨 2017-06-03
  • Linux磁盤知識,分區與文件系統

    硬件設備在Linux系統中的表現     設備文件      I/O Ports: I/O設備地址      一切皆文件:         open(), read(), write(), close()   &nbsp…

    Linux干貨 2016-08-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-05-04 13:53

    這篇博客寫的非常好,下次可以再深入一些,完成一次超級版的源編譯,把jpeg,png等這些依賴包也用源友編譯實現。

欧美性久久久久