小型企業的web架構搭建_2015092402


小型企業的
web架構搭建

架構簡介:以www.su.com爲例(不要訪問,這域名不是我的,我姓蘇而已)

         前端dns負責以輪詢方式返回客戶端解析結果,實現基礎負載均衡效果;中間的兩臺web服務器負責外部的web頁面請求響應,後端文件服務器smaba服務負責存放web頁面的源代碼文件,nfs負責數據庫存儲

wKiom1YFMnHD6fL0AAEctmjKGOo462.jpg

詳細的LAMP搭建過程請參見:

http://imsupeng.blog.51cto.com/10651675/1696939

http://imsupeng.blog.51cto.com/10651675/1696313


1、搭建DNS服務器:


服務器相關信息:

[root@DNS ~]# ip add | awk -F'[ /]+''/inet\>/&&!/127.0.0.1/ {print $3}'
172.16.113.53
[root@DNS ~]# uname -r
3.10.0-229.el7.x86_64[root@DNS ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)


 

關閉firewallselinux

[root@DNS ~]# systemctl stop firewalld
[root@DNS ~]# systemctl disable firewalld
[root@DNS ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@DNS ~]# setenforce 0


 

安裝bind程序:

[root@DNS ~]# yum install -y bind


 

配置bind,添加區域su.com,並在區域數據目錄添加su.com的區域數據文件

[root@DNS ~]# cp /etc/named.conf{,.bak}     //備份配置文件
[root@DNS ~]# vim /etc/named.conf      //編輯配置文件,其他保持默認即可
ectory      "/var/named";
allow-query     { any; };
 
zone "su.com" IN {
 
       type master;
       file "su/su.com.zone";
};
 
 
[root@DNS ~]# mkdir /var/named/su     //創建區域數據文件存放目錄
[root@DNS ~]# vim /var/named/su/su.com.zone  //創建並編輯區域數據文件
$TTL 1D
@               IN      SOA    su.com.         admin.su.com.   (
       2015092401
       1D
       1H
       1W
       5H)
                IN      NS     dns.su.com.
dns             IN      A      172.16.113.53
www             IN      A      172.16.113.55
www             IN      A      172.16.113.56
 
[root@DNS ~]# named-checkzone 'su.com'/var/named/su/su.com.zone   //檢查區域數據文件是夠有誤
zone su.com/IN: loaded serial 2015092401
OK
[root@DNS ~]# named-checkconf   //檢查配置文件是否有誤
 
[root@DNS ~]# systemctl startnamed.service    //啓動bind程序
[root@DNS ~]# systemctl enable named.service    //添加至開機自動啓動


wKioL1YFMo_Rv1kfAAPB5vl1wmw118.jpg

可以發現,兩次的查詢請求所返回的解析結果不同,至此,以輪詢方式實現負載均衡機制的DNS服務已搭建成功


2、安裝samba及nfs:

服務器相關信息:

[root@nfs&samba ~]# uname -r
3.10.0-229.el7.x86_64
[root@nfs&samba ~]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core)
[root@nfs&samba ~]# ip add | awk -F '[ /]+' '/inet\>/&&!/127.0.0.1/ {print $3}'
172.16.113.54



關閉selinux及防火牆:

[root@nfs&samba ~]# systemctl stop firewalld
[root@nfs&samba ~]# systemctl disable firewalld
[root@nfs&samba ~]#  sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@nfs&samba ~]# setenforce 0






安裝配置samba

[root@nfs&samba ~]# yum install -y samba
[root@nfs&samba ~]# mkdir /web



a、添加一塊硬盤,專門做爲web源代碼存儲

b、爲新硬盤創建文件系統並掛在至/web目錄,設置開機自動掛在

[root@nfs&samba ~]# fdisk /dev/sdb     //爲新硬盤創建分區
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xff0da1a7.
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-104857599, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): 
Using default value 104857599
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@nfs&samba ~]# mkfs -t ext4 /dev/sdb1     //創建文件系統
[root@nfs&samba ~]# mount /dev/sdb1 /web/    //掛在新硬盤
[root@nfs&samba ~]# echo "/dev/sdb1    /web    ext4    defaults    0 0" >> /etc/fstab     //將新硬盤的掛在添加至/etc/fstab


[root@nfs&samba ~]# vim /etc/samba/smb.conf     //配置samba
workgroup = webdir
netbios name = web
hosts allow = 127. 172.16.



配置文件最後一行添加此信息

        [webdir]                                                                 
        comment = Public Stuff                                                   
        path = /web
        public = yes                                                             
        writable = yes                                                           
        printable = no                                                           
        write list = webserver



爲samba提供登錄用戶:

[root@nfs&samba ~]# useradd -r webserver
[root@nfs&samba ~]# chown -R webserver.webserver /web/
[root@nfs&samba ~]# smbpasswd -a webserver    //將webserver用戶添加至samba中(此命令由samba-client提供)
New SMB password:
Retype new SMB password:
Added user webserver.



啓動samba,並添加至開機自動啓動:

[root@nfs&samba ~]# systemctl start smb
[root@nfs&samba ~]# systemctl enable smb



安裝nfs,並進行配置

[root@nfs&samba ~]# yum install -y rpcbind nfs-utils
[root@nfs&samba ~]# systemctl start rpcbind    //啓動rpcbind
[root@nfs&samba ~]# systemctl enabled rpcbind    //設置開啓自動啓動



添加一塊新硬盤,用作nfs的共享目錄

爲新硬盤劃分分區,並創建文件系統

[root@nfs&samba ~]# fdisk /dev/sdc 
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xccb37364.
Command (m for help): n   
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-209715199, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): 
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.


[root@nfs&samba ~]# mkfs -t ext4 /dev/sdc1 
[root@nfs&samba ~]# mkdir /dbdir
[root@nfs&samba ~]# echo "/dev/sdc1        /dbdir        ext4        defaults        0 0" >> /etc/fstab 
[root@nfs&samba ~]# mount -a    //掛在新硬盤
[root@nfs&samba ~]# chown -R nobody.nobody /dbdir/
[root@nfs&samba ~]# vim /etc/exports    //編輯nfs的配置文件
/dbdir  172.16.0.0/16(sync,rw)
[root@nfs&samba ~]# systemctl start nfs.service   //啓動nfs



3、包安裝Mariadb,並載在nfs及samba


掛載nfs,並添加至開機自動掛載

[root@storage ~]# yum install -y nfs-utils  rpcbind //支持nfs掛載
[root@storage ~]# mkdir /mydata
[root@storage ~]# echo "172.16.113.54:/dbdir                      /mydata            
      nfs     defaults        0 0" >> /etc/fstab



安裝mariadb:

[root@storage ~]# yum install -y mariadb-server mariadb
編輯配置文件,更改:
[root@storage ~]# vi /etc/my.cnf
datadir=/mydata/data
在mysqld
innodb_file_per_table = on
skip_name_resolve = on



[root@storage ~]# systemctl start mariadb
[root@storage ~]# systemctl enable mariadb
[root@storage ~]# mysql
MariaDB [(none)]> CREATE DATABASE webdb;    //創建數據庫
MariaDB [(none)]> GRANT ALL ON webdb.* TO "webuser"@"172.16.%.%" IDENTIFIED BY 'root';    //授權用戶
MariaDB [(none)]> FLUSH PRIVILEGES;    //刷新數據庫授權



4、編譯安裝php+Apache2.4(兩臺web服務器配置完全一樣,此處只演示一臺)

掛載samba,並添加開機自動掛載:

[root@web1 ~]# mkdir /sourcefile
[root@web1 ~]# mount.cifs //172.16.113.54/webdir /sourcefile -o username=webserver,password=root 
[root@web1 ~]# echo "mount.cifs //172.16.113.54/webdir /sourcefile -o username=webserver,password=root" >> /etc/rc.d/rc.local

安裝httpd2.2:

本機相關信息:

[root@web1 ~]# uname -r
2.6.32-504.el6.x86_64
[root@web1 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@web1 ~]# ip add|awk -F'[ /]+' '/inet\>/&&!/127.0.0.1/ {print $3}'
172.16.113.55



需要的軟件包: 

httpd-2.4.16.tar.bz2   
apr-1.5.0.tar.bz2     
apr-util-1.5.3.tar.bz2




準備開發環境

[root@web1 apr-1.5.0]# yum groupinstall -y "Development Tools" "Server Platform Development"



安裝apr

[root@web1 ~]# tar xf apr-1.5.0.tar.bz2 -C /usr/local/src/
[root@web1 ~]# cd /usr/local/src/apr-1.5.0/
[root@web1 apr-1.5.0]# ./configure --prefix=/usr/local/apr
[root@web1 apr-1.5.0]# make && make install



安裝apr-util

[root@web1 apr-1.5.0]# cd /root/
[root@web1 ~]# tar xf apr-util-1.5.3.tar.bz2 -C /usr/local/src/
[root@web1 ~]# cd /usr/local/src/apr-util-1.5.3/
[root@web1 apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@web1 apr-util-1.5.3]# make && make install




安裝httpd2.4

[root@web1 apr-util-1.5.3]# cd /root/
[root@web1 ~]# tar xf httpd-2.4.16.tar.bz2 -C /usr/local/src/
[root@web1 ~]# cd /usr/local/src/httpd-2.4.16/
[root@web1 httpd-2.4.16]# yum install -y pcre-devel        //使httpd支持pcre正則表達式
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event    
[root@web1 httpd-2.4.16]# make && make install
    編輯配置文件,添加Pidfile路徑:
[root@web1 httpd-2.4.16]# mkdir /var/run/httpd24
[root@web1 httpd-2.4.16]# vim /etc/httpd24/httpd.conf 
Pidfile "/var/run/httpd24/httpd.pid"


    提供服務腳本:創建/etc/rc.d/init.d下的httpd24

#!/bin/bash
#
# chkconfig: - 85 15
# description: The Apache HTTP Server management script
start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}
stop() {
        echo -n $"Stopping $prog: "
        killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=6
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        # Force LSB behaviour from killproc
        LSB=1 killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
        if [ $RETVAL -eq 7 ]; then
            failure $"httpd shutdown"                                                                                                                                              
        fi
    fi
    echo
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status -p ${pidfile} $httpd
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart|try-restart)
        if status -p ${pidfile} $httpd >&/dev/null; then
                stop
                start
        fi
        ;;
  force-reload|reload)
        reload
        ;;
  graceful|help|configtest|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
        RETVAL=2
esac
exit $RETVAL
[root@web1 httpd-2.4.16]# chkconfig --add httpd24    //添加開機自動啓動項
[root@web1 httpd-2.4.16]# chkconfig httpd24 on    //設置開機自動啓動
[root@web1 httpd-2.4.16]# service httpd24 start    //啓動httpd




編譯安裝php以fpm方式結合httpd

需要的軟件包:

 php-5.6.13.tar.bz2


[root@web1 ~]# tar xf php-5.6.13.tar.bz2  -C /usr/local/src/
[root@web1 ~]# cd /usr/local/src/php-5.6.13/


解決依賴關係:

[root@web1 php-5.6.13]# yum install -y bzip2-devel libxml2-devel libmcrypt-devel
[root@web1 php-5.6.13]# make && make install



將程序包自帶的配置文件模板複製到/etc下作爲php的配置文件

[root@web1 php-5.6.13]# cp php.ini-production /etc/php.ini



將程序包自帶的服務腳本模板複製到/etc/rc.d/init.d下作爲服務腳本,並添加至開機自動啓動

