Nginx-0.8.34+PHP-5.2.13(FastCGI)+MySQL-5.1.45
linux通过fastcgi实现nginx、php、mysql的分机
LNMP基于fastcgi实现nginx,php,mysql的分离前言: (3)规划: (3)环境: (3)一.在172.16.1.1编译安装nginx (3)1.先安装pcre-devel,nginx的rewrite功能依赖pcre提供的库。
(3)2.为nginx建立用户,实现安全运行,指定uid的原因是为了与php通过nfs共享时权限方便 (3)3.下载并编译安装nginx (3)4.为nginx提供SysV init脚本 (4)5、为此脚本赋予执行权限: (7)6、添加至服务管理列表,并让其开机自动启动: (7)7、启动服务并测试 (7)二.在172.16.1.3上部署mysql-5.5.28 (7)1.为mysql准备数据目录与用户 (7)2.下载安装mysql,这里采用已经编译好的 (7)3.为mysql提供配置文件 (7)4.为mysql提供sysv init服务脚本: (8)5.输出mysql的man手册至man命令的查找路径: (8)6.输出mysql的头文件至系统头文件路径/usr/include: (8)7.输出mysql的库文件给系统库查找路径: (8)8、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
(8)三.172.16.1.2上编译安装php-5.4.4 (8)1.安装扩展包 (9)2.下载编译安装php-5.4.4 (9)3.为php-fpm提供Sysv init脚本,并将其添加至服务列表: (9)四.整合nginx 与 php (10)1.计划把网页放在/www下,建立该目录,并修改权限 (10)2.编译/etc/nginx/nginx.conf,注释一些选项##编辑前请备份原文件 (10)3.编辑/etc/nginx/fastcgi_params,将其内容更改为如下内容: (10)4.为了以后与nginx共享文件方便建立nginx用户 (11)5.修改php-fpm配置文件/usr/local/php/etc/php-fpm.conf (11)6.下载解压discuz,更改权限 (11)7.启动nfs,编辑配置文件以供nginx挂载 (11)8.在172.16.1.1上挂载172.16.1.2的/www (11)9.安装discuz 浏览器运行172.16.1.1/install,根据提示修改Php.ini的一个选项 (12)10.在172.16.1.3上为discuz建立数据 (12)前言:平时安装LNMP是把它们安装到同一台机器上,我想这个对大家来说丝毫没有挑战,下面我们实现把他们剥离到不同的机器上,让各个服务器直接分担原来的压力,也可以增加节点实现负载均衡,如:多增加一台php,让两台机器轮询的编译php,也可以在增加一台nginx,实现dns的轮询负载均衡。
Nginx性能优化有这篇就够了!
Nginx性能优化有这篇就够了!⽬录:1、Nginx运⾏⼯作进程数量Nginx运⾏⼯作进程个数⼀般设置CPU的核⼼或者核⼼数x2。
如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo ⽂件 grep ^processor /proc/cpuinfo | wc -l[root@lx~]# vi/usr/local/nginx1.10/conf/nginx.confworker_processes 4;[root@lx~]# /usr/local/nginx1.10/sbin/nginx-s reload[root@lx~]# ps -aux | grep nginx |grep -v greproot 9834 0.0 0.0 47556 1948 ? Ss 22:36 0:00 nginx: master processnginxwww 10135 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10136 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10137 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10138 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process2、Nginx运⾏CPU亲和⼒⽐如4核配置:worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000⽐如8核配置:worker_processes 8;worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;worker_processes最多开启8个,8个以上性能提升不会再提升了,⽽且稳定性变得更低,所以8个进程够⽤了。
实战Nginx与PHP(FastCGI)的作用、安装、配置与优化
实战Nginx与PHP(FastCGI)的作用、安装、配置与优化一、什么是 FastCGIFastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。
多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。
FastCGI是从CGI发展改进而来的。
传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。
这在处理高并发访问时,几乎是不可用的。
另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。
当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。
这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
二、Nginx+FastCGI运行原理Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。
为了调用CGI程序,还需要一个FastCGI的wrapper (wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。
当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。
Nginx与PHP(FastCGI)的安装、配置与优化
Nginx与PHP(FastCGI)的安装、配置与优化FastCGI的介绍和工作原理首先简单的介绍下FastCGI:FastCGI是语言无关的、可伸缩结构的CGI开放扩展,其主要行为是将CGI解释器进行保持在内存中并因此获得较高的性能。
众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。
FastCGI的工作原理是:(1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。
在文本中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。
启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。
(2)当客户端请求达到Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX 套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。
Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
(3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx)。
当FastCGI子进程关闭连接时,请求便告知处理完成。
FastCGI子进程接着等待并处理来自FastCGI进程管理的下一个连接。
而在一般的普通CGI模式中,php-cgi在此便退出了。
PHP-FPMPHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在/downloads.php下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。
必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。
Nginx+PHP+MySQL双机互备、全自动切换方案
Nginx+PHP+MySQL双机互备、全自动切换方案作者:张宴出处:在生产应用中,某台“Nginx+PHP+MySQL”接口数据服务器,扮演的角色十分重要,如果服务器硬件或Nginx、MySQL发生故障,而短时间内无法恢复,后果将非常严重。
为了避免单点故障,我设计了此套方案,编写了failover.sh脚本,实现了双机互备、全自动切换,故障转移时间只需几十秒。
一、双机互备、全自动切换方案:1、拓扑图:2、解释:(1)、假设外网域名解析到外网虚拟IP 72.249.146.214上,内网hosts设置db10对应内网虚拟IP 192.168.146.214(2)、默认情况下,由主机绑定内、外网虚拟IP,备机作为备份,当主机的MySQL、Nginx或服务器出现故障无法访问时,备机会自动接管内、外网虚拟IP。
两台服务器都启动负责监控、自动切换虚拟IP 的守护进程/usr/bin/nohup /bin/sh /usr/local/webserver/failover/failover.sh 2>&1 > /dev/null &(3)、主机和备机上的MySQL服务器互为主从,互相同步。
在主机处于活动状态(即由主机绑定虚拟IP)时,读写主机的MySQL,写到主机的数据会同步到备机;在备机处于活动状态时,读写备机的MySQL,写到备机的数据会同步到主机(如果主机上的MySQL死掉暂时无法同步,主机上的MySQL恢复后,数据会自动从备机上同步过来,反之亦然)。
(4)、主机处于活动状态时,每20秒会把/data0/htdocs/(网页、程序、图片存放目录)、/usr/local/webserver/php/etc/(php.ini等配置文件目录)、/usr/local/webserver/nginx/conf/(Nginx配置文件目录)三个目录下的文件通过rsync推送到备机服务器上的对应目录(增量推送,两台服务器上一样的文件不会重复推送),反之如果备机处于活动状态时,每20秒会尝试把文件推送到主机。
nginxFastCGI错误Primaryscriptunknown解决办法
复制代码 代码如下: location / {
root /usr/local/nginx/html; index index.php index.html index.htm; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
上面配置中的$document_root就是针对/usr/local/nginx/html目录下的php文件进行解析。
这篇文章主要介绍了配置解决nginx服务器中wordpress路径不自动加斜杠问题nginx不会自动在请求的最后加上一个斜线的问题文中也有提到通用的规则改写方法需要的朋友可以参考下
nginxFastCGI错误 Primaryscriptunknown解决办法
在centos上成功编译安装nginx 1.4、php 5.4并成功启动nginx和php-fpm后,访问php提示"File not found.",同时在错误日志 中看到:
复制代码 代码如下: 2013/10/22 20:05:49 [error] 12691#0: *6 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.168.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.168.133
Windows下Nginx+PHP5(FastCgi),memcache安装配置详解
Nginx作为一款支持PHP的轻量级WEB服务器,在PHP网站建设中收到越来越多的应用,最近在Windows平台上安装配置了Nginx+PHP5的运行环境,非常方便,现详细介绍下Windows下Nginx 配置PHP5的基础教程,Nginx配置PHP是以FastCgi方式配置的。
下载NginxNginx可以在多种操作系统上安装配置,我使用的是Windows,所以需要下载Nginx Windows版本,点击下载Nginx。
我下载的是nginx/Windows-0.8.53版本。
安装Nginx下载完Nginx后,需要在Windows中安装Nginx,Nginx Windows版本的安装非常方便,只要解压缩后,将文件拷贝到C盘根目录下即可,我的Nginx安装目录为C:\nginx-0.8.53。
安装配置PHP我使用的是PHP5.2,你可以可以使用PHP5.3,只要PHP版本支持FastCgi方式(有php-cgi.exe)即可,PHP安装配置教程推荐参考:Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程配置Nginx支持运行PHP首先需要打开C:\nginx-0.8.53,找到C:\nginx-0.8.53\conf目录下的nginx.conf,以记事本打开,配置Nginx支持PHP第一步设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下。
配置Nginx支持PHP第二步设定WEB服务器目录,类似于PHP.INI配置文件中的document_root,Nginx配置文件中的原有信息如下修改Nginx配置如下这里需要注意,路径分隔符请使用”/”而不要使用Windows中的”\”以防歧义。
配置Nginx支持PHP第三步在Nginx配置文件中找到1 2 3 4 5 6 7 8 9 10 11 1213#location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name ; # include fastcgi_params;#} 去处#并添加WEB 目录,即 1 2 3 4 5 6 7 8 9 10 11 1213 location ~ \.php$ {root D:/PHPWeb;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME D:/PHPWeb$fastcgi_script_name;include fastcgi_params;}这里需要注意,需要将中的/scripts 修改为之前设定的WEB 目录,否则会报HTTP 404错误。
基于PHP的车辆GPS轨迹回放软件设计与实现
摘要随着国内经济的迅猛增长,人民的生活水平显著提高,而一些其他问题也随之而来,私家车的数目的增多导致了交通的拥堵,绿色出行的理念慢慢被人们接受并提倡。
使用公共交通工具既缓解了交通的压力,使得出行更为便捷,又减少了对环境的污染。
本文讨论了基于PHP+MySQL的公交轨迹回放系统软件的设计与实现,其中重点描述了系统软件的实现,包括系统分析、系统调查、数据流程分析、功能设计、数据库设计等。
系统采用Web-GIS技术,通过百度地图和php实现对公交车的GPS位置信息管理。
本系统的主要功能模块如下:查询公交车的线路信息、提供车辆换乘导航服务。
查询某一辆公交车的实时GPS信息、车辆当前位置、车辆运行轨迹。
系统通过浏览器实现公交车轨迹的回放、当前位置显示等功能,方便了百姓乘坐公交车以及工作人员管理公交车。
关键词:GPS;轨迹回放;WebGIS。
AbstractWith the rapid growth of the domestic economy and people's living standards improved significantly, while some other problem has cropped up, the increasing number of private cars has led to traffic jams, the concept of green travel slowly being accepted and promoted. Using public transport both to ease the pressure of traffic, making travel more convenient, but also reduce environmental pollution.This paper discussed the design and implementation of PHP + MySQL bus track playback system, which focuses describes the implementation of system software, including system analysis, system survey, data flow analysis, functional design, database design. System uses Web-GIS Baidu Maps and php technology to realize the bus GPS location information management. The main functional blocks of the system are as follows: Query bus line information, providing transfer vehicle navigation services. Check a bus in a real-time GPS information, the current position of the vehicle, the vehicle trajectory. System through the browser implementations bus track playback, the current position display function to facilitate the people to take the bus and the bus staff management.Keywords: GPS;track playback;WebGIS目录引言 (1)第一章系统分析 (2)1.1系统需求分析 (2)1.2用户需求 (2)1.3系统可行性分析 (3)第二章系统开发技术准备 (4)2.1W EB-GIS技术介绍 (4)2.1系统开发所需工具 (4)2.2开发环境的搭建 (4)第三章系统设计 (8)3.1系统总体结构设计 (8)3.2.数据库设计 (9)3.2.1数据库的完整性 (9)3.2.2数据库设计 (9)第四章系统实施 (13)4.1程序设计 (13)4.1.1连接数据库模块设计 (13)4.1.2地图模块实现 (14)4.1.3菜单模块 (14)4.1.4系统的数据传输 (15)4.1.5查询公交线路信息 (15)4.1.6查询位置信息 (16)4.1.7公交换乘方案查询 (17)4.1.8车辆轨迹数据 (18)4.1.9车辆实时位置信息查询 (20)4.1.10车辆轨迹回放 (20)4.2系统测试 (21)第五章结论 (26)参考文献 (27)致谢 ..................................................................................................... 错误!未定义书签。
基于FreeBSD 8.0搭建nginx+php+php-fpm+mysql高性能php平台
论坛: (IT运维专家网|集群架构|性能调优)欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.FreeBSD简介:FreeBSD是一种自由类Unix操作系统,是由经过BSD、386BSD和4.4BSD发展而来的类Unix 的一个重要分支。
FreeBSD拥有超过200名活跃开发者和上千名贡献者。
FreeBSD被认为是自由操作系统中的不知名的巨人。
它不是Unix,但如Unix一样运行,具有兼容Unix的系统API。
作为一个操作系统,FreeBSD被认为相当稳建可靠。
FreeBSD是以一个完善的操作系统的定位来做开发。
其内核、驱动程序以及所有的用户层(Userland)应用程序(比方说是Shell)均由同一源代码版本控制系统保存(目前使用Subversion并与CVS兼容)。
相较于另一知名的的操作系统Linux,其内核为一组开发人员设计,而用户应用程序则交由他人开发(例如GNU计划),最后再由其他团体集成并包装成Linux包。
FreeBSD默认是无桌面环境的命令行界面,想要使用桌面环境必须自行安装,或是使用PC-BSD之类的桌面发行版。
一.安装准备:1.1、操作系统安装:参见/thread-6422-1-1.html附件补充:配置sshd让root登陆# vi /etc/rc.d/sshd复制代码修改下面选项为如下:PermitRootLogin yesPasswordAuthentication yesUseDNS no复制代码1.2、平台环境:FreeBSD- 8.0-RELEASE_i386nginx-0.8.38php-5.2.13php-5.2.13-fpm-0.5.14mysql-5.1.46复制代码1.3、系统分区:/ 40Gswap 4GB/var 5GB/tmp 5MB/data 剩余所有分区注:具体分区请根据相关业务划分复制代码1.4、系统约定:软件源代码包存放位置/usr/local/src源码包编译安装位置(prefix) /usr/local/software_name脚本以及维护程序存放位置/usr/local/sbinMySQL 数据库位置/data/mysql/data(可按情况设置)网站根目录/data/www/wwwroot(可按情况设置)虚拟主机日志根目录/data/logs(可按情况设置)Nginx运行账户www:wwwinstall_software_name.sh //存放编译参数脚本习惯将所有编译脚本存放在install_software_name.sh便于升级和更新软件复制代码1.5、定时校正服务器时钟,定时与中国国家授时中心授时服务器同步#crontab ?e15 3 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1复制代码1.6、下载软件包:wget ftp:///pub/software/programming/pcre/pcre-8.02.tar.gzwget /download/nginx-0.8.37.tar.gzwget /mysql/MySQL-5.1/mysql-5.1.46.tar.gzwget /pub/gnu/libiconv/libiconv-1.13.tar.gzwget/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download wget /projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz/download wget /projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download wget /downloads/php-5.2.13-fpm-0.5.14.diff.gzwget /get/php-5.2.13.tar.gz/from/this/mirrorwget /get/memcache-2.2.5.tgzwget /source/0.9.6/eaccelerator-0.9.6.tar.bz2wget /get/PDO_MYSQL-1.0.2.tgzwget /soft/linux/nginx_php/imagick/ImageMagick.tar.gzwget /get/imagick-2.2.2.tgzwget /soft/bsder/ZendOptimizer-3.3.0a-freebsd6.0-i386.tar.gz复制代码1.7、利用ports安装基本包1.7.1安装wget# cd /usr/ports/ftp/wget#make install clean复制代码#在出现的对话框中去掉IPV6前面的选择#接下来对话框全部默认皆可刚刚安装完后,wget并未能使用,需要执行下面的命令后方可生效。
fastcgi性能调优(转)
fastcgi性能调优(转)-FPM配置及使⽤总结:-FPM是⼀个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中,我们必须将其patch 到PHP源代码中,然后再⾏编译才能使⽤。
⽽现在我们可以在PHP 5.3.2及更新版本中直接开启并使⽤即可,因为PHP从该版本已经将其收⼊到软件包中,所以其不再是补丁包的存在了。
· ⼏个概念的理解· Nginx+PHP配置· Php-Fpm的操作⼀、⼏个概念的理解1)、CGICGI全称“公共⽹关接⼝”(Common Gateway Interface),是HTTP服务器与其它机器上的程序进⾏通信的接⼝,其程序须运⾏在⽹络服务器上。
NOTE:CGI可以⽤任何⼀种语⾔编写,只要这种语⾔具有标准输⼊、输出和环境变量。
2)、FastCGIFastCGI是⼀个常驻型的CGI,它可以⼀直执⾏,只要激活后,不会每次都要花费时间去fork⼀次(这是CGI最为⼈诟病的fork-and-execute模式)。
它还⽀持分布式的运算,即 FastCGI 程序可以在⽹站服务器以外的主机上执⾏并且接受来⾃其它⽹站服务器来的请求。
FastCGI是语⾔⽆关的、可伸缩的CGI开放扩展,其主要⾏为是将CGI解释器进程保持在内存中并因此获得较⾼的性能。
我们知道,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保存在内存中并接受FastCGI进程管理器调度,那么就可以提供良好的性能、伸缩性等。
优点:1. FastCGI具有语⾔⽆关性;2. FastCGI独⽴于核⼼web服务器运⾏,提供了⼀个⽐API更安全的环境。
APIs把应⽤程序的代码与核⼼的web服务器链接在⼀起,这意味着在⼀个错误的API的应⽤程序可能会损坏其他应⽤程序或核⼼服务器。
⽽恶意的API的应⽤程序代码甚⾄可以窃取另⼀个应⽤程序或核⼼服务器的密钥;3. FastCGI技术⽬前⽀持语⾔有:C/C++、、Perl、Tcl、、SmallTalk、Ruby等。
Linux下Nginx+PHP+MySQL配置(图).docx
Linux下Nginx+PHP+Mysql安装,Nginx配置文件支持PHP2011-03-17 10:04利用Linux Nginx架设高性能的Web环境 Linux Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
Linux Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。
Igor 将源代码以类BSD许可证的形式发布。
Linux Nginx 超越 Apache 的高性能和稳定性,使得国内使用Linux Nginx作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。
实验环境Centos4.5pcre-7.8.tar.gz 正则表达式下载地址:ftp:///pub/software/programming/pcre/nginx-0.7.26.tar下载地址:/php-5.2.6.tar.bz2下载地址:/releases/php-5.2.6-fpm-0.5.9.diff.gz 下载地址:/ php-fpm是为PHP 打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi 注:PHP的版本要和fpm的版本一致mysql-5.0.67.tar.gzDiscuz!_6.0.0_SC_UTF8.zip1、安装pcre# tar -zxvf pcre-7.8.tar.gz# cd pcre-7.8# ./configure# make && make install2、安装Linux Nginx# tar -zxvf nginx-0.7.26.tar.gz# cd nginx-0.7.26# ./configure --prefix=/usr/local/nginx# make && make install启动nginx:# /usr/local/nginx/sbin/nginx停止nginx# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`重启nginxkill -HUP `cat /usr/local/nginx/logs/nginx.pid`添加到自启动# echo "/usr/local/nginx/sbin/nginx">>/etc/rc.local 3、安装mysql# tar -zxvf mysql-5.0.67.tar.gz# cd mysql-5.0.67# groupadd mysql# useradd -g mysql -s /sbin/nologin -M mysql# ./configure --prefix=/usr/local/mysql --with-charset=gbk--with-extra-charset=all --enable-hread-safe-client--enable-local-infile --with-low-memory# make && make install# cp support-files/f /etc/f# chown -R mysql.mysql /usr/local/mysql/# /usr/local/mysql/bin/mysql_install_db --user=mysql# chown -R root.root /usr/local/mysql/# chown -R mysql.mysql /usr/local/mysql/var/启动数据库服务,并添加到自启动# /usr/local/mysql/bin/mysqld_safe --user=mysql &#cp support-files/mysql.server /etc/rc.d/init.d/mysqld#chmod 755 /etc/rc.d/init.d/mysqld加入自动启动服务队列:#chkconfig --add mysqld#chkconfig --level 345 mysqld on添加root密码# /usr/local/mysql/bin/mysqladmin -u root password "123456"测试一下:# /usr/local/mysql/bin/mysql -u root -p输入密码:123456,看能不能进入到数据库配置库文件搜索路径# echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf# ldconfig# ldconfig -v添加/usr/local/mysql/bin到环境变量PATH中#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile#source /etc/profile4、安装PHP这里产生的是可执行文件,和apache的不一样,和apache结合的时候产生的是动态库# tar -jxvf php-5.2.6.tar.bz2# gzip -cd php-5.2.6-fpm-0.5.9.diff.gz |patch -d php-5.2.6 -p1# cd php-5.2.6# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql--enable-fastcgi --enable-fpm--with-config-file-path=/usr/local/php/etc --enable-force-cgi-redirect# make && make install# cp php.ini-recommended /usr/local/php/etc/php.ini# vi /usr/local/php/php-fpm.conf(1)<value name="listen_address">127.0.0.1:9000</value>修改为<valuename="listen_address">IP:9000</value>//本机就用默认的127.0.0.1(2)下面这两行去掉注释并修改<value name="sendmail_path">/usr/sbin/sendmail -t -i</value><value name="display_errors">1</value>(3)<value name="user">nobody</value> //去注释(4)<value name="group">nobody</value> //去注释(5)<value name="allowed_clients">127.0.0.1</value> //允许连接的PC,本机就用127.0.0.1启动php-fpm# /usr/local/php/sbin/php-fpm start添加到自启动# echo"/usr/local/php/sbin/php-fpm start">>/etc/rc.local5、修改Linux Nginx的配置文件,支持PHP# vi /usr/local/nginx/conf/nginx.confuser nobody;worker_processes 8;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 1024;events{use epoll;worker_connections 1024;}http{include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;server {listen 80;server_name ;root /var/www/blog;index index.html index.htm index.php;location ~ .*\.(php|php5)?$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/blog$fastcgi_script_name;include fastcgi_params;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 1h;}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';access_log /var/logs/access.log access;}}注:server部分为PHP虚拟主机127.0.0.1:9000为fastcgi的PC,我这里用的本机/var/www/blog$fastcgi_script_name; 为PHP网页保存的目录测试配置文件:# /usr/local/nginx/sbin/nginx -t6、优化Linux内核参数# vi /etc/sysctl.conf在末尾增加以下内容:net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.ip_local_port_range = 5000 65000使配置立即生效:# /sbin/sysctl -p转自/1364623/293654Nginx+php(FastCGI)+Memcached+Mysql+APC Nginx高性能web服务器安装APC模块安装linux apc 配置fastCGI安装配置3前言*Nginx+php(FastCGI)+Memcached+Mysql+APC 是目前主流的高性能服务器搭建方式!适合大中型网站,小型站长也可以采用这种组合!Nginx 超越Apache 的高性能和稳定性,使得国内使用Nginx 作为Web 服务器的网站也越来越多,其中包括国内最大的电子地图MapBar、新浪博客、新浪播客、网易新闻等门户网站频道,六间房、等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站,更多的网站都在使用Nginx配置。
LNMP(linux+nginx+mysql+php)服务器环境配置
LNMP(linux+nginx+mysql+php)服务器环境配置一、简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过三年了。
Igor Sysoev在建立的项目时,使用基于BSD许可。
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。
Nginx同时也可以作为7层负载均衡服务器来使用。
Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。
为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll (Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。
目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。
处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。
下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。
使用多fastcgi进行php负载均衡
使用多fastcgi进行php负载均衡前段时间做了一个php负载均衡试验,上网找了好的资料,不过中文资料实在是匮乏,好不容易找到的还存在很多问题,为了下次用到的时候少走弯路,做个笔记,记录一下。
试验中前端为Nginx,Ligd下也可以,可以根据需要调整。
具体情况如下:服务器三台,都具有两块网卡,分别为A、B、C,内网IP地址分别是192.168.0.1,192.168.0.2,192.168.0.3。
A运行Nginx作为前端,B、C主要分担运算压力。
数据库部分不予考虑。
系统:CentOS 5.5 64位Nginx:0.6以后的所有版本都适用。
PHP:版本5.2.14,使用同一份编译,分别复制到每台服务器上。
网站目录://lcuc/web一、修改fpm配置默认情况下fpm监听在127.0.0.1:9000 并且只允许来自本机的连接。
为了能让其它机器访问,需要修改php-fpm.conf中的配置。
注意:php 5.3.3已经默认集成了fpm并使用ini文件方式进行配置,请注意区分。
<value name="listen_address">192.168.0.2:9000</value>修改监听端口,注意这里要修改为每台服务器内网IP。
<value name="allowed_clients">192.168.0.1,192.168.0.2,192.168.0.3</value>允许调用的服务器ip,使用英文逗号隔开。
然后重启php-fpm。
二、同步php文件fastcgi负载均衡的时候每次执行的php只能是本地的,所以务必保存程序放置的路径,权限等要一致。
可以使用自己的方法进行同步,rsync、NFS、samba选择合适自己的行。
我使用的是NFS方案,文件集中存储。
还可以把session放在NFS上,实现session共享。
nginx和php-fpm关系
1. nginx和php是如何交互的:
nginx和php交互是通过fastcgi模块来实现的。
fastcgi在nginx中是作为一个upstream实现的。
可以使用如下的配置实现nginx和php的交互,从而把nginx接收到的请求转发给php。
配置如图:
2. 根据监听端口查询对应的pid
命令: netstat -nlp | grep 9000
3. 根据pid查询启动目录:
命令: cd /proc/4342 &&ll | grep exe
4. 查询php-fpm对应的配置文件
一般配置文件部署在对应php目录的etc目录下,php.ini 和php-fpm.ini 命令: cd /usr/local/php/etc&&ll
5. php-fpm的配置修改及启动
启动(指定配置文件)
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
php-fpm 关闭:
kill -INT `cat /var/run/php-fpm/php-fpm.pid`
php-fpm 重启:
kill -USR2 `cat /var/run/php-fpm/php-fpm.pid`。
Nginx常见错误及处理方法
Nginx常见错误及处理⽅法404 bad request⼀般原因:请求的Header过⼤解决⽅法:配置nginx.conf相关设置1. client_header_buffer_size 16k;2. large_client_header_buffers 4 64k;413 Request Entity Too Large⼀般原因:⼀般出现在上传⽂件解决⽅法:配置nginx.conf相关设置1. client_max_body_size 10m;配置php.ini如下(必须和nginx.conf配置⼀致)1. post_max_size=10M2. upload_max_filesize=2M499 Client Closed Request⼀般原因:客户端在为等到服务器相应返回前就关闭了客户端描述符。
⼀般出现在客户端设置超时后,主动关闭socket.解决⽅法:根据实际Nginx后端服务器的处理时间修改客户端超时时间。
500 Internal Server Rrror⼀般原因:脚本错误,(php语法错误、lua语法错误)访问量过⼤,系统资源限制,不能打开过多⽂件磁盘空间不⾜。
(access log开启可能导致磁盘满溢关闭)解决⽅法:语法错误查看nginx_err_log php_err_log。
⽂件访问量:1.修改nginx配置⽂件1. worker_rlimit_nofile 65535;2.修改/etc/security/limits.conf1. * soft nofile 655352. * hard nofile 65535502 Bad Gateway、503 Serveice Unavailable⼀般原因:后端服务⽆法处理,业务中断。
解决⽅法:从后端⽇志获取错误原因,解决后端服务器问题。
504 Gateway Timeout⼀般原因:后端服务器在超时时间内,未响应Nginx代理请求解决⽅法:根据后端服务器实际处理情况,调正后端请求超时时间。
LINUX下 Nginx+MySQL+PHP
结束
====================================安装PCRE======================================
====================================安装PCRE======================================
vi /etc/f #编辑配置文件,在 [mysqld] 部分增加下面一行
datadir = /data/mysql #添加MySQL数据库路径
:wq!
./scripts/mysql_install_db --user=mysql #生成mysql系统数据库
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作
mkdir -p /data/mysql #创建MySQL数据库存放目录
chown -R mysql:mysql /data/mysql #设置MySQL数据库目录权限
mkdir -p /usr/local/mysql #创建MySQL安装目录
vi /etc/rc.d/init.d/nginx #设置nginx开启启动,编辑启动文件添加下面内容
#################################################################
#!/bin/bash
docker完整配置nginx+php+mysql的方法步骤
docker完整配置nginx+php+mysql的⽅法步骤⾸先了解⼀个⽅法:使⽤docker exec进⼊Docker容器docker在1.3.X版本之后还提供了⼀个新的命令exec⽤于进⼊容器,这种⽅式相对更简单⼀些,下⾯我们来看⼀下该命令的使⽤:sudo docker exec --help接下来我们使⽤该命令进⼊⼀个已经在运⾏的容器$ sudo docker ps$ sudo docker exec -it 775c7c9ee1e1 /bin/bash⼀. 配置nginx查找上的 nginx 镜像runoob@runoob:~/nginx$ docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDnginx Official build of Nginx. 3260 [OK]jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 674 [OK]richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 207 [OK]million12/nginx-php Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS... 67 [OK]maxexcloo/nginx-php Docker framework container with Nginx and ... 57 [OK]webdevops/php-nginx Nginx with PHP-FPM 39 [OK]h3nrik/nginx-ldap NGINX web server with LDAP/AD, SSL and pro... 27 [OK]bitnami/nginx Bitnami nginx Docker Image 19 [OK]maxexcloo/nginx Docker framework container with Nginx inst... 7 [OK]...这⾥我们拉取官⽅的镜像runoob@runoob:~/nginx$ docker pull nginx等待下载完成后,我们就可以在本地镜像列表⾥查到 REPOSITORY 为 nginx 的镜像。
解决Nginx出现403forbidden(13:Permissiondenied)报错的四种方法
解决Nginx出现403forbidden(13:Permissiondenied)报错的四种⽅法个⼈分类:我是在在本地⽤虚拟机中通过yum安装nginx的,安装⼀切正常,但是访问时报403,于是查看nginx⽇志,路径为/var/log/nginx/error.log。
打开⽇志发现报错Permission denied,详细报错如下:1. open() "/data/www/1.txt" failed (13: Permission denied), client: 192.168.1.194, server: , request: "GET /1.txt HTTP/1.1", host: ""没有权限?于是找了不少资料,可以通过下⾯四步排查解决此问题。
你可能只是其中之前配置有问题,不⼀定四个步骤都⽤上。
⼀、由于启动⽤户和nginx⼯作⽤户不⼀致所致1.1查看nginx的启动⽤户,发现是nobody,⽽为是⽤root启动的命令:ps aux | grep "nginx: worker process" | awk'{print $1}'1.2将nginx.config的user改为和启动⽤户⼀致,命令:vi conf/nginx.conf⼆、缺少index.html或者index.php⽂件,就是配置⽂件中index index.html index.htm这⾏中的指定的⽂件。
1. server {2. listen 80;3. server_name localhost;4. index index.php index.html;5. root /data/www/;6. }如果在/data/www/下⾯没有index.php,index.html的时候,直接⽂件,会报403 forbidden。
一台nginx服务器多域名配置的方法
⼀台nginx服务器多域名配置的⽅法Nginx强⼤的正则表达式⽀持,可以使server_name的配置变得很灵活,如果你要做多⽤户博客,那么每个⽤户拥有⾃⼰的⼆级域名也就很容易实现了。
下⾯我就来说说server_name的使⽤吧:server_name的匹配顺序Nginx中的server_name指令主要⽤于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_name匹配,例如:server {listen 80;server_name ;...}2、以*通配符开始的字符串:server {listen 80;server_name *;...}3、以*通配符结束的字符串:server {listen 80;server_name www.*;...}4、匹配正则表达式:server {listen 80;server_name ~^(?.+)\.howtocn\.org$;...}Nginx将按照1,2,3,4的顺序对server name进⾏匹配,只有有⼀项匹配以后就会停⽌搜索,所以我们在使⽤这个指令的时候⼀定要分清楚它的匹配顺序(类似于location指令)。
server_name指令⼀项很实⽤的功能便是可以在使⽤正则表达式的捕获功能,这样可以尽量精简配置⽂件,毕竟太长的配置⽂件⽇常维护也很不⽅便。
下⾯是2个具体的应⽤:在⼀个server块中配置多个站点:server{listen 80;server_name ~^(www\.)?(.+)$;index index.php index.html;root /data/wwwsite/$2;}站点的主⽬录应该类似于这样的结构:/data/wwwsite//data/wwwsite//data/wwwsite//data/wwwsite/这样就可以只使⽤⼀个server块来完成多个站点的配置。
nginx弱口令
nginx弱口令Nginx是一个自由和开放源代码的高性能HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
它最初由伊戈尔·赛索耶夫为俄罗斯访问速度较慢的网站设计,第一个公开版本于2004年发布。
与Apache等传统服务器相比,Nginx 采用了事件驱动的方式处理请求,并且具有更高的性能和并发能力。
然而,正因为其开源和广泛应用,Nginx也成为了网络安全攻击的目标之一。
其中一个重要的安全事项是弱口令,即使用弱密码保护Nginx服务器的管理员账户。
攻击者可以通过暴力破解或利用弱口令进入服务器,从而获取敏感信息,破坏网站或者进行其他恶意行为。
为了保证Nginx服务器的安全,以下是一些关于nginx弱口令的参考内容:1. 设置强密码:- 避免使用容易被猜测的密码,如"123456"、"password"等常见密码。
- 密码应该包含大写字母、小写字母、数字和特殊字符,并且至少有8个字符。
- 定期更改密码,并确保新密码与旧密码不同。
2. 账户锁定:- 设置登录失败的次数限制,当达到一定次数时,暂时锁定账户。
- 锁定时间间隔可以根据实际情况进行设置,以防止暴力破解。
3. 使用双因素身份验证:- 引入双因素身份验证可以增加登录的安全性。
- 双因素身份验证通常包括密码和动态验证码、指纹识别、面部识别等。
4. 监控登录日志:- 定期审查登录日志,如果发现异常登录行为,立即采取措施,如立即锁定账户、修改密码等。
- 在登录日志中检查暴力破解的迹象,例如频繁的失败登录尝试。
5. 定期更新Nginx和相关软件:- 定期升级Nginx和相关的软件版本,以获取最新的安全修复和补丁。
- 保持Nginx服务器处于稳定的状态,减少被攻击的风险。
6. 限制访问源IP:- 在Nginx的配置文件中,可以设置仅允许特定IP或IP范围的用户访问服务器。
- 授权访问可以增加服务器的安全性,减少暴露在外界攻击的风险。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
额外使用程序:PHP-FPM: PHP FastCGI 进程管理器PHP-FPM 是一个用以极大地改进FastCGI SAPI 在生产环境中使用的PHP4/5 补丁。
libiconvlibiconv库是一个基于GNU协议的开源库,主要是解决多语言编码处理转换等应用问题。
libmcryptlibmcrypt库是一个基于GNU协议的开源库,主要是解决加密解密应用问题。
mcryptmcrypt库是一个加密算法扩展库。
mhashmhash库是一个哈稀算法扩展库。
libeventlibevent是一个事件触发的网络库。
备注:装完一个新的库后建议ldconfig一下,免得后面的安装找不到最新的链接库。
上传准备好的源码包nginx-0.8.34.tar.gzphp-5.2.13.tar.gzphp-5.2.13-fpm-0.5.13.diff.gzmysql-5.1.45-linux-i686-glibc23.tar.gzeaccelerator-0.9.6.tar.bz2ImageMagick-6.5.8-0.tar.gzimagick-2.3.0.tgzlibiconv-1.13.1.tar.gzlibmcrypt-2.5.8.tar.gzmcrypt-2.6.8.tar.gzmemcache-2.2.5.tgzmhash-0.9.9.9.tar.gzpcre-8.02.tar.gzPDO_MYSQL-1.0.2.tgz上传到root的工作目录(/root)。
支持库的安装1、检查所需的程序库gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在)。
2、CentOS5.4精简安装完成后需要安装以下的RPM包#挂载光驱mkdir /mnt/cdrommount /dev/cdrom /mnt/cdrom#rpm方式开始安装rpm -ivh /mnt/cdrom/CentOS/libjpeg-devel-6b-37.i386.rpmrpm -ivh /mnt/cdrom/CentOS/libpng-devel-1.2.10-7.1.el5_3.2.i386.rpmrpm -ivh /mnt/cdrom/CentOS/freetype-devel-2.2.1-21.el5_3.i386.rpm3、编译安装PHP的支持库tar -zxvf libiconv-1.13.1.tar.gzcd libiconv-1.13.1/./configure --prefix=/usr/localmakemake installcd ../tar -zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configure #默认安装到/usr/localmakemake install/sbin/ldconfig #重新加载动态链接库cd libltdl/ #还要安装一下libltdl库./configure --enable-ltdl-install #默认安装到/usr/localmakemake installcd ../../tar -zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configure #默认安装到/usr/localmakemake installcd ../tar -zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8//sbin/ldconfig #重新加载动态链接库./configure #默认安装到/usr/localmakemake installcd ../ln -s /usr/local/lib/ /usr/lib/ #创建符号连接到系统库文件目录ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/ /usr/lib/ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1注:1、可以使用whereis libiconv 形式的命令查看是否安装了支持库。
2、编译mcrypt,如果出现错误configure: error: *** libmcrypt was not found执行:export LD_LIBRARY_PATH=/usr/local/lib数据库服务器MySQL的安装1、创建mysql用户组和用户/usr/sbin/groupadd mysql #新建用户组mysql/usr/sbin/useradd -g mysql mysql #新建用户mysql隶属mysql用户组2、安装MYSQLtar -zxvf mysql-5.1.45-linux-i686-glibc23.tar.gz -C /usr/local/ #安装到/usr/localmv /usr/local/mysql-5.1.45-linux-i686-glibc23/ /usr/local/mysql/ #更名为/usr/local/mysql cd /usr/local/mysql/cp ./support-files/f /etc/f #复制配置文件./scripts/mysql_install_db --user=mysql #运行初始化脚本chown -R root .chgrp -R mysql .chown -R mysql ./data/usr/local/mysql/bin/mysqld_safe --user=mysql & #启动MySQL/usr/local/mysql/bin/mysqladmin -uroot password '123456' #设置MySQL的root用户密码3、添加到服务cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #复制启动脚本到系统初始化目录chmod 700 /etc/rc.d/init.d/mysqld #修改启动脚本访问权限chkconfig --add mysqld #添加为服务chkconfig --level 345 mysqld on #系统运行级别345时自动启动cd注:1、MySQL官方不建议使用Tarball(Source Code)方式安装,所以采用由MySQL自己编译好的Binary方式来安装。
glibc23表示使用glibc2.3版编译完成的。
2、测试MySQL登录:/usr/local/mysql/bin/mysql -hlocalhost -uroot -p编译安装PHP(FastCGI模式)tar -zxvf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1 #使用fpm补丁文件cd php-5.2.13./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --enable-fastcgi --enable-fpm --enable-force-cgi-redirectmake ZEND_EXTRA_LIBS='-liconv' #解决Fastcgi模式编译时iconv模块出错make installcp php.ini-dist /usr/local/php/etc/php.inicd ../注:1、编译PHP,如果出现错误configure: error: libjpeg.(a|so) not found.执行:rpm -ivh /mnt/cdrom/CentOS/libjpeg-devel-6b-37.i386.rpm如果出现错误configure: error: libpng.(a|so) not found.执行:rpm -ivh /mnt/cdrom/CentOS/libpng-devel-1.2.10-7.1.el5_3.2.i386.rpm如果出现错误configure: error: freetype.h not found.执行:rpm -ivh /mnt/cdrom/CentOS/freetype-devel-2.2.1-21.el5_3.i386.rpm2、安装PHP,如果出现错误make: *** [ext/gd/libgd/gd_jpeg.lo] Error 1执行:rpm -ivh /mnt/cdrom/CentOS/libjpeg-devel-6b-37.i386.rpm编译安装PHP扩展模块tar -zxvf memcache-2.2.5.tgzcd memcache-2.2.5//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake install #.so库文件安装到PHP扩展目录下cd ../tar -jxvf eaccelerator-0.9.6.tar.bz2cd eaccelerator-0.9.6//usr/local/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config makemake install #.so库文件安装到PHP扩展目录下cd ../tar -zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql makemake install #.so库文件安装到PHP扩展目录下cd ../tar -zxvf ImageMagick-6.6.0-8.tar.gzcd ImageMagick-6.6.0-8/./configure #默认安装到/usr/localmakemake installcd ../tar -zxvf imagick-2.3.0.tgzcd imagick-2.3.0//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake install #.so库文件安装到PHP扩展目录下cd ../编辑/usr/local/php/etc/php.ini文件查找; extension_dir = "./"修改为extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"查找Dynamic Extensions 段添加extension = "memcache.so"extension = "pdo_mysql.so"extension = "imagick.so"查找output_buffering = Off修改为output_buffering = On配置eAccelerator加速PHPmkdir -p /var/cache/eaccelerator #创建缓存目录编辑/usr/local/php/etc/php.ini文件在文件末尾添加[eaccelerator]zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerat or.so"eaccelerator.shm_size="64"eaccelerator.cache_dir="/var/cache/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"press="1"press_level="9"创建www用户组和用户,创建WEB应用程序目录/usr/sbin/groupadd www #新建用户组www/usr/sbin/useradd -g www www #新建用户www隶属www用户组mkdir -p /usr/web/9woa #创建WEB应用程序目录chmod +w /usr/web/9woa #开启目录写权限chown -R www:www /usr/web/9woa #变更目录所有者为www配置php-fpm1、编辑/usr/local/php/etc/php-fpm.conf文件查找邮件发送程序的路径和是否显示错误信息<!-- <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> --><!-- <value name="display_errors">0</value> -->修改为<value name="sendmail_path">/usr/sbin/sendmail -t -i</value><value name="display_errors">0</value>查找进程处理的用户和用户组<!-- <value name="user">nobody</value> --><!-- <value name="group">nobody</value> -->修改为<value name="user">www</value><value name="group">www</value>查找最大进程数<value name="max_children">5</value>修改为<value name="max_children">128</value>查找最大打开文件限制<value name="rlimit_files">1024</value>修改为<value name="rlimit_files">65535</value>查找每个进程处理的最大请求数<value name="max_requests">500</value>修改为<value name="max_requests">1024</value>设置好的php-fpm,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www。