CnetOS 6.8 编译安装LAMP以及fcgi虚拟主机
纠结了好几天,还是做出来吧。LAMP这几个东西搭配起来干活,还是部署比较方便的。
php和httpd结合的方式有两种,一种module,即php作为httpd的一部分运行,默认安装方式就是模块方式。第二种就是fpm,可以单独运行。因为工作环境多为centos 6,所以在6上做。
安装前提示
1.事先准备好开发环境,安装 "Development tools" "Server Platform Development"
安装顺序:1.mysql或者httpd 2.php-fpm,因为php依赖前两个程序
1.mysql 此处使用二进制格式包安装
安装包:mysql-5.6.14-linux-glibc2.5-x86_64.tar
#useradd-rmysql创建系统用户mysql,一般事先都会存在#tarxfmysql-5.6.14-linux-glibc2.5-x86_64.tar-C/usr/local/解压二进制包#cd/usr/local/#ln-svmysql-5.6.14-linux-x86_64mysql创建软链接,可以多次使用#cdmysql#chown-Rroot:mysql./*改变mysql目录下内容用户组#mkdir-pv/mydata/data/mydata/data作为mysql数据文件存放位置#chown-Rmysql.mysql/mydata/data#scripts/mysql_install_db--user=mysql--datadir=/mydata/data--skip_name_resolve#cpsupport-files/my-large.cnf/etc/my.cnf主配置文件#vim/etc/my.cnf[mysqld]编辑mysqld配置段.......datadir=/mydata/dataskip_name_resolve=ON阻止反解地址innodb_file_per_table=ON此时还不能用mysql直接登录,那就要去找可执行文件,就去bin#echo"exportPATH=/usr/local/mysql/bin:$PATH">/etc/profile.d/mysql.sh#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld设置启动服务#chkconfig--addmysqld加入开机启动#servicemysqldstart#ss-tnl查看3306是否启动
2.安装httpd-2.4
源码包:httpd-2.4.10.tar.bz2
apr 和 apr-util也可以编译安装
~]#yuminstallpcre-developenssl-devellibevent-develapr-develapr-util-devel-y安装需要的开发包,不然./configure不停的报错,缺这缺那,还不一起告知,一个一个来#./configure--prefix=/usr/local/apache2--sysconfdir=/etc/httpd--enable-so--enable-ssl--enable-cgi--enable-rewrite--enable-modules=most--enable-mpms-shared=all--with-mpm=prefork--with-pcre--with-zlib--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util#make-j4#makeinstall#echo'exportPATH=/usr/local/apache2/bin:$PATH'>/etc/profile.d/httpd.sh#./etc/profile.d/httpd.sh把apahectl加入PATH,每次开机就可使用#apachectlstarthttpd-2.4启动#ss-tnl查看80端口是否启动
附加:cp /usr/local/bin/apachectl /etc/rc.d/init.d/httpd ,可以支持stop 和start选项
--sysconfdir=/etc/httpd-->生成主配置文件
3.编译安装php5
前两部分都相同,此处可有两种方式
编译安装php5:php-5.4.40.tar.bz2
模块安装和fpm安装使用同一个包
安装:
(1)作为httpd的模块安装:#./configure--prefix=/usr/local/php5--with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--with-openssl--enable-mbstring--enable-xml--enable-sockets--with-freetype-dir--with-gd--with-libxml-dir=/usr--with-zlib--with-jpeg-dir--with-png-dir--with-mcrypt--with-apxs2=/usr/local/apache2/bin/apxs--with-config-file-path=/etc/php.ini--with-config-file-scan-dir=/etc/php.d/#make-j4#&&makeinstall注意:如果mpm为线程模型,则需要额外使用--enable-maintainer-zts复制配置文件:#cpphp.ini-production/etc/php.ini编译php为httpd的模块后,整合php至httpd:编译httpd.conf,添加:DirectoryIndexindex.phpindex.htmlAddTypeapplication/x-httpd-php.php***************************************************************************************************************************************************************************************************************************************************************(2)安装为fpm:php-fpm可以独立启动,和模块安装的区别就是加了--enable-fpm选项此处坑好多:--enable-mbstring--with-mcrypt搞了半天才装上#./configure--prefix=/usr/local/php5--with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--with-openssl--enable-mbstring--enable-xml--enable-sockets--with-freetype-dir--with-gd--with-libxml-dir=/usr--with-zlib--with-jpeg-dir--with-png-dir--with-mcrypt--enable-fpm--with-config-file-path=/etc/php.ini--with-config-file-scan-dir=/etc/php.d/#make-j4#&&makeinstall#mv/usr/local/php5/etc/php-fpm.conf.default/usr/local/php5/etc/php/php-fpm.confphp-fpm主配置文件#/usr/local/php5/sbin/php-fpm此处为php-fpm的服务可执行文件直接执行即可#echo'exportPATH=/usr/local/php5/sbin/:$PATH'>/etc/profile.d/php-fpm.sh将php-fpm路径写入环境变量***#pkillphp-fpm关闭php-fpm,ss-tnl发现9000端口没有了
全部编译成功。可以去下一个坑玩耍受虐了。好开心
********************************************************************************
测试一下是否能正常工作,做个虚拟主机,进行下反向代理
要使用fcgi反向代理需要启用两个模块
php-fpm:FastCGI Process Manager
fpm
1.客户端请求URL到达httpd
2.httpd上的fcgi反代模块至fpm
3.fpm找资源
静态资源
httpd处理
动态资源
httpd中有一个fcgi模块。进行反向代理至fpm,将客户端送达的
RL从httpd转交给fpm,fpm创建子进程进行处理,
不在一台主机的情况
fpm监听动态资源所在主机
httpd监听静态资源所在主机
fcgi协议协议:
***启用httpd:proxy_module, proxy_fcgi_module,不然httpd -t 检测ProxyRequests会报错
ProxyRequests Off
ProxyPass
ProxyPassMatch ^(URL-PATTERN)$ fcgi://FCGI-SERVER:PORT/PATH/TO/DIR/$1
#vim/etc/httpd/httpd.conf#DocumentRoot注释掉中心主机ServerNamewww.lh.com:80去掉#DirectoryIndexindex.phpindex.html可以识别多种后缀主页LoadModuleproxy_modulemodules/mod_proxy.so去掉前面的注释#,启用这两个模块LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so下面直接把虚拟主机配置段放在httpd.conf中<VirtualHost*:80>ServerNamewww.lh.comDocumentRoot"/web/lh"<Directory"/web/lh">OptionsNoneAllowOverrideNoneRequireallgranted</Directory>ProxyRequestsOffProxyPassMatch^/(.*\.php)$fcgi://127.0.0.1:9000/web/lh/$1吧ProxyPassMatch^/(pm-status|ping)$fcgi://127.0.0.1:9000/$1DirectoryIndexindex.phpindex.html</VirtualHost>#mkdir-pv/web/lh#vim/web/lh/index.php<h2>真麻烦啊</h2><?phpphpinfo();?>
然后激动地打开浏览器,输入本机IP地址,能不能休息就看这下子了
居然乱码了,看来中文支持的包没装,但是调用的Server API FPM/FCGI出现了,就够了,老子去睡觉了
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。