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

相关推荐

  • 编译安装httpd-2.2.27.tat.gz及配置常见参数

    一、编译安装的整体步骤  1、在官网下载源码,并解压 2、切换到其目录中  3、执行./configure 4、编译   二、编译中及安装后配置常见的参数及其说明 编译中配置 1)指定安装路径 –prefix=/usr/local/Pacakage_name  指定安装路径 –sysc…

    Linux干货 2016-08-24
  • N25_第五周

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

    Linux干货 2017-01-08
  • 控制字体颜色的输出echo[转载]

    http://onlyzq.blog.51cto.com/1228/546459 echo显示带颜色,需要使用参数-e格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如: echo -e "\033[41;37m TonyZhang \033[0m"其中41的位置…

    Linux干货 2017-02-01
  • 网络文件系统–NFS

        网络文件系统(英语:Network File System,缩写为NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。     NFS和其他许多协议一…

    Linux干货 2017-08-14
  • ​ 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限;     cp -a /etc/skel /home/tuser1     chmod -R 7…

    Linux干货 2016-10-17
  • 如何编译源码安装

    #include <stdio.h> main() {printf(“Hello World!\n”); } gcc -o hello hello.c 在编写hello.c的时候出现问题一直找不到,后来发现是因为我安装的gcc有问题 我在安装的时候是用rpm -ivh gcc –nodeps忽略依赖关系直接安装…

    2017-08-19