现在服务器的配置提高明显,单一主机上部署单一网站会对主机形成大量的性能损失,所以web服务虚拟主机的技术应运而生。所谓虚拟主机指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的作法 。虚拟主机能够是“ 基于IP的 ”,这意味着每一个网站都有不一样的IP地址,或者“ 基于名称 ”,这意味着每一个IP地址上都有多个名称,或者“基于端口”,这意味着在同一ip的不一样端口上提供不一样的网站,经过这些方法使得他们在同一台物理服务器上运行的事实对最终用户来讲并不明显。
Apache是第一批支持基于IP的虚拟主机的服务器之一。Apache的版本1.1及更高版本支持基于IP和基于名称的虚拟主机(虚拟主机)。虚拟主机的后一种变型有时也被称为基于主机的或非IP虚拟主机。
php
FastCGI像是一个常驻(long-live)型的CGI,它能够一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序能够在网站服务器之外的主机上执行而且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并所以得到较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要缘由,若是CGI解释器保持在内存中并接受FastCGI进程管理器调度,则能够提供良好的性能、伸缩性、Fail- Over特性等等。
html
3台主机用于分别部署httpd,php和mysql,实现分离
软件版本mysql
系统 | httpd | php | mariadb |
---|---|---|---|
CentOS7 | 2.4.33 | 7.18 | 10.2.15-MariaDB |
这里咱们须要编译的软件为httpd和php,mysql能够考虑使用二进制包或者直接官方yum安装
linux
1.安装centos开发工具包git
yum groupinstall "development tools" -y
2.安装编译httpd和php须要的包web
#部分包须要epel源 #yum install epel-release -y yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y
这里在192.168.99.130机器上编译httpd2.4sql
1.建立apache用户数据库
useradd -r apache -s /sbin/nologin
2.解压httpd,apr,apr-util源码包,这里须要的包都可在httpd官网下到apache
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.编译httpdvim
#移动解压的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
因为这里为了实现多机分离,所以在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
这里再也不多谈maraidb安装,以前的博客有很详细的mariadb部署细节。这里推荐直接yum安装就好。
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
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/
1.建立帐号
MariaDB [(none)]> grant all on *.* to admin identified by 'admin'; #刷新权限 MariaDB [(none)]> flush privileges;
2.建立wp数据库,论坛会在安装时候自动建立
MariaDB [(none)]> create database wp;
因为是基于域名的虚拟主机,因此在没有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
1.安装wordpress
在宿主机浏览器上打开www.douma.com
会自动跳转到安装页面
配置好对应信息点击安装wordpress
2.安装Discuzx
在宿主机浏览器上打开www.fansity.com
自动跳转到安装页面
点击赞成
点击下一步
继续下一步
填写完成后点击下一步进行自动安装
安装完成
点击右下角的跳转到论坛正常访问,这里论坛基本配置完成。