阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LNMP(nginx+mysql+php)环境/架构 一键安装脚本

134次阅读
没有评论

共计 12304 个字符,预计需要花费 31 分钟才能阅读完成。

LNMP(nginx+mysql+php)环境 / 架构 一键安装脚本,该脚本已经在 CentOS 7.1 上测试通过,用时 27 分, 硬件环境(1G,1U)。该脚本有安装 PHP 加速器 xcache:

#!/bin/bash

# 该脚本的作用 : 在线一键部署 LNMP
#Write      :King
#Date      :2015-03-19

#mysql      数据存放目录为 /data/mysql
#php        主配置文件在 /usr/local/php/etc
#nginx      web 程序目录 /usr/local/nginx/html/index, 主配置目录 /usr/local/nignx/conf/nginx.conf

# 源码下载目录
SoftDir=’/usr/local/src’

# 定义安装日志路径
LOG_INS=’/var/log/install.log’

# 定义 Mysql 源码目录:
MysqlS=’/usr/local/mysql’

#define make
function MAKE(){
    if [`echo $?` -eq 0];then
            make >> $LOG_INS 2>&1
        else
            exit
    fi
}

#define make install
function MAKE_INS(){
    if [`echo $?` -eq 0];then
            make install >> $LOG_INS 2>&1
        else
            exit
    fi
}

# 安装系统扩展源:http://dl.Fedoraproject.org/pub/epel
if [`awk ‘{print $3}’ /etc/RedHat-release |awk -F ‘.’ ‘{print $1}’` -eq 6 ];then
                rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm >> $LOG_INS 2>&1
        elif [`awk ‘{print $4}’ /etc/redhat-release |awk -F ‘.’ ‘{print $1}’` -eq 7 ];then
                rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm >> $LOG_INS 2>&1
fi

# 安装系统运维包:
yum install -y lrzsz gcc gcc-c++  bzip2 bzip2-devel make man vim tree unzip wget lua-devel lua-static patch libxml2-devel libxslt libxslt-devel gd gd-devel ntp ntpdate screen sysstat tree rsync lsof autoconf gettext  gettext-devel automake libtool git >> $LOG_INS 2>&1

# 升级系统:
yum update -y >> $LOG_INS 2>&1

# 替换 selinux 配置:
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

# 下载安装 Mysql:  http://cdn.mysql.com/Downloads
cd $SoftDir && wget -q http://www.linuser.com/share/soft/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz

# 解压:
tar zxf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz

# 移动解压目录病重命名 Mysql:
mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql

# 添加 mysql 系统用户:
if [-z `grep mysql /etc/passwd`] ;then
        useradd -s /sbin/nologin mysql
fi

# 创建 mysql 初始化数据目录:
if [! -d “/data/mysql”] ;then
        mkdir -p /data/mysql
fi

# 将 mysql 初始化目录所属主和组修改为 mysql:
chown -R mysql.mysql /data/mysql/

# 初始化
cd $MysqlS && ./scripts/mysql_install_db –datadir=/data/mysql –user=mysql  >> $LOG_INS 2>&1

# 备份系统默认的 my.cnf 文件:
mv /etc/my.cnf{,.bak}

# 复制 mysql 的 主配置文件到 etc 目录下病重命名为 my.cnf
 \cp support-files/my-default.cnf /etc/my.cnf

# 复制 mysql 的启动脚本到 /etc/init.d 目录下:
 \cp support-files/mysql.server /etc/init.d/mysqld

# 赋予启动 755 权限:
chmod 755 /etc/init.d/mysqld

# 修改 my.cnf 文件配置如下:
cat << EOF > /etc/my.cnf
[mysqld]
pid-file=/data/mysql/mysql.pid
log-error=/var/log/mysql.log
datadir = /data/mysql
basedir = /usr/local/mysql
character-set-server=utf8
port = 3306
socket = /tmp/mysql.sock
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
thread_concurrency = 8
binlog_format=mixed
server-id = 1
slow-query-log = 1
slow-query-log-file = /data/mysql/mysql-slow.log
log-bin = mysql-bin
log-bin-index = mysql-bin.index
symbolic-links = 0
skip-name-resolve

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8

[mysqldump]
quick
max_allowed_packet = 16M

#[mysqld_safe]

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
EOF

# 启动 mysql:
service mysqld start

if [`echo $?` -eq 0] ;then
        echo “Mysql started”
else
        exit
fi

# 将 Mysqld 设置为随机启动:
chkconfig –add mysqld && chkconfig mysqld on

#=====================================                安装 LTP          =======================================
# 下载 LTP:
cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/ltp-full-20150420.tar.bz2

# 解压
tar jxf ltp-full-20150420.tar.bz2

# 配置编译参数:
cd ./ltp-full-20150420 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=====================================                安装 openssl1.0.2          =======================================
# 下载 openssl:
cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/openssl-1.0.2.tar.gz

# 解压:
tar zxf openssl-1.0.2.tar.gz

# 进入解压目录,配置编译参数:
cd ./openssl-1.0.2 && ./config >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=====================================                安装 curl-7.45.0          =======================================
# 下载:
cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/curl-7.45.0.tar.gz

