温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CnetOS 6.8 编译安装LAMP以及fcgi虚拟主机

发布时间:2020-06-21 00:12:55 来源:网络 阅读:541 作者:键盘敲烂 栏目:web开发

  纠结了好几天,还是做出来吧。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 -r mysql 创建系统用户mysql,一般事先都会存在
# tar xf mysql-5.6.14-linux-glibc2.5-x86_64.tar -C /usr/local/ 解压二进制包
# cd /usr/local/ 
# ln -sv mysql-5.6.14-linux-x86_64 mysql 创建软链接,可以多次使用
# cd mysql
# chown -R root:mysql ./*	改变mysql目录下内容用户组	
# mkdir -pv /mydata/data  /mydata/data 作为mysql数据文件存放位置 
# chown -R mysql.mysql /mydata/data
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data --skip_name_resolve
# cp support-files/my-large.cnf  /etc/my.cnf 主配置文件
#  vim /etc/my.cnf 
  
  [mysqld] 编辑mysqld配置段
.......
datadir = /mydata/data
skip_name_resolve = ON 阻止反解地址
innodb_file_per_table = ON

此时还不能用mysql直接登录,那就要去找可执行文件,就去bin
# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh 
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 设置启动服务
# chkconfig --add mysqld 加入开机启动
#  service mysqld start
#  ss -tnl 查看3306 是否启动


2.安装httpd-2.4

 源码包:httpd-2.4.10.tar.bz2

    apr 和 apr-util也可以编译安装

~]# yum install pcre-devel openssl-devel libevent-devel apr-devel apr-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 -j 4 
# make install 
				
# echo 'export PATH=/usr/local/apache2/bin:$PATH' > /etc/profile.d/httpd.sh
# . /etc/profile.d/httpd.sh 把apahectl 加入PATH,每次开机就可使用
# apachectl start httpd-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 -j 4 # && make install
   注意:如果mpm为线程模型,则需要额外使用--enable-maintainer-zts

复制配置文件:
# cp php.ini-production  /etc/php.ini 			
  编译php为httpd的模块后,整合php至httpd:
  编译httpd.conf,添加:
  DirectoryIndex index.php index.html
  AddType application/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 -j 4 # && make install

#  mv /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php/php-fpm.conf
    php-fpm主配置文件

# /usr/local/php5/sbin/php-fpm 此处为php-fpm的服务可执行文件直接执行即可

# echo 'export PATH=/usr/local/php5/sbin/:$PATH' > /etc/profile.d/php-fpm.sh
  将php-fpm路径写入环境变量 ***
  
# pkill php-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 注释掉中心主机
ServerName www.lh.com:80 去掉#
DirectoryIndex index.php index.html 可以识别多种后缀主页
LoadModule proxy_module modules/mod_proxy.so 去掉前面的注释#,启用这两个模块
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

下面直接把虚拟主机配置段放在httpd.conf中
<VirtualHost *:80>
	ServerName www.lh.com
	DocumentRoot "/web/lh"
	<Directory "/web/lh">
		Options None
		AllowOverride None
	        Require all granted
		</Directory>
		ProxyRequests Off
		ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/lh/$1 吧
		ProxyPassMatch ^/(pm-status|ping)$ fcgi://127.0.0.1:9000/$1
		DirectoryIndex index.php index.html
</VirtualHost>

#mkdir -pv /web/lh
#vim /web/lh/index.php
    <h2>真麻烦啊</h2>
    <?php
        phpinfo();
    ?>


然后激动地打开浏览器,输入本机IP地址,能不能休息就看这下子了


CnetOS 6.8 编译安装LAMP以及fcgi虚拟主机CnetOS 6.8 编译安装LAMP以及fcgi虚拟主机

居然乱码了,看来中文支持的包没装,但是调用的Server API FPM/FCGI出现了,就够了,老子去睡觉了



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI