基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX

背景

虚拟主机

  如今服务器的配置提升明显,单一主机上部署单一网站会对主机造成大量的性能损失,因此web服务虚拟主机的技术应运而生。所谓虚拟主机指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的做法 。虚拟主机可以是“ 基于IP的 ”,这意味着每个网站都有不同的IP地址,或者“ 基于名称 ”,这意味着每个IP地址上都有多个名称,或者“基于端口”,这意味着在同一ip的不同端口上提供不同的网站,通过这些方法使得他们在同一台物理服务器上运行的事实对最终用户来说并不明显。
  Apache是第一批支持基于IP的虚拟主机的服务器之一。Apache的版本1.1及更高版本支持基于IP和基于名称的虚拟主机(虚拟主机)。虚拟主机的后一种变型有时也被称为基于主机的或非IP虚拟主机。
  

fastcgi

  FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
  
  

部署流程

  

部署架构

  

环境

  
3台主机用于分别部署httpd,php和mysql,实现分离
软件版本

系统 httpd php mariadb
CentOS7 2.4.33 7.18 10.2.15-MariaDB

  

架构图


  
  

编译软件

  
这里我们需要编译的软件为httpd和php,mysql可以考虑使用二进制包或者直接官方yum安装
  

安装开发环境和必要的包

1.安装centos开发工具包

yum groupinstall "development tools" -y

2.安装编译httpd和php需要的包

#部分包需要epel源
#yum install epel-release -y
yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y

  

编译httpd

这里在192.168.99.130机器上编译httpd2.4

1.创建apache用户

useradd -r apache -s /sbin/nologin

2.解压httpd,apr,apr-util源码包,这里需要的包均可在httpd官网下到

tar xvf httpd-2.4.33.tar.bz2
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.1.tar.gz

3.编译httpd

 #移动解压的apr和apr-util到指定的httpd源码目录可以省去分别编译3个程序
 mv apr-1.6.2 httpd-2.4.33/srclib/apr
 mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util

#编译参数,具体含义可以参考./configure的帮助文档或者官方文档
./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

make && make install

4.配置环境变量

vim /etc/profile.d/httpd.sh

PATH=/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

source /etc/profile.d/httpd.sh

  

编译php

由于这里为了实现多机分离,因此在192.168.99.131主机上进行编译
1.解压PHP源码

tar xvf php-7.1.18.tar.bz2

2.进入目录

#编译参数
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo

make && make install

3.配置文件设置

cd php-7.1.18/
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#给予执行权限
chmod +x /etc/init.d/php-fpm
#添加到服务中
chkconfig --add php-fpm
#设置开机启动
chkconfig php-fpm on

cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
service php-fpm start

  

安装mariadb

  
这里不再多谈maraidb安装,之前的博客有很详细的mariadb部署细节。这里推荐直接yum安装就好。
  
  

配置文件修改

  

修改httpd主机

  

1.支持代理模块

vim /app/httpd24/conf/httpd.conf

#取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

#修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html

2.编辑虚拟主机配置

<VirtualHost *:80>
  DocumentRoot "/data/web1/wp"
  ServerName www.douma.com
  ErrorLog "logs/a.com.error_log"
  TransferLog "logs/a.com-access_log"
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.99.131:9000/app/web1/wp/$1
<directory "/data/web1/wp">
require all granted
</directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/data/web2/dz"
  ServerName www.fansity.com
  ErrorLog "logs/b.com.error_log"
  TransferLog "logs/b.com-access_log"
<directory "/data/web2/dz">
require all granted
</directory>
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.99.131:9000/app/web2/dz/$1
</VirtualHost>

3.创建站点目录

# httpd主机
 mkdir -pv /data/web{1,2}
#wordpress
 tar xvf wordpress-4.9.4-zh_CN.tar.gz
 mv wordpress web1/
 cd web1
 ln -sv wordpress wp
 #修改配置文件
 vim web1/wp/wp-config-sample.php
 mv wp-config-sample.php wp-config.php


wordpress基本配置完成,之后复制到fast-cgi机器的对应目录(要先在对应主机创建好目录)

 scp -pr wordpress 192.168.99.131:/app/web1/

安装Discuzx

cd /data/web2/
git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git
cp -a DiscuzX/upload web2/
ln -sv upload dz

复制文件到fast-cgi主机(要在另一台主机创建好对应目录)

 scp -pr upload 192.168.99.131:/app/web2/

4.启动httpd服务

apachectl start

  

修改fast-cgi主机

  
1.站点目录修改

#创建对应目录,要在httpd主机复制文件到fast-cgi之前
mkdir -pv /app/web{1,2}

#创建软连接
cd /app/web1
ln -sv wordpress wp

#复制配置文件并且修改
mv wordpress/wp-config-simple.php  wordpress/wp-config.php
vim  wordpress/wp-config.php 

cd /app/web2
ln -sv upload dz


2.php修改,并添加apache用户

useradd -r apache -s /sbin/nologin
vim /app/php/etc/php-fpm.d/www.conf

#修改运行用户为apache
#修改监听ip
#注释掉仅仅允许本机访问

#重新启动php-fpm
service php-fpm restart

#由于论坛安装时候会修改文件所以要给upload目录添加apache的权限

setfacl -R -m u:apache:rwx /app/web2/upload/



  

配置mysql

  
1.创建账号