# 解压:
tar zxf curl-7.45.0.tar.gz

# 进入解压目录,配置编译参数:
cd ./curl-7.45.0 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=====================================                安装 libmcrypt-2.5.8                  ==================================
# 下载:
cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/libmcrypt-2.5.8.tar.gz

# 解压:
tar zxf libmcrypt-2.5.8.tar.gz

# 进入解压目录,配置编译参数:
cd ./libmcrypt-2.5.8 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=======================================        安装 PHP 5.5.22          ====================================
# 下载 PHP 5.5.22
cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/php-5.5.30.tar.gz

# 解压 PHP:
tar zxf php-5.5.30.tar.gz

# 添加 php-fpm 用户,不允许登陆系统
useradd -s /sbin/nologin php-fpm

# 进入 PHP 解压目录,配置编译参数:
cd ./php-5.5.30 && ./configure –prefix=/usr/local/php  –with-config-file-path=/usr/local/php/etc  –enable-fpm  –with-fpm-user=php-fpm  –with-fpm-group=php-fpm  –with-mysql=/usr/local/mysql  –with-mysql-sock=/tmp/mysql.sock  –with-libxml-dir  –with-gd  –with-jpeg-dir  –with-png-dir  –with-freetype-dir  –with-iconv-dir  –with-zlib-dir  –with-mcrypt  –enable-soap  –enable-gd-native-ttf  –enable-ftp  –enable-mbstring  –enable-exif  –enable-zend-multibyte  –disable-ipv6  –with-pear  –with-curl –with-openssl –with-mysqli –enable-mysqlnd –with-gettext >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

# 复制 Php 主配置:
 \cp php.ini-production /usr/local/php/etc/php.ini

# 创建 php-fpm 主配置文件:
cat <<EOF > /usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = 127.0.0.1:9000
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
EOF

# 测试 php-fpm 配置:
/usr/local/php/sbin/php-fpm -t
if [`echo $?` -eq 0];then
        echo “php-fpm installed successfully”
else
        exit
fi

# 拷贝 php-fpm 启动脚本:
 \cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

# 赋予脚本可执行权限:
chmod 755 /etc/init.d/php-fpm

# 关闭 php 版本信息:
sed -i ‘s/expose_php = On/expose_php = Off/g’ /usr/local/php/etc/php.ini

# 将 php-fpm 写入随机启动:
chkconfig –add php-fpm && chkconfig php-fpm on

# 启动 php-fpm
service php-fpm start

#=======================================        安装 pcre2-10.00                ====================================
# 下载
cd $SoftDir && wget -q http://www.linuser.com/share/soft/pcre-8.37.tar.gz

# 解压:
tar zxf pcre-8.37.tar.gz

# 接入 pcre, 配置编译参数:
cd ./pcre-8.37 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=======================================        添加 libmaxminddb        ====================================
# 下载:
cd $SoftDir && wget -q http://www.linuser.com/share/soft/libmaxminddb-1.1.1.tar.gz

# 解压:
tar zxf libmaxminddb-1.1.1.tar.gz

cd ./libmaxminddb-1.1.1 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=======================================        添加 geoip2 模块                ====================================
# 下载
cd $SoftDir && wget -q  http://www.linuser.com/share/soft/ngx_http_geoip2_module-master.zip

# 解压:
unzip ngx_http_geoip2_module-master.zip >> $LOG_INS 2>&1

#=======================================        添加 libuwind              ====================================
# 下载:
cd $SoftDir && wget -q http://www.linuser.com/share/soft/libunwind-1.1.tar.gz

# 解压:
tar zxf libunwind-1.1.tar.gz

# 进入解压目录,配置编译参数::
cd ./libunwind-1.1 && ./configure >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

#=======================================        添加 gperftools                ====================================
# 下载:
cd $SoftDir && wget -q http://www.linuser.com/share/soft/gperftools-master.zip

# 解压:
unzip gperftools-master.zip

# 进入解压目录,执行 autogen.sh 生产配置文件:
cd ./gperftools-master && ./autogen.sh  >> $LOG_INS 2>&1

# 配置编译参数:
if [`echo $?` -eq 0];then
                ./configure >> $LOG_INS 2>&1
        else
                exit
fi

# 编译及安装
MAKE && MAKE_INS

#=======================================        安装 Tengine 2.1.0          ====================================
# 下载
cd $SoftDir && wget -q http://www.linuser.com/share/soft/nginx-1.8.0.tar.gz
# 解压:
tar zxf nginx-1.8.0.tar.gz

# 进入解压目录,配置编译参数:
cd ./nginx-1.8.0 && ./configure –prefix=/usr/local/nginx –with-http_realip_module  –with-http_sub_module –with-http_dav_module –with-http_gzip_static_module –with-http_stub_status_module  –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_auth_request_module –with-http_secure_link_module –with-http_stub_status_module –with-http_ssl_module –http-log-path=/var/log/nginx_access.log –with-google_perftools_module –with-pcre=/usr/local/src/pcre-8.37 –with-openssl=/usr/local/src/openssl-1.0.2 –add-module=/usr/local/src/ngx_http_geoip2_module-master >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

