千家信息网

lnmp部署

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一.开源软件选型与简介1.Tengine简介: Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已
千家信息网最后更新 2026年11月01日lnmp部署

一.开源软件选型与简介

1.Tengine

简介: Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台,更多请查看官网。

tengine官网:http://tengine.taobao.org/

版本选择: Tengine-2.2.0.tar.gz

特性


    • - 继承Nginx-1.8.1的所有特性,兼容Nginx的配置;

    • - 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;

    • - 支持HTTP/2协议,HTTP/2模块替代SPDY模块;

    • - 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;

    • - 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;

    • - 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;

    • - 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数

    • - 动态脚本语言Lua支持。扩展功能非常高效简单;

    • - 支持按指定关键字(域名,url等)收集Tengine运行状态;

    • - 组合多个CSS、JavaScript文件的访问请求变成一个请求;

    • - 自动去除空白字符和注释从而减小页面的体积

    • - 自动根据CPU数目设置进程个数和绑定CPU亲缘性;

    • - 监控系统的负载和资源占用从而对系统进行保护;

    • - 显示对运维人员更友好的出错信息,便于定位出错机器;

    • - 更强大的防***(访问速度限制)模块;

    • - 更方便的命令行参数,如列出编译的模块列表、支持的指令等;

    • - 可以根据访问文件类型设置过期时间;


2.MYSQL

简介:关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。由于我们网站数据是单独放在集群中的,使用的是percon,所以在这里就不在安装数据库

3.PHP

简介:PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快,具体请参考官网

PHP官网:http://www.php.net/

选择版本:php-7.0.16.tar.gz 7.0最后一个版本,最新的则为7.1.2

特性:


    • 使用新版的ZendEngine引擎,带来了许多新的特性,以下是不完全列表:

    • 性能提升:PHP7比PHP5.6性能提升了两倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6

    • 全面一致的64位支持。 Consistent 64-bit support

    • 以前的许多致命错误,现在改成抛出异常。Many fatal errors are now Exceptions

    • 移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。Removal of old and unsupported SAPIs and extensions

    • 新增了空接合操作符。The null coalescing operator (??)

    • 新增加了结合比较运算符。Combined comparison Operator (<=>)

    • 新增加了函数的返回类型声明。Return Type Declarations

    • 新增加了标量类型声明。Scalar Type Declarations

    • 新增加匿名类。Anonymous Classes


二.环境概述

1.系统环境

centos6.8 mini版本

2.网络环境

192.168.10.2X

3.硬件配置

CPU:2核 MEM:2G DISK:100G

三.调优系统环境

1.调优启动服务

关闭postfix:/etc/init.d/postfix stop && chkconfig postfix off

关闭防火墙:/etc/init.d/iptables stop && chkconfig iptables off

关闭SELINUX:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.调优内核系统参数

sysctl -p

参数

含义

net.ipv4.ip_forward = 0

打开IP转发功能

net.ipv4.ip_default_ttl = 255

数据包的生存期

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

禁用所有接口的IPv6,禁用单独接口:net.ipv6.conf.eth0.disable_ipv6 = 1

net.ipv4.conf.default.rp_filter = 1

开启反向路径过滤

net.ipv4.conf.all.arp_ignore = 1

通过反向路由回溯进行源地址验证(在RFC1812中定义)。

对于单一主机和stub网络路由器推荐使用该选项

net.ipv4.conf.all.arp_announce = 2

arp响应(本机ping不通网关)

net.ipv4.conf.default.accept_source_route = 0

处理无源路由的包

kernel.sysrq = 0

禁用sysrq键(小工具,当内存不足时,可以通过命令来控制linux)

kernel.core_uses_pid = 1

启用调试多线程应用程序

kernel.msgmnb = 65536

所有在消息队列中的消息总和的最大值(msgmnb=64k)

kernel.msgmax = 65536

指定内核中消息队列中消息的最大值(msgmax=64k)

kernel.shmmax = 2147483648

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,64位linux系统:

可取的最大值为物理内存值-1byte,建议值为多于物理内存的 ,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,

如果为64GB物理内存,可取64*1024*1024*1024-1=68719476735

kernel.shmall = 471859

该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的

大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍),具体可以设置为内存90%

3.修改limit

vim /etc/profile 最后添加一行

ulimit -u 10000

ulimit -n 1024

ulimit -d unlimited

ulimit -m unlimited

ulimit -s 10240

