N21天天第十六周课程练习

1、源码编译安装LNMP架构环境;

一、安装Nginx
1、解决依赖
[root@localhost ~]# yum groupinstall 开发工具 服务器平台开发 -y
2、安装
[root@localhost ~]# tar xf pcre-8.37.tar.bz2 -C /usr/local/src/
[root@localhost ~]# tar xf nginx-1.8.0.tar.gz -C /usr/local/src/
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -g nginx -r -s /sbin/nologin nginx
[root@localhost ~]# cd /usr/local/src/nginx-1.8.0
[root@localhost nginx-1.8.0]#./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_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-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-pcre=/usr/local/src/pcre-8.37
[root@localhost nginx-1.8.0]# make -j 4 && make install && cd
[root@localhost ~]# mkdir /var/tmp/nginx/client -p
3、配置nginx支持php
[root@localhost ~]# vim /etc/nginx/nginx.conf
修改
        #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;
        #}
为
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;
    include        fastcgi_params;
}
#启动nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx 
二、安装mysql-5.6.26
1、安装依赖
[root@localhost ~]# yum -y install cmake ncurses-devel
2、编译安装mysql
[root@localhost ~]# tar xf mysql-5.6.26.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/mysql-5.6.26/
[root@localhost mysql-5.6.26]# useradd -M -s /sbin/nologin -r mysql
[root@localhost mysql-5.6.26]#cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
-DMYSQL_UNIX_ADDR=/tmp/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=/usr/local/mysql/data  \
-DMYSQL-USER=mysql
[root@localhost mysql-5.6.26]# make -j 4 && make install && cd
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql/
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# sed  -i 's#^basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld
[root@localhost ~]# sed  -i 's#^datadir=#datadir=/usr/local/mysql/data#' /etc/init.d/mysqld
[root@localhost ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
[root@localhost ~]# sed -i '/^\[mysqld\]/adatadir = /usr/local/mysql/data' /etc/my.cnf
[root@localhost ~]# sed -i '/^\[mysqld\]/abasedir = /usr/local/mysql' /etc/my.cnf
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--defaults-file=/etc/my.cnf
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh 
[root@localhost ~]# . /etc/profile.d/mysql.sh                                       
[root@localhost ~]# service mysqld start
三、安装PHP php-5.6.13
1、PHP添加libmcrypt拓展
[root@localhost ~]# tar xf libmcrypt-2.5.8.tar.bz2
[root@localhost ~]# cd libmcrypt-2.5.8
[root@localhost libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt
[root@localhost ~]# make && make install && cd
[root@localhost ~]# sed -i '1a/usr/local/libmcrypt/lib' /etc/ld.so.conf
2、解决依赖
[root@localhost ~]# yum -y install php-pear
[root@localhost ~]# sed -i '2a/usr/local/mysql/lib' /etc/ld.so.conf
[root@localhost ~]# ldconfig
[root@localhost ~]# echo 'ldconfig' >> /etc/rc.local
[root@localhost ~]# yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype freetype-devel
3、编译安装php-5.6.13
[root@localhost ~]# tar xf php-5.6.13.tar.bz2 
[root@localhost ~]# cd php-5.6.13
[root@localhost php-5.6.13]#./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--enable-gd-native-ttf \
--with-mhash  \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-mcrypt=/usr/local/libmcrypt/ \
--with-gettext
[root@localhost php-5.6.13]# make -j 4 && make install
4、配置php和php-fpm
[root@localhost php-5.6.13]# cp php.ini-production /usr/local/php/php.ini 
[root@localhost php-5.6.13]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@localhost php-5.6.13]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-5.6.13]# cd
[root@localhost ~]# chmod +x /etc/init.d/php-fpm
[root@localhost ~]# chkconfig php-fpm on
[root@localhost ~]# /etc/init.d/php-fpm start
#添加测试页
[root@localhost ~]# echo "<?php phpinfo(); ?>" >/usr/local/nginx/html/index.php
[root@localhost ~]#

 2、编写一个脚本完成以下功能:

   (1)、一键搭建LNMP源码编译环境;

   (2)、可通过在脚本后面跟上一些参数来自定义安装目录等其他选项。

[root@localhost ~]# cat lnmp.sh