# 设置软链接
ln -s /usr/local/lib/libmaxminddb.so.0 /usr/lib64
ln -s /usr/local/lib/libprofiler.so.0 /usr/lib64
ln -s /usr/local/lib/libunwind.so.8 /usr/lib64

# 检测初始化完成的 nginx 配置是否有问题
/usr/local/nginx/sbin/nginx  -t
if [`echo $?` -eq 0];then
        echo “Nginx installed successfully!”
else
        exit
fi

# 创建 nginx 启动脚本
cat <<EOF > /etc/init.d/nginx
#!/bin/bash
# chkconfig: – 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN=”/usr/local/nginx/sbin/nginx”
NGINX_CONF=”/usr/local/nginx/conf/nginx.conf”
NGINX_PID=”/usr/local/nginx/logs/nginx.pid”
RETVAL=0
prog=”Nginx”

start() {
        echo -n \$”Starting \$prog: “
        mkdir -p /dev/shm/nginx_temp
        daemon \$NGINX_SBIN -c \$NGINX_CONF
        RETVAL=\$?
        echo
        return \$RETVAL
}

stop() {
        echo -n \$”Stopping \$prog: “
        killproc -p \$NGINX_PID \$NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL=\$?
        echo
        return \$RETVAL
}

reload(){
        echo -n \$”Reloading \$prog: “
        killproc -p \$NGINX_PID \$NGINX_SBIN -HUP
        RETVAL=\$?
        echo
        return \$RETVAL
}

restart(){
        stop
        start
}

configtest(){
    \$NGINX_SBIN -c \$NGINX_CONF -t
    return 0
}

case “\$1” in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $”Usage: \$0 {start|stop|reload|restart|configtest}”
        RETVAL=1
esac

exit \$RETVAL
EOF

# 赋予脚本可执行权限
chmod 755 /etc/init.d/nginx

# 备份 nginx 主配置文件
 \cp /usr/local/nginx/conf/nginx.conf{,.bak}

# 重新 nginx 配置:
cat << EOF > /usr/local/nginx/conf/nginx.conf
error_log /var/log/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include      mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
        server_tokens off;
    server {
        listen      80;
        server_name  localhost;
        location / {
            root  html;
            index  index.html index.htm index.php;
        }
        error_page  500 502 503 504  /50x.html;
        location = /50x.html {
            root  html;
        }
        location ~ \.php\$ {
            root          html;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
EOF

# 创建 PHP 测试文件:
echo “<?php  echo phpinfo();  ?>” >/usr/local/nginx/html/index.php

# 备份 index.html:
mv /usr/local/nginx/html/index.html{,.bak}

# 启动 nginx:
service nginx start

# 将 nginx 写入随机启动:
chkconfig –add nginx && chkconfig nginx on

# 开启防火墙的 80 端口
iptables -I INPUT -p tcp –dport 80 -j ACCEPT

# 保存防火墙配置
service iptables save

# 重启防火墙:
service iptables restart

# 设置 nginx、mysql 及 php 的环境变量:
echo “PATH=$PATH:/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/sbin” >> /etc/profile

# 刷新环境变量配置,使其立即生效:
source /etc/profile

##=======================================        安装 php 加速器 xcache 3.2.0        ====================================
# 官方地址:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

cd $SoftDir && wget -q http://www.linuser.com/share/soft/xcache-3.2.0.tar.gz

# 解压
tar zxf xcache-3.2.0.tar.gz

# 执行 phpize, 生成 xcache 的 configure 文件
cd ./xcache-3.2.0 && /usr/local/php/bin/phpize –clean &&  /usr/local/php/bin/phpize

# 配置编译参数:
./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config >> $LOG_INS 2>&1

# 编译及安装
MAKE && MAKE_INS

# 将 xcache 结合 php
echo “extemsiobn_dir=’/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/'” >> /usr/local/php/etc/php.ini
echo “extension=xcache.so” >> /usr/local/php/etc/php.ini

# 检测 php 是否有误:
/usr/local/php/sbin/php-fpm -t

# 重启 php-fpm:
service php-fpm restart

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL  http://www.linuxidc.com/Linux/2014-05/102351.htm

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 6.4 下的 LNMP 生产环境搭建及安装脚本 http://www.linuxidc.com/Linux/2013-11/92428.htm

生产环境实用之 LNMP 架构的编译安装 +SSL 加密实现 http://www.linuxidc.com/Linux/2013-05/85099.htm

LNMP 全功能编译安装 for CentOS 6.3 笔记 http://www.linuxidc.com/Linux/2013-05/83788.htm

CentOS 6.3 安装 LNMP (PHP 5.4,MyySQL5.6) http://www.linuxidc.com/Linux/2013-04/82069.htm

在部署 LNMP 的时候遇到 Nginx 启动失败的 2 个问题 http://www.linuxidc.com/Linux/2013-03/81120.htm

Ubuntu 安装 Nginx php5-fpm MySQL(LNMP 环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm

更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/131990.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计12304字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中