十二周一次课
12.1LNMP架构介绍
12.2MySQL安装
12.3/12.4PHP安装
12.5Nginx介绍
12.1LNMP架构介绍
• 和LAMP不同的是,提供web服务的是Nginx
• 并且php是作为一个独立服务存在的,这个服务叫做php-fpm
• Nginx直接处理静态请求,动态请求会转发给php-fpm
LNMP架构
- LAMP和LNMP两个架构类似
- 在LAMP架构中,PHP和Apache是一个整体,php解析是交给Apache来执行的,只不过需要加一个php的模块libphp.so
- 在LNMP架构中,提供web服务的是Nginx,PHP会启动一个php-fpm服务,Nginx会把用户请求的php交给php-fpm服务去进行处理(用户数据与mysql的交互就是由php-fpm来做的,处理好的结果在高速Nginx,然后通过Nginx告诉用户的浏览器),用户的静态请求将由Nginx直接进行处理(Nginx在处理静态数据的性能上要比Apache快),
- Nginx对静态为主的网站,处理用户并发会很大,速度也会快很多。
12.2MySQL安装
•cd /usr/local/src
• wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
• tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
• mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
• cd /usr/local/mysql
• useradd mysql
• mkdir /data/
• ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
• cp support-files/my-default.cnf /etc/my.cnf
• cp support-files/mysql.server /etc/init.d/mysqld
• vi /etc/init.d/mysqld
定义basedir和datadir
• /etc/init.d/mysqld start
搭建LNMP环境
LAMP架构下,然后搭建LNMP架构
1.首先查看mysql是否启动
ps aux |grep mysql
2.删除目录
rm -rf /usr/local/mysql/
3.删除启动的脚本
rm -rf /etc/init.d/mysqld
4.然后其他步骤相同
1.这里新建一个虚拟环境(这里不是在LAMP环境上搭建的,而是新建的一个环境)
2.然后进入到/usr/local/src目录下,并查看目录内容
[root@tianqi-01 ~]# cd /usr/local/src/
[root@tianqi-01 src]# ls
? apr-util-1.6.1.tar.bz2 httpd-2.4.29 php-5.6.30 phpredis-develop
apr-1.6.3 d? httpd-2.4.29.tar.gz php-5.6.30.tar.gz phpredis-develop.zip
apr-1.6.3.tar.gz httpd-2.2.34 mariadb-10.2.6-linux-x86_64.tar.gz php-7.1.6
apr-util-1.6.1 httpd-2.2.34.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz php-7.1.6.tar.bz2
[root@tianqi-01 src]#
3.查看mysql是否启动,如果启动的话,需要关闭
[root@tianqi-01 src]# ps aux |grep mysql
root 19068 0.0 0.0 112660 980 pts/0 R+ 16:22 0:00 grep --color=auto mysql //没有启动
[root@tianqi-01 src]#
4.删除/usr/local/mysql目录和启动脚本
[root@tianqi-01 src]# rm -rf /usr/local/mysql
[root@tianqi-01 src]# rm -rf /etc/init.d/mysqld
[root@tianqi-01 src]#
5.下载MySQL安装包
[root@tianqi-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
6.解压安装包
[root@tianqi-01 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
7.移动目录并修改名称——>这里移动目录到/usr/local/下时,一定不能有mysql目录(若已经有mysql目录时,再去移动则会放到mysql目录下面去,而不是去移动并修改名称了)
[root@tianqi-01 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@tianqi-01 src]#
8.移动完成,检查目录
[root@tianqi-01 local]# ls /usr/local/mysql
bin COPYING data docs include lib man mysql-test README scripts share sql-bench support-files
[root@tianqi-01 local]#
9.进入到/usr/local/mysql目录下
[root@tianqi-01 local]# cd /usr/local/mysql
[root@tianqi-01 mysql]#
10.新建mysql用户和/data/目录——>这里若是在lamp之前的基础上做的话,需要rm -rf /data/mysql/*清空内容,(直接删除mysql目录也可以,它会自动创建)。
[root@tianqi-01 mysql]# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)
[root@tianqi-01 mysql]# rm -rf /data/mysql/*
[root@tianqi-01 mysql]#
11.初始化./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
- 初始化的过程目的,就是把mysql启动所需要的目录生成
[root@tianqi-01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
12.然后可以echo $?检查,或者看初始化的过程中是否有两个OK
[root@tianqi-01 mysql]# echo $?
0
[root@tianqi-01 mysql]#
13.因为之前已经有了配置文件/etc/my.cnf,直接编辑即可。没有的话,拷贝配置文件cp support-files/my-default.cnf /etc/my.cnf
[root@tianqi-01 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql //注意要写正确
socket=/tmp/mysql.sock //注意要写正确
14.拷贝启动脚本
[root@tianqi-01 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@tianqi-01 mysql]#
15.编辑文件 /etc/init.d/mysqld,并配置
[root@tianqi-01 mysql]# vim /etc/init.d/mysqld
在文件中配置 basedir=/usr/local/mysql
datadir=/data/mysql
然后保存退出
16.启动mysql服务
[root@tianqi-01 mysql]# mv /etc/init.d/mysql /etc/init.d/mysqld
[root@tianqi-01 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/tianqi-01.err'.
..... [ OK ]
[root@tianqi-01 mysql]#
17.查看服务是否启动成功
[root@tianqi-01 mysql]# ps aux |grep mysql
root 1051 0.0 0.1 113264 1616 pts/0 S 19:22 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/tianqi-01.pid
mysql 1186 5.4 44.9 973052 449516 pts/0 Sl 19:22 0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/tianqi-01.err --pid-file=/data/mysql/tianqi-01.pid --socket=/tmp/mysql.sock
root 1217 0.0 0.0 112660 984 pts/0 S+ 19:22 0:00 grep --color=auto mysql
[root@tianqi-01 mysql]#
18.将mysql服务加入到服务列表中去,并设置开机启动
[root@tianqi-01 mysql]# chkconfig --add mysqld
[root@tianqi-01 mysql]# chkconfig mysqld on
[root@tianqi-01 mysql]#
19.下次就可以直接用service关闭或者启动服务
[root@tianqi-01 mysql]# service mysqld stop
Shutting down MySQL.. [ OK ]
[root@tianqi-01 mysql]# service mysqld start
Starting MySQL.. [ OK ]
[root@tianqi-01 mysql]#
12.3/12.4PHP安装
• 和LAMP安装PHP方法有差别,需要开启php-fpm服务
• cd /usr/local/src/
• wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
• tar zxf php-5.6.30.tar.gz
• useradd -s /sbin/nologin php-fpm
• cd php-5.6.30
• ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-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 --with-pear --with-curl --with-openssl
• make && make install
• cp php.ini-production /usr/local/php-fpm/etc/php.ini
• vi /usr/local/php/etc/php-fpm.conf //写入如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf)
• cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
• chmod 755 /etc/init.d/php-fpm
• chkconfig --add php-fpm
• chkconfig php-fpm on
• service php-fpm start
• ps aux |grep php-fpm
PHP安装
- LAMP架构和LNMP架构中安装PHP方法是不同的
- 在LAMP中,php是作为Apache的一个模块存在的,需要用apxs2 指定Apache的路径,使用apxs的工具进行自动配置模块的加载;
- 在LNMP里,需要指定mysql的路径,但是不需要指定Nginx的路径,因为是LNMP中,PHP是作为一个独立的服务在运行的,和Nginx没有直接的关系,所以它也不需要依赖Nginx。
- 若是在之前LAMP架构中,编译过PHP,所以只需要进入PHP的目录下执行make clean 把之前编译过的那些文件,全部删掉
1.首先进入到/usr/local/src/
[root@tianqi-01 mysql]# cd /usr/local/src/
[root@tianqi-01 src]# ls
? d? mariadb-10.2.6-linux-x86_64.tar.gz php-7.1.6
apr-1.6.3 httpd-2.2.34 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz php-7.1.6.tar.bz2
apr-1.6.3.tar.gz httpd-2.2.34.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz.1 phpredis-develop
apr-util-1.6.1 httpd-2.4.29 php-5.6.30 phpredis-develop.zip
apr-util-1.6.1.tar.bz2 httpd-2.4.29.tar.gz php-5.6.30.tar.gz
[root@tianqi-01 src]#
2.清除之前编译过的php
[root@tianqi-01 src]# cd php-5.6.30/
[root@tianqi-01 php-5.6.30]# ls
acinclude.m4 ext main NEWS README.PARAMETER_PARSING_API server-tests.php
aclocal.m4 EXTENSIONS makedist pear README.REDIST.BINS snapshot
build footer Makefile php5.spec README.RELEASE_PROCESS stamp-h.in
buildconf generated_lists Makefile.frag php5.spec.in README.SELF-CONTAINED-EXTENSIONS stub.c
buildconf.bat genfiles Makefile.fragments php.gif README.STREAMS tests
CODING_STANDARDS header Makefile.gcov php.ini-development README.SUBMITTING_PATCH travis
config.guess include Makefile.global php.ini-production README.TESTING TSRM
config.log INSTALL Makefile.objects README.EXT_SKEL README.TESTING2 UPGRADING
config.nice install-sh makerpm README.GIT-RULES README.UNIX-BUILD-SYSTEM UPGRADING.INTERNALS
config.status libphp5.la meta_ccld README.input_filter README.WIN32-BUILD-SYSTEM vcsclean
config.sub libs missing README.MAILINGLIST_RULES run-tests.php win32
configure libtool mkinstalldirs README.md sapi Zend
configure.in LICENSE modules README.namespaces scripts
CREDITS ltmain.sh netware README.NEW-OUTPUT-API server-tests-config.php
[root@tianqi-01 php-5.6.30]# make clean
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp5.la sapi/cli/php sapi/cgi/php-cgi libphp5.la modules/* libs/* //这里会删除php5.la这些文件,现在就是刚刚解压的状态
[root@tianqi-01 php-5.6.30]#
3.查看php目录
[root@tianqi-01 php-5.6.30]# ls /usr/local/php
bin etc include lib php
[root@tianqi-01 php-5.6.30]# ls /usr/local/php7/
bin etc include lib php var
[root@tianqi-01 php-5.6.30]#
4.初始化
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-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 --with-pear --with-curl --with-openssl
- ./configure --prefix=/usr/local/php-fpm //指定路径
- --with-config-file-path=/usr/local/php-fpm/etc //指定配置文件所在路径
- --enable-fpm //必须加上,否则无法启动该服务
- --with-fpm-user=php-fpm //指定用户
- --with-fpm-group=php-fpm //指定组
- --with-mysql=/usr/local/mysql //指定 mysql 的路径
- --with-mysqli=/usr/local/mysql/bin/mysql_config //指定 mysqli 的路径
- --with-pdo-mysql=/usr/local/mysql //指定 pdo-mysql 的路径
[root@tianqi-01 php-5.6.30]# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-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 --with-pear --with-curl --with-openssl
- 错误
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
- 解决方法
[root@tianqi-01 php-5.6.30]# yum install -y libcurl-devel
5.再次./configure编译
6.可以echo $?检查是否初始化成功
[root@tianqi-01 php-5.6.30]# echo $?
0
[root@tianqi-01 php-5.6.30]#
7.然后make && make instal编译
[root@tianqi-01 php-5.6.30]# make && make install
8.用echo $?检查是否成功
[root@tianqi-01 php-5.6.30]# echo $?
0
[root@tianqi-01 php-5.6.30]#
8.查看/usr/local/php-fpm/目录——>于/usr/local/php/目录项比较多了sbin和var 目录
[root@tianqi-01 php-5.6.30]# ls /usr/local/php-fpm/
bin etc include lib php sbin var
[root@tianqi-01 php-5.6.30]# ls /usr/local/php-fpm/sbin/ //在sbin目录下有一个php-fpm文件,就是用来启动php-fpm的
php-fpm
[root@tianqi-01 php-5.6.30]# ls /usr/local/php-fpm/var/ //在var目录下有 log 和 run 文件,log文件存放日志的,run存放pid的,日志和pid路径都是可以指定的
log run
[root@tianqi-01 php-5.6.30]#
9./usr/local/php-fpm/sbin/php-fpm 和 /usr/local/php-fpm/bin/php 的用法是基本一致的
[root@tianqi-01 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -m //查看模块
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
[root@tianqi-01 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -i
phpinfo()
PHP Version => 5.6.30
10.用/usr/local/php-fpm/sbin/php-fpm -t 测试配置文件文件语法是否错误
[root@tianqi-01 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[08-Mar-2018 20:00:57] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[08-Mar-2018 20:00:57] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[08-Mar-2018 20:00:57] ERROR: FPM initialization failed
[root@tianqi-01 php-5.6.30]#
11.这里会提示配置文件并不存在,若想要启动php-fpm服务,首先需要去配置配置文件
12.拷贝cp php.ini-production /usr/local/php-fpm/etc/php.ini文件
- 查看目录发现/usr/local/src/php-5.6.30 有2个配置文件
- php.ini-development 适合开发环境使用
- php.ini-production 适合生产环境使用
- 两者区别在于,错误日志不同
[root@tianqi-01 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
[root@tianqi-01 php-5.6.30]#
13.进入到/usr/local/php-fpm/etc/目录下
[root@tianqi-01 php-5.6.30]# cd /usr/local/php-fpm/etc/
[root@tianqi-01 etc]# ls
pear.conf php-fpm.conf.default php.ini
[root@tianqi-01 etc]#
14.编辑配置文件vim php-fpm.conf,或者直接把php-fpm.conf.default文件改名字为php-fpm.cnf——>这里直接新建写入的
//去https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf拷贝样例,拷贝到文件中
[global] //全局配置
pid = /usr/local/php-fpm/var/run/php-fpm.pid //定义PID
error_log = /usr/local/php-fpm/var/log/php-fpm.log //错误日志
[www] //模块名字,启动服务的时候就能看到
listen = /tmp/php-fcgi.sock //监听的地址
listen.mode = 666 //当监听的是sock的时候,这个语句才会生效,这个语句用来定义sock文件权限的 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
然后保存退出
linsten 可以监听sock、tcp 可以写成 linsten = 127.0.0.1:9000(默认端口就是9000,可自定义),一般监听的到是“127.0.0.1 ”IP,因为php-fpm这个服务是针对内部使用的、在本机上用的,也就是说Nginx和php通常是在一台机器上,两者之间通信直接使用内部网络就可以了;在这块选择的linsten配置不同,到之后的配置Nginx配置,也就是告诉Nginx到哪里找php的配置语句也是不同。
15.进入到/usr/local/src/php-5.6.30/下,拷贝启动的脚本
[root@tianqi-01 etc]# cd /usr/local/src/php-5.6.30/
[root@tianqi-01 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@tianqi-01 php-5.6.30]#
16.加入到服务列表中,先更改权限,然后在chkconfig,最后在开机启动
[root@tianqi-01 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@tianqi-01 php-5.6.30]# chmod 755 /etc/init.d/php-fpm
[root@tianqi-01 php-5.6.30]# chkconfig --add php-fpm
[root@tianqi-01 php-5.6.30]# chkconfig php-fpm on
[root@tianqi-01 php-5.6.30]# service php-fpm start
Starting php-fpm [08-Mar-2018 20:15:05] ERROR: [pool www] cannot get uid for user 'php-fpm'
[08-Mar-2018 20:15:05] ERROR: FPM initialization failed
failed
[root@tianqi-01 php-5.6.30]#
//这里启动之前,应该先检测一下
[root@tianqi-01 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[08-Mar-2018 20:18:03] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@tianqi-01 php-5.6.30]#
//上面提示启动的时候,php-fpm用户不存在
[root@tianqi-01 php-5.6.30]# useradd php-fpm
[root@tianqi-01 php-5.6.30]#
//再次启动
[root@tianqi-01 php-5.6.30]# service php-fpm start
Starting php-fpm done
[root@tianqi-01 php-5.6.30]#
17.查看php-fpm服务是否启动
[root@tianqi-01 php-5.6.30]# ps aux |grep php-fpm
root 117297 0.0 0.4 123612 4948 ? Ss 20:20 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 117298 0.0 0.4 123612 4712 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117299 0.0 0.4 123612 4712 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117300 0.0 0.4 123612 4712 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117301 0.0 0.4 123612 4712 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117302 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117303 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117304 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117305 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117306 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117307 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117308 0.0 0.4 123612 4716 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117309 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117310 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117311 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117312 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117313 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117314 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117315 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117316 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
php-fpm 117317 0.0 0.4 123612 4720 ? S 20:20 0:00 php-fpm: pool www
root 117321 0.0 0.0 112660 980 pts/0 R+ 20:22 0:00 grep --color=auto php-fpm
[root@tianqi-01 php-5.6.30]#
12.5Nginx介绍
Nginx介绍
- Nginx官网 nginx.org,最新版1.13,最新稳定版1.12 (stable版本) //这个软件是有俄国人开发的,因为对静态文件的处理性能上比Apache强很多,所以在慢慢的取代Apache
- Nginx应用场景:web服务、反向代理(代理一台机)、负载均衡(代理多台机)
- Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并
- Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty,参考文章
- Nginx虽然功能不多,但可以去扩展一些第三方的模块进来
友情链接:阿铭Linux