LNMP环境之Nginx/Tengine的源代码安装及优化

一.介绍:

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

二.下载并安装:

[[email protected] ]#wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz

安装前需要安装依赖的库文件:

yum  install pcre-devel -y  //pcer是提供正则表达的
[[email protected] src]# tar xf tengine-2.0.1.tar.gz
[[email protected]]# useradd  -r nginx
[[email protected]]#mkdir /var/tmp/nginx/{proxy,fastcgi,uuwsgi,client}  -pv
[[email protected]]#./configure --prefix=/usr/local/nginx  --user=nginx --group=nginx--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 --with-http_ssl_module--with-http_stub_status_module --with-http_gzip_static_module--with-http_flv_module --with-http_mp4_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/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi && make && make install

三.启动nginx

1.为nginx/tengine创建启动脚本

[[email protected] src]#vim /etc/rc.d/init.d/nginx

#!/bin/sh  
# chkconfig: - 5545
# description:  The nginx daemon is a web service.
# processname:nginx
./etc/rc.d/init.d/functions
 
NGINX="/usr/local/nginx/sbin/nginx"
 
start()
{  
        echo -n $"Starting nginx: "
        daemon $NGINX
        echo
}
 
stop()
{  
        echo -n $"Shutting down nginx:"
        $NGINX -s stop
        echo
}
 
quit()
{
        echo -n $"Shutting down nginx:"
        $NGINX -s quit
        echo
}
 
reload()
{
        echo -n $"reload config:"
        $NGINX -s reload
        echo
}
 
[ -f $NGINX ] ||exit 1
 
# See how we werecalled.
case "$1"in
  start)
        start
        ;;
  stop)
        quit
        ;;
  reload)
        reload
        ;;
  restart)
        stop
        sleep 3
        start
        ;;
  *)
        echo $"Usage: $0{start|stop|restart|reload}"
        exit 1
esac  
exit 0

2.给其赋予执行权限并添加系统服务并开机启动

[[email protected] src]#chmod  +x /etc/rc.d/init.d/nginx
[[email protected] src]#chkconfig  --add nginx
[[email protected] src]#chkconfig  --level 35 nginx on
[[email protected] src]#service nginx start

3.若要启用nginx/tengine的虚拟目录,在主配置文件添加以下参数,并在conf/文件内创建vhosts/,并创建配置文件。

