第十六周

1、源碼編譯安裝LNMP架構環境;
  安裝必要的包組和依賴的包
yum groupinstall “Development Tools” “Development Libraries” 
yum install wget openssl-devel ncurses-devel cmake pcre-devel libxml2-devel bzip2-devel libcurl-devel libmcrypt-devel 
   關閉防火墻和selinux

安裝編譯Nginx  (gcc openssl-devel pcre-devel zlib-devel)
創建nginx用戶和用戶組
[root@CentOS7 sources]# groupadd -r nginx
[root@CentOS7 sources]# useradd -r -g nginx nginx
編譯
[root@CentOS7 sources]# tar xf nginx-1.6.1.tar.gz
[root@CentOS7 nginx-1.6.1]# ./configure  
 –prefix=/usr   
–sbin-path=/usr/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
[root@CentOS7 nginx-1.6.1]# make && make install
[root@CentOS7 nginx-1.6.1]# mkdir -p /var/tmp/nginx/client
  命令生效
[root@CentOS7 profile.d]# vim /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH
[root@CentOS7 profile.d]#  .  /etc/profile.d/nginx.sh
 啟動nginx
[root@CentOS7 profile.d]# nginx –t  檢查
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@CentOS7 profile.d]# nginx
編譯安裝mysql
創建mysql用戶與用戶組,創建數據庫目錄
[root@CentOS7 sources]# groupadd -r mysql
[root@CentOS7 sources]# useradd -r -g mysql mysql
[root@CentOS7 /]# mkdir -p /data/mysql
[root@CentOS7 /]# chown mysql:mysql /data/mysql
  
編譯安裝
[root@CentOS7 sources]# tar fx mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
[root@CentOS7 sources]# cd /usr/local
[root@CentOS7 sources]# cd mariadb-5.5.46-linux-x86_64/
[root@CentOS7 local]# ln -sv mariadb-5.5.46-linux-x86_64 mysql”mysql” -> “mariadb-5.5.46-linux-x86_64”
[root@CentOS7 local]# cd mysql/
[root@CentOS7 mysql]# chown root.mysql ./
[root@CentOS7 mysql]# scripts/mysql_install_db –user=mysql –datadir=/data/mysql
  創建服務
[root@CentOS7 mysql]#  cp support-files/mysql.server /etc/init.d/mysqld
[root@CentOS7 mysql]# chkconfig –add mysqld  
[root@CentOS7 etc]# cp my.cnf{,.bak}
   mysql創建配置文件并修改
[root@CentOS7 mysql]# cp support-files/my-large.cnf  /etc/my.cnf

[root@CentOS7 /]# ln -s /tmp/mysql.sock /var/mysql/mysql.sock  確保php的socket路徑一直

[root@CentOS7 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
innodb_file_per_table= ON
skip_name_resolve= ON
  啟動服務
[root@CentOS7 mysql]# service mysqld start
Starting MySQL… SUCCESS! 
[root@CentOS7 mysql]# ss –tnl
State       Recv-Q Send-Q                     Local Address:Port                                    Peer Address:Port              
LISTEN      0      50                                     *:3306                                               *:

編譯安裝php

[root@CentOS7 sources]# tar xf php-5.6.31.tar.gz 
[root@CentOS7 sources]# cd php-5.6.31/
[root@CentOS7 php-5.6.31]# ./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
[root@CentOS7 php-5.6.31]# make && make install
    創建服務
[root@CentOS7 php-5.6.31]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@CentOS7 php-5.6.31]# chmod +x /etc/init.d/php-fpm
   為php-fpm提供配置文件
[root@CentOS7 sources]#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@CentOS7html]# echo “fastcgi_param  SCRIPT_FILENAME    \$document_root\$fastcgi_script_name;” >> /etc/nginx/fastcgi_params 與nginx有關
   為php提供配置文件:
[root@CentOS7 php-5.6.31]# cp /sources/php-5.6.31/php.ini-development /usr/local/php/php.ini
   修改php-fpm配置
[root@CentOS7 php-5.6.31]# 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
開啟服務
[root@CentOS7 sources]# /etc/init.d/php-fpm start
  
   編輯nginx配置文件,添加php
[root@CentOS7 mysql]# vim /etc/nginx/nginx.conf
location / {
            root   /usr/local/nginx/html;
            index  index.php index.html index.htm;
        }
location ~ .php$ {
            root           /usr/local/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
[root@CentOS7 www]# nginx -s reload

建立測試文件,進行測試
[root@CentOS7 local]# vim /usr/local/nginx/html/index.php
<?php
    $conn = mysql_connect(‘127.0.0.1′,’root’,”);
    if ($conn)
        echo “OK”;
    else
        echo “Failure”;
?>

<?php
  phpinfo();
?>

2、編寫一個腳本完成以下功能:
   (1)、一鍵搭建LNMP源碼編譯環境;
   (2)、可通過在腳本后面跟上一些參數來自定義安裝目錄等其他選項。”

#!/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

原創文章,作者:ning407631632,如若轉載,請注明出處:http://www.www58058.com/84778

(0)
ning407631632ning407631632
上一篇 2017-08-15 17:59
下一篇 2017-08-15 19:06

相關推薦

  • mysql進階至mysql備份基礎及備份工具

    一、mysql備份、恢復基礎 備份:存儲的數據副本 還原:把副本應用到線上系統,僅能恢復至備份操作時刻的數據狀態。 硬件上的冗余并不能有效恢復邏輯操作上的錯誤。 備份:數據備份、服務配置文件備份、系統環境備份。程序的運行依賴于一定的系統環境,僅提供數據本身并不能確保恢復數據之后系統可用,數據備份的目的在于確保系統出現不可預料的災難事故之后能夠快速恢復運行,降…

    2016-11-18
  • 初學Linux之 vim 文本編輯器

    vim 的模式切換;命令模式相關操作,拓展命令模式的相關操作;可視化和多窗口;定制vim的工作特性;vim幫助

    2017-12-31
  • CentOS6+ LAMP+ wordpress 搭建個人博客站

        每個IT工程師都期待擁有一個自己的博客站,本文講述在CentOS 6系統LAMP環境下使用WordPress框架構建個人博客站的詳細過程。     —-構建LAMP環境—- 1,安裝apache,mysql php yum install -y httpd mysql…

    2017-07-11
  • 第二周(8.15-8.21)博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 #touch 如果a.txt不存在,生成一個新的空文檔a.txt。如果a.txt存在,那么只更改該文檔的時間信息 #ls  是list的簡寫,列出當前目錄下的所有文件名 #cp a.txt b.txt  cp是copy的簡寫,用來復制文件。在工作目錄下,將a.t…

    Linux干貨 2016-08-24
  • 馬哥教育網絡班N22期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。     [root@zabbix ~]# id $(who | cut -d' ' -f1 | tail -n 1)    &nbs…

    Linux干貨 2016-08-30
  • Linux發展及簡單命令

    一 計算機的組成及其功能 馮·諾依曼提出的計算機體系結構:計算機由控制器、運算器、存儲器、輸入設備、輸出設備五部分組成。 二?Linux的發行版 Linux發行版主要有三個分支:Debian、Slackware、Redhat。 (1)Debian:(以社區的方式運作) Ubuntu:基于Debian開發的開源Linux操作系統,主要針對桌面和服務器; Lin…

    2018-03-02
欧美性久久久久