MariaDB [(none)]> grant all on *.* to admin identified by ‘admin‘;
#刷新权限
MariaDB [(none)]> flush privileges;

2.创建wp数据库,论坛会在安装时候自动创建

MariaDB [(none)]> create database wp;

  

宿主机的hosts文件修改

  
由于是基于域名的虚拟主机,所以在没有DNS的情况下,要想正常访问,就要在宿主机上修稿hosts文件

#win
C:\Windows\System32\drivers\etc\hosts
#linux
/etc/hosts

#添加如下信息
192.168.99.130  www.douma.com
192.168.99.130  www.fansity.com

  

安装wordpress和Discuzx

  
1.安装wordpress
在宿主机浏览器上打开www.douma.com
会自动跳转到安装页面
配置好对应信息点击安装wordpress


2.安装Discuzx
在宿主机浏览器上打开www.fansity.com
自动跳转到安装页面

点击同意

点击下一步

继续下一步

填写完成后点击下一步进行自动安装

安装完成

点击右下角的跳转到论坛

正常访问,这里论坛基本配置完成。

原文地址:http://blog.51cto.com/11010461/2132323

时间: 2024-10-09 11:11:50

基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX的相关文章

LAMP虚拟主机配置以及控制目录访问

3.基于域名的虚拟主机配置 NameVirtualHost192.168.3.32:80#apache2.2.xx版本需要开启此选项,而且要和下面的保持一致:2.4.x版本就不需要此项设置了 <Virtualhost192.168.3.32:80> ServerName www.80.com DocumentRoot /var/www/html/80 </Virtualhost> <Virtualhost192.168.3.32:80> ServerName www.8

基于ansible role实现LAMP平台批量部署

前言 作为运维人员,当面对几十台或上百台服务器需要修改某个参数或部署某个平台,你将从何入手呢?ansible的出现很好的解决了这一困扰,ansible基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.本文带来的是基于Ansible Role实现LAMP平台批量部署. ansible简介 特性 No agents:不需要在被管控主机上安装任意客户端 No server:无服务器端

nginx篇最初级用法之三种虚拟主机基于域名\基于端口\基于IP地址端口的虚拟主机

在nginx中虚拟主机的类型与apache一样也有三种 1.基于域名的虚拟主机 2.基于端口的虚拟主机 3.基于IP地址端口的虚拟主机 在nginx配置文件中每一个server为一个虚拟主机如果需要多个虚拟主机只需要添加server即可例如 server{ listen 80; server_name www.lqinghua.com   //基于域名的虚拟主机 location / { root def; index index.html; } } server{ listen 8080;  

LAMP基于FastCGI分离部署应用

实验目标 本次LAMP搭建在CentOS 7虚拟机上,基于 php-fpm(Fastcgi)实现httpd.php-fpm.mariadb三者分离,并且在LAMP上部署应用,用两个虚拟机一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress:且提供 xcache加速. 实验环境部署如下: httpd 172.18.12.7 httpd-2.4.6-40.el7.centos.x86_64 php-fpm 172.18.12.8 php-fpm-5.4.16-36.el

源码编译安装LAMP环境及配置基于域名访问的多虚拟主机

实验环境及软件版本: CentOS版本: 6.6(2.6.32.-504.el6.x86_64) apache版本: apache2.2.27 mysql版本:  Mysql-5.6.23 php版本:    php-5.3.27 一.关闭防火墙:service iptables stop chkconfig iptables off 二.关闭selinux: sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

Apache httpd服务配置详解 查看版本:httpd -v Server version: Apache/2.4.33 (Unix) Server built:   Apr  3 2018 17:54:07 文件路径:/etc/apache2/httpd.conf # 服务目录(全局配置)用于指定Apache的安装路径,# 此选项参数值在安装Apache时系统会自动把Apache的路径写入ServerRoot "/usr" # 设置互斥对象的目录# Mutex default:/

Apache虚拟目录、用户认证、基于端口/IP/域名的虚拟主机、SSL

环境配置: 配置DNS以便域名解析 安装Bind软件包. yum install -y bind 2. 修改Bind配置文件. vim /etc/named.conf listen-on port 53 { 192.168.200.101; }; allow-query { any; }; vim /etc/named.rfc1912.zones zone "a.com" IN { type master; file "a.com.localhost"; allow

基于CentOS6.6配置Apache虚拟主机(多IP、多主机、多端口)

Apache配置虚拟主机(多IP.多主机.多端口)本文以CentOS6.6 作服务端,Win7作客户端.参考网上诸多文档加以实验,现总结如下.如有问题,有意还请指出.谢谢! [一 基于多IP地址]实验:Server=CentOS6.6,Client=win7.我以root权限直接操作了.1.安装和起服务httpd(即:Apache)[[email protected] ~]# yum install httpd -y    <==yum安装httpd[[email protected] ~]#

rpm包格式安装配置lamp提供两个虚拟主机分别wordpress和phpMyAdmin,后一个提供ssl访问方式。

第一步:设置虚拟主机 首先在/ 监听两个端口,用于开启两个页面: Listen  172.16.249.139:80 Listen  172.16.249.139:80 将主路径取消 #DocumentRoot "/var/www/html" 设置虚拟主机以及IP NameVirtualHost 172.16.249.139:80 设置两个虚拟主机 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /