linux通过fastcgi实现nginxphpmysql的分机.docx
- 文档编号:14191733
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:15
- 大小:20.61KB
linux通过fastcgi实现nginxphpmysql的分机.docx
《linux通过fastcgi实现nginxphpmysql的分机.docx》由会员分享,可在线阅读,更多相关《linux通过fastcgi实现nginxphpmysql的分机.docx(15页珍藏版)》请在冰点文库上搜索。
linux通过fastcgi实现nginxphpmysql的分机
LNMP基于fastcgi实现nginx,php,mysql的分离
前言:
3
规划:
3
环境:
3
一.在172.16.1.1编译安装nginx3
1.先安装pcre-devel,nginx的rewrite功能依赖pcre提供的库。
3
2.为nginx建立用户,实现安全运行,指定uid的原因是为了与php通过nfs共享时权限方便3
3.下载并编译安装nginx3
4.为nginx提供SysVinit脚本4
5、为此脚本赋予执行权限:
7
6、添加至服务管理列表,并让其开机自动启动:
7
7、启动服务并测试7
二.在172.16.1.3上部署mysql-5.5.287
1.为mysql准备数据目录与用户7
2.下载安装mysql,这里采用已经编译好的7
3.为mysql提供配置文件7
4.为mysql提供sysvinit服务脚本:
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.48
1.安装扩展包9
2.下载编译安装php-5.4.49
3.为php-fpm提供Sysvinit脚本,并将其添加至服务列表:
9
四.整合nginx与php10
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.conf11
6.下载解压discuz,更改权限11
7.启动nfs,编辑配置文件以供nginx挂载11
8.在172.16.1.1上挂载172.16.1.2的/www11
9.安装discuz浏览器运行172.16.1.1/install,根据提示修改Php.ini的一个选项12
10.在172.16.1.3上为discuz建立数据12
前言:
平时安装LNMP是把它们安装到同一台机器上,我想这个对大家来说丝毫没有挑战,下面我们实现把他们剥离到不同的机器上,让各个服务器直接分担原来的压力,也可以增加节点实现负载均衡,如:
多增加一台php,让两台机器轮询的编译php,也可以在增加一台nginx,实现dns的轮询负载均衡。
规划:
nginx:
172.16.1.1
php(FASTCGI):
172.16.1.2
mysql:
172.16.1.3
环境:
redhat5.832位,yum可以正常使用,开发包组"DevelopmentTools""DevelopmentLibraries""XSoftwareDevelopment"已经安装好,如果没有请先安装。
SElinux确保已经关闭,iptables先关闭之。
操作步骤:
一.在172.16.1.1编译安装nginx
1.先安装pcre-devel,nginx的rewrite功能依赖pcre提供的库。
#yum-yinstallpcre-devel
2.为nginx建立用户,实现安全运行,指定uid的原因是为了与php通过nfs共享时权限方便
#groupadd-r-g5000nginx
#useradd-r-gnginx-u5000nginx
3.下载并编译安装nginx
#wgethttp:
//www.nginx.org/download/nginx-1.2.4.tar.gz
#tarxvfnginx-1.2.4.tar.gz
#cdnginx-1.2.4
#./configure\
--prefix=/usr\
--sbin-path=/usr/sbin/nginx\
--conf-path=/etc/nginx/nginx.conf\
--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\
--user=nginx\
--group=nginx\
--with-http_ssl_module\
--with-http_flv_module\
--with-http_stub_status_module\
--with-http_gzip_static_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/fcgi/\
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi\
--http-scgi-temp-path=/var/tmp/nginx/scgi\
--with-pcre
##各个选项意思就不讲解了,如果需要理解,请找google吧
#make&&makeinstall
4.为nginx提供SysVinit脚本
新建文件/etc/rc.d/init.d/nginx,内容如下:
#!
/bin/sh
#
#nginx-thisscriptstartsandstopsthenginxdaemon
#
#chkconfig:
-8515
#description:
NginxisanHTTP(S)server,HTTP(S)reverse\
#proxyandIMAP/POP3proxyserver
#processname:
nginx
#config:
/etc/nginx/nginx.conf
#config:
/etc/sysconfig/nginx
#pidfile:
/var/run/nginx.pid
#Sourcefunctionlibrary.
./etc/rc.d/init.d/functions
#Sourcenetworkingconfiguration.
./etc/sysconfig/network
#Checkthatnetworkingisup.
["$NETWORKING"="no"]&&exit0
nginx="/usr/sbin/nginx"
prog=$(basename$nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[-f/etc/sysconfig/nginx]&&./etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs(){
#makerequireddirectories
user=`nginx-V2>&1|grep"configurearguments:
"|sed's/[^*]*--user=\([^]*\).*/\1/g'-`
options=`$nginx-V2>&1|grep'configurearguments:
'`
foroptin$options;do
if[`echo$opt|grep'.*-temp-path'`];then
value=`echo$opt|cut-d"="-f2`
if[!
-d"$value"];then
#echo"creating"$value
mkdir-p$value&&chown-R$user$value
fi
fi
done
}
start(){
[-x$nginx]||exit5
[-f$NGINX_CONF_FILE]||exit6
make_dirs
echo-n$"Starting$prog:
"
daemon$nginx-c$NGINX_CONF_FILE
retval=$?
echo
[$retval-eq0]&&touch$lockfile
return$retval
}
stop(){
echo-n$"Stopping$prog:
"
killproc$prog-QUIT
retval=$?
echo
[$retval-eq0]&&rm-f$lockfile
return$retval
}
restart(){
configtest||return$?
stop
sleep1
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/null2>&1
}
case"$1"in
start)
rh_status_q&&exit0
$1
;;
stop)
rh_status_q||exit0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q||exit7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q||exit0
;;
*)
echo$"Usage:
$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit2
esac
5、为此脚本赋予执行权限:
#chmod+x/etc/rc.d/init.d/nginx
6、添加至服务管理列表,并让其开机自动启动:
#chkconfig--addnginx
#chkconfignginxon
7、启动服务并测试
#servicenginxstart
直接访问172.16.1.1查看是否有nginx的欢迎信息,如果有代表nginx安装一切正常。
二.在172.16.1.3上部署mysql-5.5.28
1.为mysql准备数据目录与用户
#mkdir-pv/data/mysql
##其实这里最好为mysql准备一个逻辑卷,为了方便书写我省略了
#useradd-rmysql
2.下载安装mysql,这里采用已经编译好的
#wget...inux2.6-i686.tar.gz
#tarxvfmysql-5.5.28-linux2.6-i686.tar.gz-C/usr/local/
#cd/usr/local/
#ln-svmysql-5.5.24-linux2.6-i686mysql
#cdmysql
##更改目录权限
#chown-Rroot:
mysql.
#scripts/mysql_install_db--user=mysql--datadir=/mydata/data
3.为mysql提供配置文件
#cd/usr/local/mysql
#cpsupport-files/my-f/etc/f
并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency=2
适当位置添加一行,指定mysql数据文件的存放位置:
datadir=/mydata/data
4.为mysql提供sysvinit服务脚本:
#cd/usr/local/mysql
#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
添加至服务列表:
#chkconfig--addmysqld
#chkconfigmysqldon
测试启动servicemysqldstart一切正常mysql安装正常
5.输出mysql的man手册至man命令的查找路径:
编辑/etc/man.config,添加如下行即可:
MANPATH/usr/local/mysql/man
6.输出mysql的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
#ln-sv/usr/local/mysql/include/usr/include/mysql
7.输出mysql的库文件给系统库查找路径:
#echo'/usr/local/mysql/lib'>/etc/ld.so.conf.d/mysql.conf
而后让系统重新载入系统库:
#ldconfig-v
8、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
#echo"exportPATH=$PATH:
/usr/local/mysql/bin">/etc/profile.d/mysql.sh
#source/etc/profile.d/mysql.sh
三.172.16.1.2上编译安装php-5.4.4
1.把mysql在这台机器上安装一遍,php要利用一下,否则连接不上mysql,在安装discuz时提示mysql_connect()不支持,如果你有更好办法请给我留言
1.安装扩展包
如果想让编译的php支持mcrypt、mhash扩展,地址:
libmcrypt-2.5.8-4.el5.centos.i386.rpm
libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm
mhash-0.9.9-1.el5.centos.i386.rpm
mhash-devel-0.9.9-1.el5.centos.i386.rpm
mcrypt-2.6.8-1.el5.i386.rpm
2.下载编译安装php-5.4.4
##php网站今天速度不行有空补上php的下载连接
#tarxfphp-5.4.4.tar.bz2
#cdphp-5.4.4
#./configure--prefix=/usr/local/php--with-mysql=/usr/local/mysql--with-openssl--enable-fpm--enable-sockets--enable-sysvshm--with-mysqli=/usr/local/mysql/bin/mysql_config--enable-mbstring--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib-dir--with-libxml-dir=/usr--enable-xml--with-mhash--with-mcrypt--with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d--with-bz2--with-curl
#make
#makeintall
3.为php-fpm提供Sysvinit脚本,并将其添加至服务列表:
#cpsapi/fpm/init.d.php-fpm/etc/rc.d/init.d/php-fpm
#chmod+x/etc/rc.d/init.d/php-fpm
#chkconfig--addphp-fpm
#chkconfigphp-fpmon
为php提供配置文件:
#cpphp.ini-production/etc/php.ini
为php-fpm提供配置文件:
#cp/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件:
#vim/usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid=/usr/local/php/var/run/php-fpm.pid##注释此项并修改
pm.max_children=50
pm.start_servers=5
pm.min_spare_servers=2
pm.max_spare_servers=8
接下来就可以启动php-fpm了:
#servicephp-fpmstart
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
#psaux|grepphp-fpm
到此软件基本安装完毕,下面我们来整合nginx与php,通过php调用mysql
四.整合nginx与php
对172.16.1.1的nginx修改
1.计划把网页放在/www下,建立该目录,并修改权限
#mkdir/www
#chownnginx:
nginx/www
2.编译/etc/nginx/nginx.conf,注释一些选项##编辑前请备份原文件
location/{
root/www;
indexindex.phpindex.htmlindex.htm;
}
location~\.php${
root/www;
fastcgi_pass172.16.1.2:
9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
includefastcgi_params;
}
3.编辑/etc/nginx/fastcgi_params,将其内容更改为如下内容:
fastcgi_paramGATEWAY_INTERFACECGI/1.1;
fastcgi_paramSERVER_SOFTWAREnginx;
fastcgi_paramQUERY_STRING$query_string;
fastcgi_paramREQUEST_METHOD$request_method;
fastcgi_paramCONTENT_TYPE$content_type;
fastcgi_paramCONTENT_LENGTH$content_length;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
fastcgi_paramSCRIPT_NAME$fastcgi_script_name;
fastcgi_paramREQUEST_URI$request_uri;
fastcgi_paramDOCUMENT_URI$document_uri;
fastcgi_paramDOCUMENT_ROOT$document_root;
fastcgi_paramSERVER_PROTOCOL$server_protocol;
fastcgi_paramREMOTE_ADDR$remote_addr;
fastcgi_paramREMOTE_PORT$remote_port;
fastcgi_paramSERVER_ADDR$server_addr;
fastcgi_paramSERVER_PORT$server_port;
fastcgi_paramSERVER_NAME$server_name;
##先不要重启nginx。
在172.16.1.2上修改Php
4.为了以后与nginx共享文件方便建立nginx用户
#groupadd-r-g5000nginx
#useradd-r-gnginx-u5000nginx
5.修改php-fpm配置文件/usr/local/php/etc/php-fpm.conf
#vim/usr/local/php/etc/php-fpm.conf
listen=172.16.1.2:
9000#监听物理网卡地址,供其它机器调用
user=nginx##php-fpm以nginx用户运行
group=nginx
重启php-fpm
#servicephp-fpmrestart
6.下载解压discuz,更改权限
#wgethttp:
//cn.wordpress.org/wordpress-3.4.2-zh_CN.tar.gz
#tarxvfwordpress-3.4.2-zh_CN.tar.gz
#mvwordpress-3.4.2-zh_CN/www
#chown-Rnginx:
nginx/www
在/www建立test.php作为测试文件
#vim/www/test.php
php
phpinfo();
?
>
7.启动nfs,编辑配置文件以供nginx挂载
#vi/etc/exports
/www
172.16.1.1(rw)
#servicenfsstart
8.在172.16.1.1上挂载172.16.1.2的/www
#mount-tnfs172.16.1.2:
/www/www
浏览器打开172.16.1.1/test.php查看是否能正常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 通过 fastcgi 实现 nginxphpmysql 分机
![提示](https://static.bingdoc.com/images/bang_tan.gif)