#!/bin/bash
function download {
echo -e "\033[32m=========download about all web server source package==========\033[0m"
rpm -q lftp || yum -y install lftp
[ -d $lcd ] || mkdir $lcd
HOST=$host
USER="$fuser"
PASS="$fpass"
LCD=$lcd
RCD=$rcd
/usr/bin/lftp <<EOF
open ftp://$USER:$PASS@$HOST
mirror $RCD $LCD
EOF
echo -e "\033[32m=========all web server source package download finised !==========\033[0m"
}
function install_nginx {
echo -e "\033[32m=========now start install source nginx========\033[0m"
useradd -r -s /sbin/nologin nginx
cd $lcd
tar xf pcre-8.37.tar.bz2 -C /usr/local/src/
tar xf nginx-1.8.0.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.8.0
./configure \
  --prefix=$n_pre \
  --sbin-path=$ns_path \
  --conf-path=$nc_path \
  --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_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-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-pcre=/usr/local/src/pcre-8.37
make -j 4 && make install && cd
echo -e "\033[32m=========nginx is ok========\033[0m"
}
function config_nginx {
mkdir /var/tmp/nginx/client -p
sed -i '/# pass/a \
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; \
    include        fastcgi_params; \
}' /etc/nginx/nginx.conf
$ns_path
}
function install_mysql {
yum -y install cmake ncurses-devel
cd $lcd
tar xf mysql-5.6.26.tar.gz -C /usr/local/src/
cd /usr/local/src/mysql-5.6.26/
useradd -M -s /sbin/nologin -r mysql
cmake  \
-DCMAKE_INSTALL_PREFIX=$m_pre \
-DMYSQL_UNIX_ADDR=/tmp/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=$m_data \
-DMYSQL-USER=mysql
make -j 4 && make install && cd
echo -e "\033[32m=========mysqld is ok========\033[0m"
}
function config_mysql {
echo -e "\033[32m frist,Associated system path,and Initialization database \033[0m"
chown -R mysql.mysql $m_pre
sed  -i "s#^basedir=#basedir=$m_pre#" /etc/init.d/mysqld
sed  -i "s#^datadir=#datadir=$m_data#" /etc/init.d/mysqld
cp $m_pre/support-files/my-default.cnf /etc/my.cnf
sed -i "/^\[mysqld\]/adatadir = $m_data" /etc/my.cnf
sed -i "/^\[mysqld\]/abasedir = $m_pre" /etc/my.cnf
chkconfig mysqld on
cp $m_pre/support-files/mysql.server /etc/init.d/mysqld
$m_pre/scripts/mysql_install_db \
--user=mysql \
--basedir=$m_pre \
--datadir=$m_data \
--defaults-file=/etc/my.cnf
ln -s $m_pre/bin/* /usr/bin
chkconfig mysqld on
service mysqld start
}
function install_php_fpm {
cd $lcd
tar xf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make && make install && cd ..
sed -i '1a/usr/local/libmcrypt/lib' /etc/ld.so.conf
yum -y install php-pear
sed -i '2a/usr/local/mysql/lib' /etc/ld.so.conf
ldconfig
echo 'ldconfig' >> /etc/rc.local
yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype freetype-devel
tar xf php-5.6.13.tar.bz2 
cd php-5.6.13
./configure \
--prefix=$p_pre \
--with-config-file-path=$p_pre \
--with-mysql=$m_pre \
--with-mysqli=$m_pre/bin/mysql_config \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--enable-gd-native-ttf \
--with-mhash  \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-mcrypt=/usr/local/libmcrypt/ \
--with-gettext
make -j 4 && make install
echo -e "\033[32m=========php-fpm is ok========\033[0m"
}
function config_php_fpm {
cp $lcd/php-5.6.13/php.ini-production $p_pre/php.ini
cp $p_pre/etc/php-fpm.conf.default $p_pre/etc/php-fpm.conf
cp $lcd/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig php-fpm on
/etc/init.d/php-fpm start
echo "<?php phpinfo(); ?>" > $n_pre/html/index.php
}
function install_lnmp {
    install_nginx $lcd,$n_pre,$ns_path,$nc_path
    config_nginx $lcd,$n_pre,$ns_path
    install_mysql $lcd,$m_pre,$m_data
    config_mysql $lcd,$m_pre,$m_data
    install_php_fpm $lcd,$p_pre,$m_pre
    config_php_fpm $lcd,$p_pre,$m_pre,$n_pre
}
echo -e "\033[32m====now,download all web package====\033[0m"
read -p "Please input source package store direcotry:" lcd
read -p "Please input ftp host:" host
read -p "Please input ftp user:" fuser
read -p "Please input the password:" fpass
read -p "Please input require download directory:" rcd
download $lcd,$host,$fuser,$fpass,$rcd
echo -e "\033[32m====install development packages====\033[0m"
yum -y groupinstall "Development tools" "Server Platform Development"
echo -e "\033[32m=========you can choice you need install package==========\033[0m"
cat <<EOF
nginx|N)         install nginx source package.
mysql|M)         install mysql source package.
php|P)           install php source package.
php-fpm|PF)      install php-fpm source package.
lamp)            install lamp source package.
lnmp)            install lnmp source package.
q|Q)             quit
EOF
read -p "Please choose to install: " Choice
echo -e "\033[32m=====start install $Choice====\033[0m"
until [ $Choice == q -o $Choice == Q ];do
 case $Choice in
nginx|N)
   [ -z $n_pre ] && read -p "nginx prefix path:" n_pre
   [ -z $ns_path ] && read -p "nginx sbin path:" ns_path
   [ -z $nc_path ] && read -p "nginx conf path:" nc_path
   install_nginx $lcd,$n_pre,$ns_path,$nc_path
   config_nginx $lcd,$n_pre,$ns_path ;;
mysql|M)     
   install_mysql $lcd,$m_pre,$m_data
   config_mysql $lcd,$m_pre,$m_data ;;
php-fpm|PF)
   [ -z $n_pre ] && read -p "nginx prefix path:" n_pre
   [ -z $p_pre ] && read -p "php prefix path:" p_pre
   [ -z $m_pre ] && read -p "mysql prefix path:" m_pre
   install_php_fpm $lcd,$p_pre,$m_pre
   config_php_fpm $lcd,$p_pre,$m_pre,$n_pre ;;
lnmp)        
   [ -z $n_pre ] && read -p "nginx prefix path:" n_pre
   [ -z $ns_path ] && read -p "nginx sbin path:" ns_path
   [ -z $nc_path ] && read -p "nginx conf path:" nc_path
   [ -z $m_pre ] && read -p "mysql prefix path:" m_pre
   [ -z $m_data ] && read -p "mysql data store:" m_data
   [ -z $p_pre ] && read -p "php prefix path:" p_pre
   install_lnmp $lcd,$n_pre,$ns_path,$nc_path,$m_pre,$m_date,$p_pre;;
q|Q)      
rm -rf $lcd
break
esac
cat <<EOF
apache|A)         install apache source package.
nginx|N)         install nginx source package.
mysql|M)         install mysql source package.
php|P)           install php source package.
php-fpm|PF)      install php-fpm source package.
lamp)            install lamp source package.
lnmp)            install lnmp source package.
q|Q)             quit
EOF
read -p "Have any choice agin, if you no,q|Q is quit: " Choice
done

原创文章,作者:N21-天天,如若转载,请注明出处:http://www.178linux.com/63757

(0)
上一篇 2016-12-14 18:21
下一篇 2016-12-14 18:22

相关推荐

  • Linux文本处理三剑客之awk详解

    前言 awk是一款强大的报告生成器,不同于sed和grep,它的侧重点是如何把文本信息更好的展示出来,常用与统计和格式化输出。awk相当于微型的shell,有着自己一套语法结构,例如:循环结构,数组,条件判断,函数,内置变量等功能。处理对象一般纯文本文件或纯文本信息。 用法详解 基本语法 awk [options] 'progra…

    Linux干货 2015-04-29
  • N26-第五周博客

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]].*$" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; [root…

    系统运维 2017-02-10
  • 第六周作业

    请详细总结vim的使用 模式转换 编辑模式:默认模式     编辑模式–>输入模式         i:insert,在光标所在处插入         …

    Linux干货 2017-02-15
  • 互联网的实现

    互联网的实现 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡就收到了,两者实际上根本就不知道对方的物理位置,这难道不是一件很神奇的事情吗? 互联网的**核心**是一些列协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网做出了详细的规定。 互联网协议入门 概述 五层模型…

    Linux干货 2017-05-05
  • 第九周作业

    1. 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; # awk -F: ‘{if($7!=”/sbin/nologin”) {printf “Logined user %s\n”…

    Linux干货 2017-03-01
  • DNS

    配置缓存服务器: #vim /etc/named.conf Options { Listen-on port 53 { 127.0.0.1;172.16.0.68;}; //listen-on-v6 port 53 {::1;}; ……. Allow-query {any;}; …… Dnssec-enable…

    2017-06-04