ulimit -t unlimited

ulimit -v unlimited

4.调优完成后重启

四.安装 Tengine

1.下载包安装包及依赖库

wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz 下载Tengine包

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz tengine的rewrite功能依赖pcre库,最新的为8.40

wget http://www.openssl.org/source/openssl-1.0.2.tar.gz安装ssl,使nginx支持https,最新版本为1.1.0

wget https://downloads.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz安装最新zlib 支持压缩

以上都是nginx使用的,如果有添加在更新即可

2.安装pcre

安装依赖:yum install gcc gcc-c++

编译安装:./configure --prefix=/usr/local/pcre/ && make && make install

3.安装openssl

编译安装 ./config enable-shared --prefix=/usr/local/openssl/ && make && make test && make install

4.安装zlib

解压编译安装:./configure --prefix=/usr/local/zlib && make &&make install

5.建立Tengine运行使用用户和组

groupadd web

useradd -s /sbin/nologin -g web web

6.编译安装Tengine

./configure --prefix=/usr/local/nginx \

--user=web \

--group=web \

--with-pcre=/root/tar/pcre-8.39 \

--with-openssl=/root/tar/openssl-1.0.2 \

--with-zlib=/root/tar/zlib-1.2.11 \

--with-file-aio \ 启用file aio支持(一种APL文件传输格式)

--with-http_gzip_static_module \ 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)

--with-http_realip_module \ 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

--with-http_stub_status_module \ 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)

make && make install

7.添加管理脚本并赋权限

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /etc/sysconfig/nginx

# pidfile: /var/run/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

if [ -z "`grep $user /etc/passwd`" ]; then

useradd -M -s /bin/nologin $user

fi

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

for opt in $options; do

if [ `echo $opt | grep '.*-temp-path'` ]; then

value=`echo $opt | cut -d "=" -f 2`

if [ ! -d "$value" ]; then

# echo "creating" $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest || return $?

stop

sleep 1

start

}

reload() {

configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

chmod 777 /etc/init.d/nginx

8.设置软连

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

9.设置开机自启动

chkconfig nginx on

五.安装PHP

1.下载包

wget http://cn2.php.net/get/php-7.0.16.tar.gz.asc/from/this/mirror php-7.0.16.tar.gz 最新的为7.1.2 下载稳定版本7.0

2.安装依赖

yum install libxml2 libxml2-devel libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel

3.编译安装

./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-fpm-user=web \

--with-fpm-group=web \

--with-mysqli \

--with-pdo-mysql \

--with-iconv-dir \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir=/usr \

--with-curl --enable-mbregex \

--without-pear \

--with-gettext \

--with-openssl \

--with-mhash \

--with-xmlrpc \

--enable-xml \

--enable-fpm \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-maintainer-zts \

--enable-inline-optimization \

--enable-pcntl \

--enable-sockets \

--enable-mbstring --with-mcrypt \

--enable-ftp --with-gd \

--enable-gd-native-ttf \

--enable-zip \

--enable-soap \

--disable-rpath \

--disable-ipv6 \

--disable-fileinfo \

make && make test && make install

4.配置文件

cp php.ini-development /usr/local/php/lib/php.ini

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

5.设置软连

ln -s /usr/local/php/bin/php /usr/local/bin/php

ln -s /usr/local/php/bin/php-config /usr/local/bin/php-config

ln -s /usr/local/php/bin/phpize /usr/local/bin/phpize

6. 添加管理脚本并赋权限

#! /bin/sh

### BEGIN INIT INFO

# Provides: php-fpm

# Required-Start: $remote_fs $network

# Required-Stop: $remote_fs $network

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: starts php-fpm

# Description: starts the PHP FastCGI Process Manager daemon

### END INIT INFO

prefix=/usr/local/php

exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm

php_fpm_CONF=${prefix}/etc/php-fpm.conf

php_fpm_PID=${prefix}/var/run/php-fpm.pid

php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"

wait_for_pid () {

try=0

while test $try -lt 35 ; do

case "$1" in

'created')

if [ -f "$2" ] ; then

try=''

break

fi

;;

'removed')

if [ ! -f "$2" ] ; then

try=''

break

fi

;;

esac

echo -n .

try=`expr $try + 1`

sleep 1

done

}

case "$1" in

start)

echo -n "Starting php-fpm "

$php_fpm_BIN --daemonize $php_opts

if [ "$?" != 0 ] ; then

echo " failed"

exit 1

fi

wait_for_pid created $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

stop)

echo -n "Gracefully shutting down php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -QUIT `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed. Use force-quit"

exit 1

else

echo " done"

fi

;;

status)

if [ ! -r $php_fpm_PID ] ; then

echo "php-fpm is stopped"

exit 0

fi

PID=`cat $php_fpm_PID`

if ps -p $PID | grep -q $PID; then

echo "php-fpm (pid $PID) is running..."

else

echo "php-fpm dead but pid file exists"

fi

;;

force-quit)

echo -n "Terminating php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -TERM `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

restart)

$0 stop

$0 start

;;

reload)

echo -n "Reload service php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -USR2 `cat $php_fpm_PID`

echo " done"

;;

*)

echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"

exit 1

;;

esac

7.添加开机自启动

chkconfig php-fpm on

六.安装PHP扩展

1.安装redis扩展

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用

wget https://github.com/phpredis/phpredis/archive/php7.zip

unzip php7.zip

cd phpredis

/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config编辑php.ini文件,添加extension=redis.so2.安装mongo扩展

wget https://pecl.php.net/get/mongodb-1.2.6.tgz

tar zxvf mongodb-1.2.6.tgz

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

编辑php.ini文件,添加extension=mongodb.so

注意:

报错:configure: error: libssl not found!

解决:yum -y install openssl-devel

3.安装memcache扩展

wget https://pecl.php.net/get/memcache-3.0.8.tgz

安装MYSQL

Percina版本: Percona-Server-5.6.26-74.0-r32f8dfd-el6-x86_64-bundle.tar

获取地址:https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-5.6.33-79.0/binary/redhat/6/x86_64/Percona-Server-5.6.33-79.0-r2084bdb-el6-x86_64-bundle.tar


安装 epel-release-6-8.noarch.rpm libaio-0.3.107-10.el6.x86_64.rpm

安装依赖关系 yum install -y gcc gcc-c++ make cmake automake autoconf libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel

然后yum jemalloc //tokuDB内存分配需要jemalloc支持

Percona-Server-5.6.26-74.0-r32f8dfd-el6-x86_64-bundle.tar 解压后的安装顺序是:

tar xvf Percona-Server-5.6.26-74.0-r32f8dfd-el6-x86_64-bundle.tar

rpm -ivh Percona-Server-shared-56-5.6.26-rel74.0.el6.x86_64.rpm

rpm -ivh Percona-Server-devel-56-5.6.26-rel74.0.el6.x86_64.rpm

rpm -ivh Percona-Server-client-56-5.6.26-rel74.0.el6.x86_64.rpm

rpm -ivh Percona-Server-server-56-5.6.26-rel74.0.el6.x86_64.rpm

rpm -ivh Percona-Server-tokudb-56-5.6.26-rel74.0.el6.x86_64.rpm


修改系统参数

echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

建议写到 /etc/rc.local 中,重启后也可生效

启动服务:/etc/init.d/mysql start

修改mysql配置文件 vim /etc/my.cnf

添加 default-storage-engine=TokuDB

重启服务:/etc/init.d/mysql restart

输入:ps_tokudb_admin --enable -uroot -p 密码默认没有设置为空

进入mysql,验证:

附件:


内存 支持 数据 系统 模块 数据库 语言 服务 编译 参数 文件 版本 服务器 应用 管理 最大 功能 动态 物理 特性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网新科技 哈尔滨大商圈互联网科技有限公司 互联网的科技 互联网金融科技创新 南京欣网互联网科技 互联网养老 桔豆科技 镁科技互联网资讯平台 佩信高科技互联网 广州恒生互联网科技有限 互联网还是高科技吗 宜昌元轩互联网科技有限公司 互联网科技的全部知识 特约风豹互联网科技为什么扣费 互联网数据科技专业 为客找房互联网科技公司怎么样 黑云互联网科技有限公司 领航科技大厦互联网公司 萌小萌互联网科技河南有限公司 河南商务圈互联网科技有限公司 深圳市人人互联网科技有限公司 互联网科技英文 互联网科技股午盘股票涨跌 海南科技产业互联网平台 成都互联网科技公司工作好不好 小米互联网科技园入驻 江苏互联网智能科技软件 工业互联网科技创业 广东鹅鹅鹅互联网科技有限公司 互联网科技手抄报图片
0