博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
阅读量:7136 次
发布时间:2019-06-28

本文共 5369 字,大约阅读时间需要 17 分钟。

背景

虚拟主机

  如今服务器的配置提升明显,单一主机上部署单一网站会对主机造成大量的性能损失,因此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

  

架构图

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

  
  

编译软件

  

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

安装开发环境和必要的包

1.安装centos开发工具包

yum groupinstall "development tools" -y

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

#部分包需要epel源 #yum install epel-release -yyum 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.bz2tar xvf apr-1.6.2.tar.gztar 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=preforkmake && make install

4.配置环境变量

vim /etc/profile.d/httpd.shPATH=/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binsource /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-fileinfomake && make install

3.配置文件设置

cd php-7.1.18/cp php.ini-production /etc/php.inicp 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 oncd /app/php/etccp php-fpm.conf.default php-fpm.confcp php-fpm.d/www.conf.default php-fpm.d/www.confservice php-fpm start

  

安装mariadb

  

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

配置文件修改

  

修改httpd主机

  

1.支持代理模块

vim /app/httpd24/conf/httpd.conf#取消下面两行的注释LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so#修改下面行
DirectoryIndex index.php index.html

2.编辑虚拟主机配置

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
require all granted
DocumentRoot "/data/web2/dz" ServerName www.fansity.com ErrorLog "logs/b.com.error_log" TransferLog "logs/b.com-access_log"
require all granted
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

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

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

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

scp -pr wordpress 192.168.99.131:/app/web1/

安装Discuzx

cd /data/web2/git clone https://gitee.com/ComsenzDiscuz/DiscuzX.gitcp -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/web1ln -sv wordpress wp#复制配置文件并且修改mv wordpress/wp-config-simple.php  wordpress/wp-config.php vim  wordpress/wp-config.php cd /app/web2ln -sv upload dz

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

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

useradd -r apache -s /sbin/nologinvim /app/php/etc/php-fpm.d/www.conf#修改运行用户为apache#修改监听ip#注释掉仅仅允许本机访问#重新启动php-fpmservice php-fpm restart#由于论坛安装时候会修改文件所以要给upload目录添加apache的权限setfacl -R -m u:apache:rwx /app/web2/upload/

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

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

配置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文件

#winC:\Windows\System32\drivers\etc\hosts#linux/etc/hosts#添加如下信息192.168.99.130  www.douma.com192.168.99.130  www.fansity.com

  

安装wordpress和Discuzx

  

1.安装wordpress
在宿主机浏览器上打开www.douma.com
会自动跳转到安装页面
配置好对应信息点击安装wordpress
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX

2.安装Discuzx

在宿主机浏览器上打开www.fansity.com
自动跳转到安装页面
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
点击同意
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
点击下一步
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
继续下一步
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
填写完成后点击下一步进行自动安装
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
安装完成
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
点击右下角的跳转到论坛
基于fastcgi分离和LAMP虚拟主机部署wordpress和DiscuzX
正常访问,这里论坛基本配置完成。

转载于:https://blog.51cto.com/11010461/2132323

你可能感兴趣的文章
linux 打造man中文帮助手册
查看>>
[数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式
查看>>
Android 最火框架XUtils之注解机制详解
查看>>
spring4.x注解概述
查看>>
Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员...
查看>>
C++序列化、反序列化
查看>>
Mysql学习笔记(七)查(补充)
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.5
查看>>
自然科学与社会科学的区别
查看>>
访问者模式
查看>>
Hadoop: MapReduce2的几个基本示例
查看>>
javascript客户端检测技术
查看>>
16款纯CSS3实现的loading加载动画
查看>>
[工程备案]linux基本命令以及C和C++编程
查看>>
多项式回归
查看>>
HTML 5 Audio/Video DOM canplaythrough 事件在移动端遇到的坑
查看>>
react设置innerHTML
查看>>
升级_宽视野Oracle图形升级(升级后dbca建库)—10.2.0.1.0提拔10.2.0.5.0
查看>>
对JavaScript优化及规范的一些感想
查看>>
eclipse中python文本字体大小设置
查看>>