[root@web1 php-5.6.13]# cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm
修改服務腳本中的pid項:
[root@web1 php-5.6.13]# vim /etc/rc.d/init.d/phpfpm 
php_fpm_PID=/var/run/php5/php-fpm.pid
[root@web1 php-5.6.13]# chmod +x /etc/init.d/phpfpm    //賦予服務腳本執行權限
[root@web1 php-5.6.13]# chkconfig --add phpfpm
[root@web1 php-5.6.13]# chkconfig phpfpm on



將fpm的配置文件模板複製更名爲fpm的配置文件,並做相應的配置:

[root@web1 php-5.6.13]# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
[root@web1 php-5.6.13]# vim /usr/local/php5/etc/php-fpm.conf
pid = /var/run/php5/php-fpm.pid    //將此項前面的";"去掉,啓用該項
修改 Pool Definitions中:
pm.max_children = 100
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15    //此項一定要大於等於pm.min_spare_servers
[root@web1 php-5.6.13]# mkdir -pv /var/run/php5
[root@web1 php-5.6.13]# service phpfpm start    //啓動php-fpm



編輯httpd的配置文件,開啓以下兩個模塊,並做相應的配置:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
在最後添加如下兩行:
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/sourcefile/$1
修改    DocumentRoot "/sourcefile"
        <Directory "/sourcefile">
         DirectoryIndex index.php index.html
添加如下兩行
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps



重啓httpd服務:

[root@web1 php-5.6.13]# service httpd24 restart



編輯測試腳本:

[root@web1 php-5.6.13]# vim /sourcefile/index.php
<?php
        $conn = mysql_connect('172.16.113.57','webuser','root');
        if ($conn)
            echo "OK";
        else
            echo "Faulse";
        phpinfo();
?>




訪問測試:(將物理主機的DNS指向自己搭建的DNS服務器地址)

wKiom1YFMqPh-e6XAAMRJ0z-Y5Q597.jpg




搭建phpMyadmin實現數據庫的圖形接口管理

需要的軟件包:

phpMyAdmin-4.4.14.1-all-languages.zip

[root@web1 ~]# unzip /root/phpMyAdmin-4.4.14.1-all-languages.zip  -d /sourcefile/
[root@web1 ~]# cd /sourcefile/[root@web1 sourcefile]# ln -sv phpMyAdmin-4.4.14.1-all-languages pma
&&&&將phpMyadmin配置文件模板複製改名:
[root@web1 pma]# cp config.sample.inc.php config.inc.php



編輯配置文件

root@web1 pma]# vim config.inc.php

wKiom1YFNFeAE88LAATh4E4mUgk909.jpg


在瀏覽器訪問登錄即可:

wKioL1YFNODhjqs_AAIzIX4rUf4131.jpg

wKiom1YFNR7Cfxo7AATL4IlRAKg740.jpg


安裝xcache,實現php加速:

需要的軟件包:

xcache-3.2.0.tar.gz  可在官網下載

[root@web1 ~]# tar xf xcache-3.2.0.tar.gz -C /usr/local/src
[root@web1 ~]# cd /usr/local/src/xcache-3.2.0/

[root@web1 xcache-3.2.0]# /usr/local/php5/bin/phpize //生成configure文件

[root@web1 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/lo
cal/php5/bin/php-config

[root@web1 xcache-3.2.0]# make && make install

//此步驟結束後,會顯示xcache的模塊安裝位置,例如: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/

[root@web1 xcache-3.2.0]# mkdir /etc/php.d    //創建配置文件目錄

[root@web1 xcache-3.2.0]# cp xcache.ini /etc/php.d/    //爲xcache提供配置文件

[root@web1 xcache-3.2.0]# vim /etc/php.d/xcache.ini    //編輯配置文件,指定xcache模塊的安裝位置

extension =  /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/xcache.so

其他保持默認即可

[root@web1 xcache-3.2.0]# service phpfpm restart  //由於php工作在fpm模式,即php現在是一個獨立的服務,因此更改了配置重啓php-fpm服務即可。


刷新phpinfo頁面,出現以下信息便是添加成功。


wKioL1YFccLAp9FEAAE8tCOjE58625.jpg









待續~~~~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章