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)
N21-天天N21-天天
上一篇 2016-12-14
下一篇 2016-12-14

相关推荐

  • 第一周作业

    – 描述计算机的组成及其功能。 – 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。 – 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。 – 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shu…

    Linux干货 2016-12-04
  • 8.5_Linux文本处理工具和grep之正则表达式的使用

    Linux文本处理工具使用 文件查看工具的使用 cat 命令的使用  此命令一般用于查看文件内容比较多 NAME        cat – concatenate files and print on the&…

    Linux干货 2016-08-08
  • CentOS7编译安装LAMP—php-fpm

    inux的环境是: [root@localhost ~]# lsb_release -a LSB Version:     :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description:     CentOS…

    Linux干货 2016-12-21
  • 马哥教育网络班20期+第五周博客作业

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

    Linux干货 2016-07-12
  • shell中的位置参数变量

    要了解位置变量,首先要知道什么是变量?  变量就是让某一个特定的字符串来代表不固定的内容,简单理解就是用一个简单的“字眼”来替代另一个比较复杂或者容易变动的数据。 而什么又是位置变量呢?  位置变量就是bash将传递给脚本的参数,按照位置不同,保存在不同的位置变量中,以便于脚本调用这些变量。 位置参数变量: $1, $2, ……

    Linux干货 2016-08-12
  • 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

    一、环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置 /…

    Linux干货 2016-12-18