include vhosts/*.conf;    #nginx虚拟主机包含文件目录

如:在#vim  /usr/local/nginx/conf/vhosts/wp.conf

server{
        listen 80;
 
        server_name 192.168.1.1;
 
        root  /home/wp/;    #配置发布目录
 
        access_log      logs/www_lolfs.log main;
 
        location / {
            index  index.php index.html index.htm;
        }
 
        location ~ \.php$ {
            root           /home/wp/;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        
        location ~ \.(cgi|pl)?$ {
            gzip off;
            root   /usr/local/nagios/sbin;
            rewrite ^/nagios/cgi-bin/(.*)\.cgi/$1.cgi break;
            fastcgi_pass unix:/usr/local/perl-fcgi/logs/perl-fcgi.sock;
            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param SCRIPT_FILENAME/usr/local/nagios/sbin$fastcgi_script_name;
            fastcgi_index index.cgi;
            fastcgi_read_timeout   60;
            #fastcgi_param  REMOTE_USER        $remote_user;
            #auth_basic "NagiosAccess";
            #auth_basic_user_file/usr/local/nagios/etc/nagiospasswd;
        }
 
 
        location ~* ^.+.(jpg|jpeg|gif|png|ico)${
            access_log   off;
            expires      30d;
        }
 
        location ~* ^.+.(js|css)$ {
            access_log   off;
            expires      1h;
        }
 
        location ~* ^.+.(html|php)$ {
            access_log   off;
            expires      10m;
        }
 
}

四.nginx/tengine的优化

为tengine配置一下系统的TCP设置,优化一下

Vi /etc/syscrl.conf

net.ipv4.tcp_syncookies= 1

# 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse= 1

# 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle= 1

# 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout

# 修改系統默认的 TIMEOUT 时间

sapi/fpm/init.d.php-fpm
net.ipv4.tcp_fin_timeout = 1

# 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间

net.ipv4.tcp_keepalive_time = 1200

# 表示当keepalive起用的时候,tcp发送keepalive消息的频度,缺省是2小时,改为20分钟

net.ipv4.tcp_mem = 94500000 915000000 927000000

# 当tcp使用低于该值的内存页面数时,tcp不会考虑释放内存

net.ipv4.tcp_tw_reuse = 1

# 表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭

net.ipv4.tcp_timestamps = 0

# 时间戳可以避免序列号的卷绕。1个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能让内核接受这种“异常”的数据包,这里需要将其关闭

net.ipv4.tcp_synack_retries = 1

# 为了打开对端的连接,内核需要发送一个syn并附带一个回应前面一个syn的ack,也就是所谓三次握手中的第二次握手,这个设置决定了内核放弃连接之前发送syn+ack包的数量

net.ipv4.tcp_syn_retries = 1

# 在内核放弃建立连接之前发送syn包的数量

net.ipv4.tcp_tw_recycle = 1

# 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

net.core.netdev_max_backlog = 262144

# 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.somaxconn = 262144

# web应用中listen函数的backlog默认会给我们内核参数net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值

net.ipv4.tcp_max_orphans = 3276800

# 系统中最多有多少个tcp套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的dos攻击,不能过分依靠它或者人为地减少这个值,更应该增加这个值(如果增加了内存之后)

net.ipv4.tcp_max_syn_backlog = 262144

# 表示syn队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接网络连接数。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128

net.core.rmem_max= 16777216

# 最大socket读buffer,可参考的优化值:873200

net.core.wmem_max = 16777216

# 最大socket写buffer,可参考的优化值:873200

net.core.wmem_default = 8388608

# 表示发送套接字缓冲区大小的缺省值(以字节为单位)

net.core.rmem_default = 8388608

# 表示接收套接字缓冲区大小的缺省值(以字节为单位)使配置立即生效

/sbin/sysctl-P
时间: 2024-08-10 12:59:48

LNMP环境之Nginx/Tengine的源代码安装及优化的相关文章

搭建LNMP环境 (centos7+nginx+MySQL5.7.9+PHP7)

搭建阿里云lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7) 阿里云一台服务器出现问题! 我估计是一键安装包环境的原因,所以打算重新搭建下环境! 首先,当然是先做好快照!安全第一! 对系统盘做更换系统操作,装上纯净版的centos. 装好后,进入系统 一.挂载数据盘 df -h 只有系统盘了,挂载上原来的数据盘 fdisk -l 看到数据盘了/dev/vdb1 挂载上这个数据盘, mkdir /data0 mount /dev/vdb1 /data0 然后写入分区: e

lnmp环境下 nginx.conf的常见配置

做个lnmp环境下 nginx.conf的常见配置说明 vim /usr/local/nginx/conf/nginx.conf 使用如下配置 user  nobody nobody;   //nginx子进程的用户 worker_processes 2;    //nginx子进程个数 error_log /usr/local/nginx/logs/nginx_error.log debug; //错误日志路径及日志级别 debug调试用内容最详细 .一般用crit pid /usr/loca

阿里云在Nginx/Tengine服务器上安装证书和在IIS服务器上安装SSL证书

在Nginx/Tengine服务器上安装证书 https://help.aliyun.com/document_detail/98728.html?spm=5176.2020520163.0.0.3c3856a7A8zZ8s 在IIS服务器上安装SSL证书 https://help.aliyun.com/document_detail/98729.html?spm=5176.2020520163.0.0.3c3856a7A8zZ8s 原文地址:https://www.cnblogs.com/pa

如何搭建LNMP环境(Linux+Nginx+MySql+Php)来运行wordpress

一.前言 今天是周六,积累了很多天的内容都要在今天来释放了,因为最近想弄一个自己的主页,查看网上之后,都说wordpress很不错,他是一个开源的后台程序,可以用来搭建自己的博客,论坛等功能.但是有一个蛋疼的地方,他是php写的,之前只弄过JavaWeb相关的后台程序,php不太熟呢,以前也是搭建过Linux+Apache+Tomcat+JavaWeb+MySql,那么这次也正好是一个机会学习一下如何搭建后台PHP系统,这里也是网上比较流行的后台系统组合:Linux+Nginx+MySql+Ph

Centos7 搭建lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7)

阿里云一台服务器出现问题! 我估计是一键安装包环境的原因,所以打算重新搭建下环境! 首先,当然是先做好快照!安全第一! 对系统盘做更换系统操作,装上纯净版的centos. 装好后,进入系统 一.挂载数据盘 df -h 只有系统盘了,挂载上原来的数据盘 fdisk -l 看到数据盘了/dev/vdb1 挂载上这个数据盘, mkdir /data0 mount /dev/vdb1 /data0 然后写入分区: echo '/dev/vdb1 /data0 ext4 defaults 0 0' >>

ubuntu环境下nginx源码编译安装

1.更新系统 sudo apt-get update && sudo apt-get upgrade 2.安装nginx的依赖包  zlib pcre openssl(可以源码安装也可以直接系统安装) sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev build-essential 3.下载openssl源码包 wget http://www.openssl.org/source/openssl-1.0.2a.

lnmp环境的nginx的tp5配置

php7.1 1 server { 2 listen 80; 3 server_name www.tp5.com; 4 access_log /home/wwwroot/access.log combined; 5 error_log /home/wwwroot/error.log; 6 7 set $root /home/wwwroot/default/mytp5/tp5/public; 8 9 location ~ \.php { 10 fastcgi_pass unix:/tmp/php-

LNMP环境下nginx、php-fpm的配置文件讲解

一.nginx配置文件 user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events {     use epoll;     worker_connections 6000; } http {     include mime.

搭建lnmp环境,nginx的配置文件/etc/nginx/nginx.conf

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream;