新装一台服务器web02
hostname web02
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=web02
vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.7
vim /etc/sysconfig/network-scripts/ifcfg-eth1
IPADDR=172.16.1.7
/etc/init.d/network restart
logout
mkdir /home/oldboy/tools -p
cd /home/oldboy/tools/
yum install -y wget
wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.gz
tar xf httpd-2.2.32.tar.gz
cd httpd-2.2.32
#less INSTALL #可以查看安装
#less REANME
yum install -y zlib zlib-devel gcc
rpm -qa zlib zlib-devel gcc
./configure --prefix=/application/apache2.2.32 --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrite
make
make install
/bin/ln -s /application/apache2.2.32/ /application/apache
ll /application/apache/
==========================
cd /application/apache/htdocs/
mkdir bbs blog www
修改主配置文件 vim /application/apache/conf/httpd.conf
405行 Include conf/extra/httpd-vhosts.conf
把注释去掉打开,加载host文件了
#ServerName www.example.com:80
ServerName 127.0.0.1:80 改成这样,因为我们没有给他一个完整的域名
145行 Options -Indexes FollowSymLinks # -Indexes 加一个减号就不会再浏览器再出现列表了
cat /application/apache/conf/extra/httpd-vhosts.conf 文件配置讲解
NameVirtualHost *:80 表示是基于域名的虚拟主机,*表示所有网卡的IP,80表示端口
一个VirtualHost就是相当于Nginx的server标签
<VirtualHost *:80>
ServerAdmin aaromail@163.com #管理员邮箱
DocumentRoot "/application/apache2.2.32/htdocs/www" #相当于Nginx的root
ServerName www.etiantian.org # 域名
ServerAliasetiantian.org # 别名
ErrorLog "logs/www-error_log" # 错误日志,要写在Apache的安装目录下
CustomLog "logs/www-access_log" common # 访问日志
</VirtualHost>
vim /application/apache/conf/extra/httpd-vhosts.conf
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn‘t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option ‘-S‘ to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin aaromail@qq.com
DocumentRoot "/application/apache2.2.32/htdocs/www"
ServerName www.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
</VirtualHost>
###
<VirtualHost *:80>
ServerAdmin aaromail@qq.com
DocumentRoot "/application/apache2.2.32/htdocs/bbs"
ServerName bbs.etiantian.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
</VirtualHost>
#
<VirtualHost *:80>
ServerAdmin aaromail@qq.com
DocumentRoot "/application/apache2.2.32/htdocs/blog"
ServerName blog.etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>
启动Apache
../bin/apachectl start
../bin/apachectl graceful # 如果启动的话可以优雅重启
虚拟机分类:
1)基于域名 *****
2)基于端口
3)基于IP
所谓的基于XX,就是靠XX来区分不通的站点,支持各种混合,N多个虚拟主机。
1)基于域名的虚拟主机,通过域名来区分虚拟主机===》应用:外部网站。
2)基于端口的虚拟主机,通过端口来区分虚拟主机===》应用:公司内部网站,网站的后台。
3)基于IP的虚拟主机,没什么场景用了。
虚拟主机设置: 域名 站点目录
www.etiantian.org /application/apache/htdocs/www/
blog.etiantian.org /application/apache/htdocs/blog/
bbs.etiantian.org /application/apache/htdocs/bbs/
ll /application/apache/conf/httpd.conf 主配置文件
ll /application/apache/conf/extra/ 包含配置文件
[root@web02 ~]# echo "bbs.etiantain.org" > /application/apache/htdocs/bbs/index.html
[root@web02 ~]# echo "blog.etiantian.org" > /application/apache/htdocs/blog/index.html
[root@web02 ~]# echo "www.etiantain.org" > /application/apache/htdocs/www/index.html
172.16.1.5/24 lb01
172/16.1.6/24 lb02
172.16.1.7/24 web02 www.etiantian.org etiantian.org blog.etiantian.org
172.16.1.8/24 web01
172.16.1.51/24 db01 db01.etiantian.org
172.16.1.31/24 nfs01
测试
web01服务器 #记得去掉IP的子网掩码,不然用不了
[root@web01 extra]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5/24 lb01
172/16.1.6/24 lb02
172.16.1.7 web02 www.etiantian.org etiantian.org blog.etiantian.org bbs.etiantian.org
172.16.1.8/24 web01
172.16.1.51/24 db01 db01.etiantian.org
172.16.1.31/24 nfs01
172.16.1.41/24 backup
172.16.1.61/24 m01
[root@web01 ~]# curl www.etiantian.org
www.etiantain.org
[root@web01 ~]# curl bbs.etiantian.org
bbs.etiantain.org
[root@web01 ~]# curl blog.etiantian.org
blog.etiantian.org
到此,我们就把Apache的以域名进行访问的虚拟主机配置完毕。
cd /home/oldboy/tools/
wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz
tar xf php-5.3.27.tar.gz
cd php-5.3.27
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
cd /home/oldboy/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel
yum -y install mcrypt
yum install openssl openssl-devel -y
rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel libmcrypt-devel mhash mcrypt freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
./configure --prefix=/application/php5.3.27 --with-mysql=mysqlnd --with-apxs2=/application/apache/bin/apxs --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --enable-short-tags --enable-static --with-xsl --enable-ftp
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make
make install
ln -s /application/php5.3.27/ /application/php
ls /application/php
[root@web02 php-5.3.27]# ll /application/apache/modules/
总用量 30004
-rw-r--r-- 1 root root 9262 2月 16 16:26 httpd.exp
-rwxr-xr-x 1 root root 30710105 2月 16 19:56 libphp5.so
[root@web02 php-5.3.27]# grep libphp5.so /application/apache/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
[root@web02 php-5.3.27]# cp php.ini-production /application/php/lib/php.ini
[root@lnmp01 tools]# tar xf php-5.3.27.tar.gzß解压压缩包
[root@lnmp01 tools]# cd php-5.3.27 ß进入php安装目录
./configure ß编译参数
–prefix=/application/php5.3.27 ß指定php的安装路径为/application/php5.3.27
–with-mysql=/application/mysql/
ß需要指定mysql的安装路径,安装PHP需要的MySQL相关内容。当然如果没有MySQL软件包,也可以不单独安装,这样的情况可使用–with-mysql=mysqlnd替代–with-mysql=/application/mysql,因为PHP软件里面已经自带连接MySQL的客户端工具。
--with-mysql=mysqlnd \ 使用此参数本地可以没有MySQL软件包.
–with-iconv-dir=/usr/local/libiconv ßlibiconv库,各种字符集间的转换
–with-freetype-dir ß打开对freetype字体库支持
–with-jpeg-dir ß打开对jpeg图片的支持
–with-png-dir ß打开对png图片的支持
–with-zlib ß打开zlib库的支持,用于http压缩传输
–with-libxml-dir=/usr ß打开libxml2库的支持
–enable-xml ß
–disable-rpath ß关闭额外的运行库文件
–enable-safe-mode ß打开安全模式
–enable-bcmath ß打开图片大小调整,用zabbix监控时会用到该模块
–enable-shmop ß
–enable-sysvsem ß使用sysv信号机制,则打开此选项
–enable-inline-optimization ß优化线程
–with-curl ß打开curl浏览工具的支持
–with-curlwrappers ß运维curl工具打开url流
–enable-mbregex ß
–enable-mbstring ß支持mbstring
–with-mcrypt ß编码函数库
–with-gd ß打开gd库的支持
–enable-gd-native-ttf ß支持TrueType字符串函数库
–with-openssl ßopenssl的支持,加密传输时用到
–with-mhash ßmhash算法的扩展
–enable-pcntl ßfreeTDS需要用到,可能是链接mssql
–enable-sockets ß打开sockets支持
–with-xmlrpc ß打开xml-rpc的c语言
–enable-zip ß打开对zip的支持
–enable-soap ßsoap模块的扩展
–enable-short-tags ß开始和标记函数
–enable-zend-multibyte ß支持zend的多字节
–enable-static ß生成静态链接库
–with-xsl ß打开XSLT文件支持,扩展libXML2库,需要libxslt软件
–enable-ftp ß打开ftp的支持
–enable-fpm ß表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务。
–with-fpm-user=www ß指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。
–with-fpm-group=www ß指定PHP-FPM进程管理用户组为www,此处最好和Nginx服务用户组统一。
[root@lnmp01 php]# ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/ ß软链接
[root@lnmp01 php]# touch ext/phar/phar.phar ß创建php安装需要文件
[root@lnmp01 php]# make && make install ß编译安装
[root@lnmp01 php]# ln -s /application/php5.3.27/ /application/php ß链接去版本(方便升级及后续维护)
[root@lnmp01 php]# cp /application/tools/php-5.3.27/php.ini-production /application/php/lib/php.ini ß拷贝php.ini需要配置文件
[root@lnmp01 php]# cp /application/php/etc/php-fpm.conf.default /application/php/etc/php-fpm.conf ß拷贝php-fpm配置文件
[root@lnmp01 php]# /application/php/sbin/php-fpm ß启动php-fpm
vim /application/apache/conf/httpd.conf
311添加以下
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
apache的首页文件
DirectoryIndex index.html 更改为 DirectoryIndex index.php index.html
67行修改成以下
#User daemon
#Group daemon
User www
Group www
cd /application/apache/conf/
../bin/apachectl -t
../bin/apachectl graceful
跟 web01的www用户id 一致。
[root@web01 ~]# id www
uid=501(www) gid=501(www) 组=501(www)
回到web02创建用户
[root@web02 conf]# useradd www -u 501 -s /sbin/nologin -M
[root@web02 conf]# id www
uid=501(www) gid=501(www) 组=501(www)
cd ../htdocs/blog/
echo "<?php phpinfo(); ?>" >phpinfo.php
MAC 客户端做解析之后 浏览器输入 http://blog.etiantian.org/phpinfo.php 出现页面就成功了。
vim test_mysql.php
<?php
$link_id=mysql_connect (‘db01.etiantian.org‘,‘wordpress‘,‘123456‘) or mysql_error () ;
if ($link_id) {
echo "mysql successful by oldboy !";
}else{
echo mysql_error () ;
}
?>
MAC 客户端做解析
172.16.1.7 www.etiantian.org etiantian.org blog.etiantian.org
随后在浏览器中输入http://blog.etiantian.org/test_mysql.php就可以看到mysql successful by oldboy !表示成功了。
LANP 搭建完成 MySQL分离完成。
[root@web01 ~]# cd /application/nginx/html/
[root@web01 html]# tar zcvf blog.tar.gz blog/
[root@web01 html]# scp blog.tar.gz root@10.0.0.7:/home/oldboy/tools/
web02操作
[root@web02 blog]# cd ../
[root@web02 htdocs]# mv /home/oldboy/tools/blog.tar.gz .
[root@web02 htdocs]# tar xf blog.tar.gz
[root@web02 htdocs]# chown -R www.www blog
现在在MAC浏览器中输入http://blog.etiantian.org/就可以访问博客了。
这时候需要到博客的设置----固定链接格式调整回到朴素的选项才能正常访问图片,不然会提示找不到资源403错误,可能是修改后的静态路径让服务器找,肯定就找不到。
[root@web02 htdocs]# mv blog/wp-content/uploads/2017/02/ /tmp
把我们原来的图片路径文件移走,再做NFS看看如果还有那就说明NFS成功了。
[root@web02 htdocs]# rpm -qa rpcbind
[root@web02 htdocs]# yum -y install rpcbind nfs-utils
[root@web02 htdocs]# /etc/init.d/rpcbind start
[root@web02 htdocs]# chkconfig rpcbind on
[root@web02 htdocs]# showmount -e 172.16.1.31 # 记得要启动NFS服务器
Export list for 172.16.1.31:
/data1 172.16.1.0/24
/data 172.16.1.0/24
[root@web02 htdocs]# mount -t nfs 172.16.1.31:/data/nfs-blog /application/apache/htdocs/blog/wp-content/uploads/
[root@web02 uploads]# vim /etc/rc.local
/bin/mount -t nfs 172.16.1.31:/data/nfs-blog /application/apache/htdocs/blog/wp-content/uploads/on/apache/htdocs/blog/wp-content/uploads/
至此,NFS和MySQL都做好了海域Apache。
Apache默认是prefork模式。编译没有指定的话
1)线程模式
2)占用资源少
3)稳定性略差
4)并发大
1)进程模式
2)占用资源多
3)稳定
4)并发一般
[root@web02 conf]# vim /application/apache/conf/httpd.conf
Include conf/extra/httpd-mpm.conf # 把这条打开这是不同模式下可以进行调优的文件。
[root@web02 conf]# cd extra/
[root@web02 extra]# vim httpd-mpm.conf # 这里修改相当于Nginx修改工作模式和线程并发连接数
<IfModule mpm_worker_module>
StartServers 5
MaxClients 1500
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 5000
</IfModule>
[root@web02 extra]# ../../bin/apachectl -t # 提示我们修改之后应怎么设置才对
WARNING: MaxClients of 1500 would require 60 servers,
and would exceed the ServerLimit value of 16.
Automatically lowering MaxClients to 400. To increase,
please see the ServerLimit directive.
Syntax OK
[root@web02 extra]# vim httpd-mpm.conf
<IfModule mpm_worker_module>
ServerLimit 1500
StartServers 5
MaxClients 1500
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 5000
</IfModule>
[root@web02 extra]# ../../bin/apachectl -t # 现在没有提示了
Syntax OK
[root@web02 conf]# cd /application/apache/conf/
其中这么一段配置是来指定 /application/apache/conf/extra/httpd-vhosts.conf里中的 DocumentRoot "/application/apache2.2.32/htdocs/blog" 路径的。如果这时候/httpd-vhosts.conf里的DocumentRoot "/application/apache2.2.32/htdocs/blog"使用了不是<Directory "/application/apache2.2.32/htdocs">指定的路径的话,那么访问就会出现403错误,如果我们要想修改DocumentRoot "/var/html"的话,那么就需要在httpd.conf配置文件里在增加一个
<Directory "/var/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/application/apache2.2.32/htdocs">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
原文:http://www.cnblogs.com/aofo/p/6413484.html