云豆贴心提醒,本文阅读时间6分钟
一、准备
1.打算php函数的rpm包
2.打算lnmp其他的源代码包
3.安装php-5.2.14源代码包所须要的函数支持包复制代码代码如下:
(libiconv库为须要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)
复制代码代码如下:
(libmcrypt是加密算法扩充库。支持DES,3DES,RIJNDAEL,Twofish,IDEA,GOST,CAST-256,ARCFOUR,SERPENT,SAFER+等算法。)复制代码代码如下:
假如以上有错误,请按以下方式:
打开/etc/ld.so.conf,在文件以后,添加一行:
之后,执行ldconfig,重新编译即可。
二、安装MySQL
1.编译安装MySQL5.5.3-m3复制代码代码如下:
三、安装PHP
1.编译安装PHP(FastCGI模式。使用fastCGI管理php,推动php解析速率)复制代码代码如下:
2.打算编译安装PHP5扩充模块复制代码代码如下:
3.更改php.ini文件,让php模块生效复制代码代码如下:
4.在php.ini中配置eAccelerator加速PHP复制代码代码如下:
5.打算php-cgi和nginx进程执行者用户
6.创建php-fpm配置文件-php-fpm.conf
7.启动php-cgi(fastcgi)进程
窃听127.0.0.1的9000端口,进程数为128(假如服务器显存大于3GB,可以只开启64个进程),用户为nginx:复制代码代码如下:
四、安装Nginx
1.安装Nginx所需的pcre库复制代码代码如下:
2.安装Nginx复制代码代码如下:
3.更改Nginx配置文件复制代码代码如下:
4.在/usr/local/nginx/conf/目录中创建fastcgi_params文件复制代码代码如下:
#建议把fastcgi_param讲到nginx.conf中而不是把它讲到fastcgi_params配置文件中,否则配置不够灵活,例如前面默认php设置和aliasphp设置中,她们的php页面的系统地址是不同的,例如:默认php文件->/usr/local/nginx/html/index.phpAliasphp文件->/mnt/bbs/index.php这个时侯你会发觉fastcgi_params中的SCRIPT_FILENAME的值是相同的,这样会造成aliasphp的页面出不来,而配置在nginx.conf中各自配置各自的php系统地址,这样比较灵活.#假如你认为每位联接php的配置中都要加这一句话有点冗余,那就把它加入到fastcgi_params文件中,这样只须要加一次,其他所有的nginx.conf中的有关联接fastcgi的一块就不用加fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name这一句话了.5.配置开机启动nginx,php-fpm,ulimit1)nginxVi/etc/rc.local/usr/local/nginx/sbin/nginx2)php-fpmVi/etc/rc.local/usr/local/php/sbin/php-fpmstart3)ulimitVi/etc/profileulimit-SHn655354)mysqlVi/etc/rc.local/usr/local/mysql/bin/mysqld_safe--user=mysql&6.检测nginx配置文件句子错误
7.平滑重启nginx进程1)Pkill-HUPnginx2)kill-HUP`pgrep-urootnginx`Pgrep-urootnginx取出nginx主进程PID3)/usr/local/nginx/sbin/nginx-sreload8.编撰每晚定时切割Nginx日志的脚本
8.1创建脚本/usr/local/nginx/sbin/cut_nginx_log.shvi/usr/local/nginx/sbin/cut_nginx_log.sh
8.2设置crontab,每晚深夜00:00切割nginx访问日志
9.配置nginx虚拟主机Sina和sohu域名事先解析复制代码代码如下:
最后在顾客端测试虚拟主机和两家公司网站10.列表页显示
11.虚拟目录设置
#这样配置html静态文件是可以下来的,而且php动态页面出不来,并且会浏览器的页面上会显示”Noinputfilespecified.”的报错,虽然是php系统文件地址(SCRIPT_FILENAME)找不到,也就是说fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;中的$document_root$fastcgi_script_name不是真正的/mnt/bbs/index.php的地址中国linux操作系统,这可如何解决:
#前面两行是关于日志的,就是为了更好的观察由nginx递交给fastcgi的php的系统地址SCRIPT_FILENAME,在这儿我用$request_filename来给SCRIPT_FILENAME形参,在日志中的结果为/mnt/bbs/index.php,在这儿我发觉一个问题就是$request_filename中的root设置为/mnt,否则$request_filename的值为:/mnt/bbs/bbs/index.php.由以上可以得到一个推论,就是默认php设置也可以这样设置关于
#此时从日志中可以见到,$request_filename的值为/usr/local/nginx/html/index.php,而原先默认的/scripts$fastcgi_script_name其实是错的php系统地址,日志中显示为/scripts/index.php12.nginx状态监控
#顾客端访问网址:正则过滤
Rewrite指令最后一项参数为flag标记,支持的flag标记如下:Last标识完成rewrite规则Break不再匹配前面的规则Redirect302临时重定向Permanent301永久重定向Last和break拿来实现uri重画,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent拿来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起恳求,而break标记则在本条规则匹配完成后,中止匹配,不再匹配前面的规则.在匹配的过程中,nginx将首先匹配字符串,之后再匹配正则表达式,匹配到第一个正则表达式后,会停止搜索,假如匹配到正则表达式,则使用正则表达式的搜索结果,假若没有匹配到正则表达式,则使用字符串的搜索结果.可以使用前缀”^~”来严禁匹配到字符串后,再去检测正则表达式linux系统下载官网,匹配到url后,将停止查询.使用前缀”=”可以进行精确的url匹配,假如找到匹配的uri,则停止查询,比如”location=/”linux安装lnmp,只能匹配到”/”,而”/test.html”则不能被匹配.正则表达式的匹配,根据它们在配置文件中的次序进行,写在上面的优先.
恳求处理匹配结果示例:
例1:域名跳转输入,跳转到
例2:静态index.html跳转到动态index.php文件
在顾客端输入:会跳转到index.php,把2当变量传入index.php程序14.代理负载均衡技术(反向代理)
模块设置
模块设置Error_log#错误日志Include#包含子配置文件,0.6版本之后子配置文件置于nginx.conf所在的路径下Pid#主进程id号User#nginxnginx表明nginx进程的执行者和组Worker_processes#与cpu个数相同,4核cpu为4Worker_rlimit_nofile65535#打开的文件描述符,不过提早得设置ulimit-SHn65535,即linux容许的打开文件个数Worker_connectiones65535#顾客端最大联接数65535Alias#虚拟目录Error_page#404,500错误跳转页面Index#indexindex.html,设置默认首页Keepalive_timeout#即tcp持续联接超时时间Limit_rate#limit_rate100k,即限速为100KB/sLimit_rate_after#limit_rate_after1m,即下载文件超过1mlinux安装lnmp,则步入limit_rate限速阶段Listen#listen192.168.100.1:80,即设置ip和端口Location#该指令容许对不同的uri进行不同的配置,可以是字符串、正则表达式Resolver#resolver8.8.8.8,为nginx设置dns域名指向Root#设置网站根目录Send_timeout#超时时间是指进行了两次tcp握手,还没有转为established状态的时间,假如超过这个时间,顾客没有响应,nginx则关掉联接,可以拿来避免ddos功击Sendfile#启用或禁用sendfile()函数,作用于拷贝两个文件描述符之间的操作函数,这个拷贝是在内核中操作的,比read和write拷贝高效得多Server#普通web配置或虚拟主机的配置的区域Server_name#按照顾客端恳求header头信息中的host域名,来匹配该恳求应当由那个虚拟主机配置或服务器的ipTcp_nodelay#封装tcp/ip数据包的等待时间,也叫纳格算法,在keepalive开启才有用Tcp_nopush#要求sendfile开启的时侯才起作用,设置该选择的缘由是nginx在linux上,试*在一个包中发送它的httpd应答头Allow#allow192.168.100.254,只容许192.168.100.254访问Deny#denyall,拒绝其他任何人访问Autoindex#autoindexon,即开启列表页功能Charset#charsetutf8;source_charsetgbk,把服务器上的gbk网页编码转换成utf8输出给顾客端Fastcgi_pass#fastcgi_pass127.0.0.1:9000;#fastcgi_indexindex.php;#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;#includefastcgi_params;#fastcgi_pass后跟的是php-cgi进程的ip和端口Access_log#正确日志Proxy_pass#proxy_pass,即后跟的是nginx代理负载池upstream中的服务器Proxy_set_header#proxy_set_headerHost$host,设置把$host带给前端的nginx服务器Proxy_temp_path#用户指定一个本地目录缓冲较大的代理恳求,类似于client_body_temp_pathStub_status#stub_statuson,即开户状态监控Image_filter#它指定适用于*片的转换类型