2016年11月21日 星期一

在 CentOS7/RHEL7 上,使用快照分層化(Snapshot layering)快速建立影像檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
  • 管理 RBD 快照的方式,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:(--image-format 2 是啟動分層功能的方式!)
    [root@serverc ~]#rbd create test-clone --image-format 2 --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image      snap device    
    0  rbd  test-clone -    /dev/rbd0 
    
  3. 在 ServerB 上,針對 RDB 映像檔,建立檔案系統,並且掛載到 /mnt/clones 目錄下:
    [root@serverb ~]#mkfs.ext4 /dev/rbd0
    [root@serverb ~]#mkdir /mnt/clones
    [root@serverb ~]#mount /dev/rbd0 /mnt/clones
    
  4. 在 ServerB 上,新增一個 10MB 的檔案到 /mnt/clones 目錄下:
    [root@serverb ~]#dd if=/dev/zero of=/mnt/clones/file-1 bs=1M count=10
    
  5. 在 ServerC 上,新增一個新的 snapshot:
    [root@serverc ~]#rbd snap create --snap my-snapshot test-clone
    
  6. 在 ServerC 上,建立一個 my-snapshot 複本在 test-clone 內,名為 my-clone:
    [root@serverc ~]#rbd clone --image test-clone --snap my-snapshot --dest my-clone
    
  7. 在 ServerC 上,確認 my-clone 有完整被建立起來:
    [root@serverc ~]#rbd children --image test-clone --snap my-snapshot
    
  8. 在 ServerC 上,扁平化 my-clone 影像檔:
    [root@serverc ~]#rbd flatten --image my-clone
    
  9. 在 ServerB 上建立一個指標,指到新建立的 my-clone 映像檔:
    [root@serverb ~]#rbd --id rbd.serverb map my-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    
  10. 在 ServerB 上,缷載 /mnt/clones 目錄:
    [root@serverb ~]#umount /mnt/clones
    
  11. 在 ServerB 上,掛載新的 RBD 檔到 /mnt/clones 目錄:
    [root@serverb ~]#mount /dev/rbd1 /mnt/clones
    
  12. 在 ServerB 上,查詢 /mnt/clones 目錄,是否有 file-1 檔案:
    [root@serverb ~]#ls /mnt/clones
    

2016年11月17日 星期四

在 CentOS7/RHEL7 上,管理 RBD 快照檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:
    [root@serverc ~]# rbd create test-snapshot --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-snapshot
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image         snap device    
    0  rbd  test-snapshot -    /dev/rbd0 
    
    
  3. 在 ServerB 上,將 RDB 映像檔格式化成 ext4 檔案系統:
    [root@serverb ~]# mkfs.ext4 /dev/rbd0
    
  4. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mkdir /mnt/snapshots
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    
  5. 在 ServerB 上,利用 df 指令來查看檔案系統:
    [root@serverb ~]# df -h
    
  6. 利用 dd 指令,在 snapshots 目錄內,建一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-1 bs=1M count=10
    
  7. 在 ServerC 上建立一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap my-snapshot test-snapshot
    
  8. 在 ServerB 上,利用 dd 指令,在 snapshots 目錄內,建另一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-2 bs=1M count=10
    [root@serverb ~]#ls /mnt/snapshots
    
  9. 在 ServerC 上建立另一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap another-snap test-snapshot
    
  10. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  11. 在 ServerC 上,列出所有建立的 RDB 快照檔案:
    [root@serverc ~]# rbd --id rbd.serverb snap ls test-snapshot
    
  12. 在 ServerC 上,返回到第一個 RDB 快照, my-snapshot:
    [root@serverc ~]# rbd snap rollback --snap my-snapshot test-snapshot
    
  13. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots
    
  14. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  15. 在 ServerC 上,返回到第二個 RDB 快照, another-snapshot:
    [root@serverc ~]# rbd snap rollback --snap another-snap test-snapshot
    
  16. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots
    

2016年10月25日 星期二

在 CentOS7/RHEL7 上,使用 Ceph Block 設備(RBD)

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
快速設定流程:
  1. 切換到建立 Ceph 時的目錄:
    #cd ~/ceph-deploy
    
  2. 編輯 Ceph 設定檔:
    #vim ceph.conf
    (在檔尾追加下列設定:)
    [client]
    rbd_cache = true
    rbd_cache_writethrough_until_flush = true
    
  3. 重新配置 Ceph :
    #ceph-deploy --overwrite-conf config push serverd servere
    
  4. 為 RBD 客戶端建立憑證:
    #ceph auth get-or-create client.rbd.serverb osd 'allow rwx pool=rbd' mon 'allow r' -o /etc/ceph/ceph.client.rbd.serverb.keyring
    
    (上述指令若輸入錯誤,請先刪除,再重新輸入:)
    ceph auth del client.rbd.serverb
    
  5. 建立一個 RBD 影像檔:
    #rbd create test --size 128
    
  6. 確認剛才建立的 RBD 影像檔:
    #rbd info test
    
  7. 切換至 Serverb 主機,安裝 Ceph 指令工具:
    #yum install -y ceph-common
    
  8. 在 Serverb 主機上,啟動 RBD Map 服務:
    #chkconfig rbdmap on
    #systemctl start rbdmap
    
  9. 在 Serverb 主機,導入 RBD 核心驅動工具:
    #modprobe rbd
    #lsmod | grep rbd
    
  10. 將 ServerC 上的 keyring 與 ceph.conf 檔,複製到 Serverb 主機:
    #scp root@serverc:/etc/ceph/ceph.client.rbd.serverb.keyring /etc/ceph/
    #scp root@serverc:/etc/ceph/ceph.conf /etc/ceph/
    
  11. 在 Serverb 主機上,繪製 RBD 影像檔:
    #rbd --id rbd.serverb map test
    
  12. 在 Serverb 主機上,驗證 RBD 影像檔:
    #rbd --id rbd.serverb showmapped
    
  13. 在 Serverb 主機上,將 RBD 影像檔,製成檔案系統:
    #mkfs.ext4 /dev/rbd0
    #mkdir /mnt/rbd
    #mount /dev/rbd0 /mnt/rbd
    
    (亦可寫入 /etc/fstab 檔案內:)
    /dev/rbd0  /mnt/rbd  ext4 defaults,_netdev 0 0
    
  14. 測試一下效能:
    #dd if=/dev/zero of=/tmp/test1 bs=10M count=1
    #df
    #cp /tmp/test1 /mnt/rbd
    #ls /mnt/rbd/
    #rados --id rbd.serverb df
    #dd if=/dev/zero of=/tmp/test2 bs=10M count=1
    #cp /tmp/test2 /mnt/rbd
    #df
    #rados --id rbd.serverb df
    
  15. 在 Serverb 主機上,利用 rbd put 指令,上傳物件到 RADOS :
    #dd if=/dev/zero of=/tmp/test3 bs=10M count=1
    #rados --id rbd.serverb -p rbd put test3 /mnt/test3
    #rados --id rbd.serverb df
    #rados --id rbd.serverb -p rbd stat test3
    
    (以下是不允許的狀況:)
    #rados --id rbd.serverb -p data put test1 /tmp/test1
    

2016年10月21日 星期五

在 CentOS7/RHEL7 上,安裝 Ceph Storage 系統

設定提要:
  • 使用 Ceph Hammer 套件來架設!
  • 先暫停 firewalld 服務,以利架設過程!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install centos-release-ceph-hammer
    #yum -y install ceph-deploy
    
  2. 建立 Ceph 設定目錄:
    #mkdir ~/ceph-deploy
    
  3. 建立 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #ceph-deploy new serverc serverd servere
    
    (若無架設 DNS Server,請預先在 /etc/hosts 建立相關主機設定,並複至到其他主機)
    192.168.0.1 serverc serverc.example.com
    192.168.0.2 serverd serverd.example.com
    192.168.0.3 servere servere.example.com
    
    
  4. 建立 ssh key ,並複製到其他主機:
    #ssh-keygen -t rsa
    #ssh-copy-id root@serverd
    #ssh-copy-id root@servere
    
  5. 修改 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #vim ceph.conf
    (增加下列設定:)
    osd journal size = 1024
    osd pool default size = 2
    osd pool default min size = 1
    public network = 192.168.0.0/24
    [mon]
    mon osd allow primary affinity = 1
    
  6. 安裝 Ceph 至各主機上:
    #ceph-deploy install serverc serverd servere
    
  7. 在 ServerC 上,安裝 Ceph 監視器,監視各主機運作:
    #ceph-deploy mon create serverc serverd servere
    
  8. 在 ServerC 上,收集 Ceph 監視器金鑰:
    #ceph-deploy gatherkeys serverc
    
  9. 在 ServerC 上,查詢 Ceph Cluster 狀態:
    #ceph -s
    
  10. 在 ServerC 上,查詢 ServerC 的硬碟空間狀態:
    #ceph-deploy disk list serverc
    
  11. 使用各 Server 上的 vdb 的硬碟空間:
    #cd ~/ceph-deploy
    #ceph-deploy osd create serverc:vdb serverd:vdb servere:vdb
    
    (做完後,記得要重開機!)
    
  12. 在 ServerC 上,再次查詢 Ceph Cluster 狀態:
    #ceph -s
    
  13. 在 ServerC 上,查詢 Ceph Cluster 狀態的方式:
    #ceph -w
    #service ceph status mon
    #service ceph status osd
    #ps -ef | grep ceph-osd
    #service ceph stop osd
    #ceph osd tree
    #service ceph start osd
    #ceph osd tree
    
  14. 如果修改了 ceph-deploy 下的 ceph.conf 檔案,可重新再配置 ceph :
    #vim ~/ceph-deploy/ceph.conf
    (加入下列幾行:)
    [mon]
    mon_clock_drift_allowed = 1
    mon_clock_drift_warn_backoff = 30
    
    (開啟重新配置)
    #ceph-deploy --overwrite-conf config push serverc serverd servere
    #service ceph restart mon
    #ssh serverd "service ceph restart mon"
    #ssh servere "service ceph restart mon"
    

RADOS 驗證:
  1. 在 ServerC 上,建立一個小檔案,並上載到 RADOS server:
    #dd if=/dev/zero of=/tmp/test bs=10M count=1
    #rados mkpool data
    #rados -p data put test1 /tmp/test
    #rados df
    
    (再多推一些東西上去:)
    #rados -p data put test2 /tmp/test
    #rados -p data put test3 /tmp/test
    #rados df
    
  2. 刪除 RADOS server 內的資料:
    #rados -p data rm test1
    #rados -p data rm test2
    #rados -p data rm test3
    

CephX 的驗證機制:
  1. 在 ServerC 上,使用 Ceph 的監看模式,查看CephX上的ID與金鑰:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin/keyring -w
    
  2. 使用 rbd 指令,建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring create --size 1024 testimg
    
  3. 使用 rbd 指令,移除先前建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring rm testimg
    
  4. 可以利用 Shell 指令,指定一部份的 rbd 指令:
    #CEPH_ARGS='--id user --keyring /etc/ceph/ceph.client.user.keyring'
    
  5. 增加一個使用者 rhuser 到 Ceph 內:
    ceph auth get-or-create client.rhuser mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.rhuser.keyring
    
  6. 查詢使用者相關資料與權限:
    #ceph auth list
    
  7. 修訂使用者 rhuser 相關資料與權限:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin.keyring auth caps client.rhuser osd 'allow * pool=data' mon 'allow *'
    

2016年9月30日 星期五

在 CentOS7/RHEL7上,使用 Nginx 設定基本 Web 帳號密碼

設定提要:
  • 利用 Nginx 作為 Web 平台,實作 Web 站台帳密登入機制
  • 請先安裝 Nginx Web 平台!可參考這一篇文章!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install httpd-tools
    
  2. 設定帳號與密碼:
    #htpasswd -c /etc/nginx/.htpasswd nginx
    (查看密碼內容:)
    # cat /etc/nginx/.htpasswd
    
  3. 修改 Nagios 設定檔 /etc/nginx/nginx.conf:
    # vim /etc/nginx/nginx.conf
    (追加下列設定參數:)
    auth_basic "Private Property";
    auth_basic_user_file /etc/nginx/.htpasswd;
    
  4. 重新啟動 Nagios:
    # systemctl reload nginx
    
※附註:
  • 限制指定的目錄:
    #vim /etc/nginx/conf.d/default.conf
    (加入下列設定參數)
    location ~ ^/admin/.* {
            root /usr/share/nginx/html;
            index index.php index.html index.htm;
            location ~ \.php$ {
               try_files $uri = 404;
               fastcgi_pass unix:/var/opt/remi/php70/run/php-fpm/php-fpm.sock;
               fastcgi_index  index.php;
               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               include        fastcgi_params;
            }
            auth_basic "Administrator Login";
            auth_basic_user_file /usr/share/nginx/html/.htpasswd;
    }
    
參考文獻:
  • http://tonyhack.familyds.net/wordpress/?p=1998

2016年9月20日 星期二

在 CentOS7/RHEL7 上安裝 Nagios (for Apache)

設定提要:
  • 利用 Nagios 即時監控系統資源運作情形!
  • 利用 Apache 作為 Web 平台!可參考這一篇,安裝 LAMP 平台!
Server 端(監控端)快速設定流程:
  1. 利用 yum 進行 EPEL 套件安裝升級:
    #yum udpate epel-release
    
  2. 安裝 Nagios 與 Plugin 套件:
    #yum install nagios nagios-plugins-* httpd-tools
    
  3. 編寫相關 Nagios 的設定檔:
    # vim /etc/httpd/conf.d/nagios.conf
    (增加下列設定:)
    Require ip 127.0.0.1 192.168.100.0/24
    
  4. 設定 Web 帳密驗證:
    #htpasswd /etc/nagios/passwd nagiosadmin
    
  5. 起動 Nagios :
    #systemctl enable nagios
    #systemctl start nagios
    #systemctl restart httpd
    
  6. 利用 firefox ,連到網頁: http://自己的IP/nagios ,即可看見網頁!
Client 端(被監控端)快速設定流程:
  1. 在 Client 端主機上,利用 yum 進行 EPEL 套件安裝升級:
    #yum udpate epel-release
    
  2. 在 Client 端主機上,安裝 NRPE 與 Plugin 套件:
    #yum install nrpe nagios-plugins-*
    
  3. 在 Client 端主機上,編寫相關 NRPE 的設定檔:
    # vim /etc/nagios/nrpe.cfg
    (增加下列設定:)
    allowed_hosts=127.0.0.1,192.168.100.250
    dont_blame_nrpe=1
    command[check_users]=/usr/lib64/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
    command[check_load]=/usr/lib64/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
    command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
    command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
    
  4. 在 Client 端主機上,起動 NRPE :
    #systemctl enable nrpe
    #systemctl start nrpe
    
  5. 在 Client 端主機上,打開防火牆設定:
    #firewall-cmd --add-port=5666/tcp --permanent
    #firewall-cmd --reload
    
  6. 在 Server 端主機上,安裝 Nagios 的 NRPE Plugin 套件:
    #yum install nagios-plugins-nrpe
    
  7. 在 Server 端主機上,修改 Nagios 相關設定:
    #vim /etc/nagios/objects/commands.cfg
    (在檔尾加入下列設定:)
    define command{
            command_name check_nrpe
            command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    }
    
  8. 在 Server 端主機上,編寫被監控端的監控設定:
    #vim /etc/nagios/conf.d/node01.cfg
    
    define host{
        use                    linux-server
        host_name              node01
        alias                  node01
        address                192.168.100.1
        }
    define service{
        use                    generic-service
        host_name              node01
        service_description    PING
        check_command          check_ping!100.0,20%!500.0,60%
        }
    
    define service{
        use                    generic-service
        host_name              node01
        service_description    Root Partition
        check_command          check_nrpe!check_disk\!20%\!10%\!/
        }
    
    define service{
        use                    generic-service
        host_name              node01
        service_description    Current Users
        check_command          check_nrpe!check_users\!20\!50
        }
    
    define service{
        use                    generic-service
        host_name              node01
        service_description    Total Processes
        check_command          check_nrpe!check_procs\!250\!400\!RSZDT
        }
    
    define service{
        use                    generic-service
        host_name              node01
        service_description    Current Load
        check_command          check_nrpe!check_load\!5.0,4.0,3.0\!10.0,6.0,4.0
        }
    
  9. 在 Server 端主機上,重新起動 Nagios :
    #systemctl restart nagios
    
參考文獻:
  • https://www.server-world.info/en/note?os=CentOS_7&p=nagios&f=1

在 CentOS7/RHEL7 上安裝 Nagios (for Nginx)

設定提要:
  • 利用 Nagios 即時監控系統資源運作情形!
  • 利用 Nginx 作為 Web 平台
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y httpd-tool gcc glibc glibc-common gd gd-devel net-snmp openssl-devel wget unzip spawn-fcgi perl-FCGI fcgi fcgi-devel
    
  2. 設定 Nagios 專用帳號與群組:
    #useradd nagios
    #passwd nagios
    #groupadd nagcmd
    #usermod -a -G nagcmd nagios
    #usermod -a -G nagcmd nginx
    
  3. 下載 Nagios 的最新版本:
    # cd /tmp
    #wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz
    #wget https://nagios-plugins.org/download/nagios-plugins-2.1.3.tar.gz
    
  4. 解開 Nagios 壓縮檔:
    #tar zxvf nagios-4.2.1.tar.gz
    #tar zxvf nagios-plugins-2.1.3.tar.gz
    
  5. 編譯 Nagios 原始碼:
    #cd nagios-4.2.1
    #./configure --sysconfdir=/etc/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd
    #make all
    #make install
    #make install-init
    #make install-commandmode
    
  6. 編譯 Nagios-plugins 原始碼:
    #cd ../nagios-plugins-2.1.3
    #./configure --with-nagios-user=nagios --with-nagios-group=nagios
    #make all
    #make install
    
  7. 修改 Nagios 相關設定檔:
    #vim /etc/nagios/nagios.cfg
    (修改下列設定:)
    log_file=/var/log/nagios/nagios.log
    
  8. 配合設定檔,新增目錄及檔案:
    #mkdir /var/log/nagios
    #touch /var/log/nagios/nagios.log
    #chown -R nagios:nagios /var/log/nagios/
    
  9. 新增帳密,鎖住 Nagios 網頁:
    #htpasswd -cb /etc/nagios/htpasswd.users nagiosadmin !AGoodPassword
    
  10. 設定 fcgiwrap:
    #cd /etc/yum.repos.d/
    #wget https://copr.fedorainfracloud.org/coprs/jorti/fcgiwrap/repo/epel-7/jorti-fcgiwrap-epel-7.repo
    #yum install fcgiwrap
    #vim /etc/init.d/fcgiwrap
    (編寫內容如下:)
    #!/usr/bin/perl
    
    use strict;
    use warnings FATAL => qw( all );
    
    use IO::Socket::UNIX;
    
    my $bin_path = '/usr/sbin/fcgiwrap';
    my $socket_path = $ARGV[0] || '/tmp/cgi.sock';
    my $num_children = $ARGV[1] || 1;
    
    close STDIN;
    
    unlink $socket_path;
    my $socket = IO::Socket::UNIX->new(
        Local => $socket_path,
        Listen => 100,
    );
    
    die "Cannot create socket at $socket_path: $!\n" unless $socket;
    
    for (1 .. $num_children) {
        my $pid = fork;
        die "Cannot fork: $!" unless defined $pid;
        next if $pid;
    
        exec $bin_path;
        die "Failed to exec $bin_path: $!\n";
    }
    (存檔後離開)
    # chmod +x /etc/init.d/fcgiwrap 
    #vim /etc/rc.local
    (加入下列該行指令:)
    sudo -u nginx /etc/init.d/fcgiwrap
    
  11. 設定 Nginx 內容:
    #cd /etc/yum.repos.d/
    
    
  12. 起動 Nagios :
    #
    #chmod +x /etc/init.d/nagios
    #chkconfig --add nagios
    #service nagios start
    
參考文獻:
  • http://www.phpini.com/linux/rhel-centos-7-install-nagios
  • https://assets.nagios.com/downloads/nagioscore/docs/Nagios-Core-Installing-On-Centos7.pdf
  • http://unix.rocks/2014/nginx-and-nagios-a-howto/
  • https://copr.fedorainfracloud.org/coprs/jorti/fcgiwrap/
  • https://blog.linuxeye.com/312.html
  • http://idevit.nl/node/93

2016年9月2日 星期五

Linux中,自動回答內容的Shell Scripts 用法

設定目標:
  • 利用 Expect 套件,寫出自動回應系統訊息的程式。
快速設定流程:
  1. 安裝 Expect 套件
    # yum install expect
    
  2. 寫個自動登入的 Expect Scripts 程式
    # vim login.sh
    #!/usr/bin/expect -f
    spawn ssh -i .ssh/id_rsa demo@helloworld
    expect {
          "yes/no" {
             send "yes\r"
             expect "passphrase"
             send "123456\r"
          }
          "passphrase" {
             send "123456\r"
          }
      }
    interact timeout 1 { send "logout\n" }
    exit
    
  3. 執行測試
    #chmod +x login.sh
    # ./login.sh
    


參考文獻:

  • http://blog.xuite.net/m740138.m740138/blog/25445084-%E5%B0%8D%E8%A9%B1%E5%9E%8B%E8%87%AA%E5%8B%95%E5%9B%9E%E6%87%89%E8%85%B3%E6%9C%AC(%E4%BD%BF%E7%94%A8expect)
  • http://wiki.tcl.tk/11583
  • https://blog.longwin.com.tw/2011/07/expect-shell-auto-linux-2011/
  • http://white-co.blogspot.tw/2012/01/expect-spawnlinux-expect.html

2016年8月15日 星期一

在 Linux mint 中安裝Office 2010 32位元版本

設定目標:
  • 在Linux Mint 中,安裝 MS-Office 2010 32位元版本。
  • 注意:請購買合法的 Office 2010 使用授權(別肖想你可以買到原始碼!)
快速設定流程:
  1. 首先,安裝 Linux Mint 作業系統!

  2. 安裝 Wine 套件
    # add-apt-repository ppa:wine/wine-builds
    # apt-get install --install-recommends winehq-devel
    # apt-get -y --no-install-recommends install winehq-staging winbind
    
  3. 設定 winecfg 內容:
    # export WINEARCH=win32 WINEPREFIX=~/wineoffice
    # winecfg   (注意:使用 windows xp 當容器)
    
    選擇"函式庫" --> 新增 riched20 到函式庫內
    
  4. 掛載 MS-Office 2012 32位元版的光碟:
    # mount -o loop office2010.iso /mnt
    
  5. 利用 Wine 進行安裝的工作:
    # cd /mnt
    # wine setup.exe
    
參考文獻:
  • https://forums.solydxk.com/viewtopic.php?t=5857
  • https://community.linuxmint.com/tutorial/view/1325

2016年8月2日 星期二

在 CentOS7 / RHEL7 上使用 Collectd 外掛套件

設定目標:
  • 開啟 Collectd 外掛程式,即時監控多部系統主機資源運作情形!
  • 相關 Collectd 套件安裝方式,請參考這一篇內容
快速設定流程:
  1. 利用 yum 進行相關套件安裝(Server、Client端均需要安裝):
    #yum -y install collectd-netlink
    
  2. 編修 Server 端設定:
    #vim /etc/collectd.conf
    LoadPlugin network
    <Plugin network>
       Listen "192.168.1.63"
       <Listen "192.168.1.63">
          SecurityLevel None
       </Listen>
    </Plugin>
    
  3. 重新啟動 Collectd 服務:(Server)
    #systemctl restart collectd
    
  4. 設定 SELinux:(Server)
    #setsebool -P collectd_tcp_network_connect on
    
  5. 設定防火牆:(Server)
    #firewall-cmd --permanent --add-port=udp/25826
    #firewall-cmd --permanent --add-port=tcp/25826
    #firewall-cmd --reload
    
  6. 編修 Client 端設定:
    vim /etc/collectd.conf
    LoadPlugin network
    <Plugin network>
         Server "192.168.1.63"
         <Server "192.168.1.63">
                SecurityLevel None
         </Server>
    </Plugin>
    
  7. 重新啟動 Collectd 服務:(Client)
    #systemctl restart collectd
    
  8. 設定 SELinux:(Client)
    #setsebool -P collectd_tcp_network_connect on
    
  9. 驗證方式(Server、Client端均可使用):
    #netstat -tunlp | grep collect
    

2016年7月31日 星期日

在 CentOS7/RHEL7 上架設 Nginx Web Server(二)

設定目標:
  • 在 Centos 7 上架設 Nginx 1.10.1 + Php 7.0 (Remi) 套件!
Nginx Web Server 快速設定流程:
  1. 編寫最新的 Nginx 套件位置:
    #vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    
  2. 安裝最新的 Nginx 套件:
    # yum install nginx-*
    
  3. 開啟防火牆:
    # firewall-cmd --permanent --add-service=http
    # firewall-cmd --reload
    
  4. 啟動 Nginx 服務:
    #systemctl enable nginx.service
    #systemctl start nginx.service
    #systemctl status nginx.service -l
    
PHP 7 (Remi) 快速設定流程:
  1. 安裝 Remi 套件的 repo 檔案:
    #wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    #rpm -Uvh remi-release-7.rpm
    
  2. 安裝 PHP 7.0 套件:
    # yum install php70 php70-php-fpm php70-php-mbstring php70-php-mcrypt php70-php-gd
    
  3. 修改 php-fpm 設定檔:
    #vim /etc/opt/remi/php70/php-fpm.d/www.conf
    user = nginx
    group = nginx
    listen = /var/run/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0666
    
  4. 啟動 php-fpm 服務:
    # systemctl enable php70-php-fpm.service
    # systemctl start php70-php-fpm.service
    
  5. 修改 Nginx 設定檔:
    # vim /etc/nginx/conf.d/default.conf
    (修改下列設定:)
        access_log  /var/log/nginx/access.log  main;
        error_log /var/log/nginx/error.log warn;
        
        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }
    
        location ~ \.php$ {
            root           /usr/share/nginx/html;
        #    fastcgi_pass   127.0.0.1:9000;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        :
        :
    
  6. 動新啟動 nginx:
    #systemctl restart nginx.service
    
  7. 開啟 SELinux 設定:
    #setsebool -P httpd_can_network_connect on
    

2016年7月30日 星期六

在 CentOS7/RHEL7 上使用 Collectd 套件

設定目標:
  • 即時監控系統資源運作情形!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install collectd.x86_64 collectd-web collectd-rrdtool collectd-notify_email
    
  2. 啟動 Collectd 服務:
    #systemctl enable collectd
    #systemctl start collectd
    
  3. 複製 Collectd 的網頁檔案至網頁目錄:
    #cd /usr/share/nginx/html/
    #git clone https://github.com/pommi/CGP.git
    #mv CGP Collectd
    
  4. 打開 Firefox 查看網頁即可!
    # firefox http://localhost/Collectd
    
    ※注意:本次實作未考慮 SELinux 的影響!
  5. 若考慮 SELinux 的限制,需使用下列指令:
    #setenforce 0
    # grep php-fpm /var/log/audit/audit.log | audit2allow -M mypol
    # semodule -i mypol.pp
    # grep rrdtool /var/log/audit/audit.log | audit2allow -M mypol
    # semodule -i mypol.pp
    #setenforce 1
    
    ※注意:上述步驟需要不停的重試,直到網站運作正常為止!
Plugin套件快速設定流程:
※以收集 Nginx 連線資料為例:
  1. 安裝 Nginx for Collectd 套件:
    #yum -y install collectd-nginx
    
  2. 查詢 nginx 是否有支援 stub_status 模組:
    #nginx -V 2>&1 | sed 's,--,n--,g' | grep stub_status
    
  3. 修改 Collectd 設定檔:
    #vim /etc/collectd.d/nginx.conf
    <LoadPlugin nginx>
          URL "http://192.168.5.104/nginx_status?auto"
          User "nginx"
    #      Password "secret"
    #      CACert "/etc/ssl/ca.crt"
    </plugin>
    
    
  4. 修改 Nginx 設定檔:
    # vim /etc/nginx/conf.d/default.conf
    (追加設定:)
    location /nginx_status {
          stub_status on;
          access_log off;
          allow 192.168.4.0/23;
          deny all;
        }
    
    
  5. 重新啟動相關服務
    #systemctl restart collectd
    #systemctl restart nginx
    
  6. 設定 SELinux:
    #setsebool -P collectd_tcp_network_connect on
    
  7. 打開 firefox 查看結果!

參考文獻:

2016年7月29日 星期五

在 CentOS7/THEL7 上最佳化 Nginx Web Service

參考文獻:

  1. http://www.linuxde.net/2013/08/15150.html#comments
  2. https://blog.longwin.com.tw/2013/02/nginx-add-worker_connections-2013/

2016年7月26日 星期二

在 CentOS7/RHEL7 上安裝 MariaDB 10.1

快速設定流程:
  1. 編寫 yum 檔案:
    #vim /etc/yum.repos.d/MariaDB.repo
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    
  2. 安裝 MariaDB 10.1 套件:
    #yum install MariaDB-*
    
  3. 啟動 MariaDB :
    # systemctl enable mariadb
    # systemctl start mariadb
    
  4. 啟動防火牆設定:
    # firewall-cmd --permanent --add-service=mysql
    # firewall-cmd --reload
    
  5. 始初化 MariaDB 的 root 密碼:
    #  mysql_secure_installation
    
參考網址:
  • https://mariadb.com/kb/en/mariadb/yum/
  • 2016年7月25日 星期一

    在 CentOS7/RHEL7 上架設 Piwik

    設定目標:
    • 在 Centos 7 上安裝 Piwik 套件,監控 Web 主機網路流量!
      • 請參考這一篇的設定,架設好 Web Server!
      • 請參考這一篇的設定,架設好 Mariadb Server !
    快速設定流程:

    1. 上網抓下 piwik 套件:
      #wget https://builds.piwik.org/piwik.zip
      
    2. 解開 piwik 套件:
      #unzip piwik.zip
      
    3. 建立 piwik 快取目錄:
      # mkdir -p /var/www/html/piwik/tmp/cache/tracker/
      # chmod -R 777 /var/www/html/piwik/tmp/
      
    4. 利用 firefox 來進行安裝 piwik 的工作:
      #firefox 127.0.0.1/piwik
      

    5. 開始進行安裝畫面:

    6. 按照網頁上的要求,給予適當的設定:

    7. 輸入 MySQL 資料庫相關設定:

    8. 設定好資料庫相關資料後,會建行表格建立:

    9. 輸入管理者帳密:

    10. 輸入站台相關資料:

    11. Piwik 團隊提醒使用者,為了方便追踪流量,可以把下列程式,放入網頁程式入!如果需要用於大流量的網站,必須要求助 Piwik 團隊,他們會給予更快的程式碼!

    12. 安裝完成:

    13. 登入畫面的介面:

    參考文獻:

    1. https://piwik.org/docs/installation/

    2016年7月23日 星期六

    Linux 系統效能監控

    參考文獻:

    1. https://www.nagios.org/projects/
    2. http://www.brendangregg.com/linuxperf.html
    3. http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html
    4. https://en.wikipedia.org/wiki/List_of_performance_analysis_tools
    5. http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html
    6. http://www.drupal001.com/2012/07/system-monitor-collectd/
    7. http://www.tecmint.com/linux-performance-monitoring-with-collectl-tool/

    Nginx 的監控程式

    網路資源:

    1. https://www.datadoghq.com/blog/how-to-collect-nginx-metrics/
    2. https://www.datadoghq.com/blog/how-to-monitor-nginx/
    3. https://blog.serverdensity.com/monitor-nginx/
    4. https://easyengine.io/tutorials/nginx/status-page/
    5. https://www.scalyr.com/community/guides/how-to-monitor-nginx-the-essential-guide
    6. http://www.slideshare.net/serverdensity/how-to-monitor-nginx

    2016年7月8日 星期五

    在 CentOS7/RHEL7 上架設 Nginx Web Server(四)

    設定目標:
    • 設定 Nginx Web Server,架設 Reverse Proxy Server 服務!

    事前準備:
    • 請先參考這一篇文件,架設好 Nginx Web Server!

    快速設定流程:
    1. 編寫 Nginx 預設設定檔:
      #vi /etc/nginx/nginx.conf
      (註解以下設定:)
      # server {
         :
         :
      #  }
      
    2. 編寫 for proxy 的設定檔:
      #vi /etc/nginx/conf.d/proxy.conf
      upstream proxy {
          server 192.168.5.61:80;
      }
      
      server {
          listen      80 default;
          server_name www.example.com;
      
          access_log  /var/log/nginx/jenkins.access.log;
          error_log   /var/log/nginx/jenkins.error.log;
      
          proxy_buffers 16 64k;
          proxy_buffer_size 128k;
      
          location / {
              proxy_pass  http://proxy;
              proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
              proxy_redirect off;
      
              proxy_set_header    Host            $host;
              proxy_set_header    X-Real-IP       $remote_addr;
              proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header    X-Forwarded-Proto https;
          }
      }
      
    3. 啟動 Nginx :
      #systemctl enable nginx.service
      #systemctl start nginx.service
      
    4. 啟動防火牆:
      #firewall-cmd --permanent --add-service=http
      #firewall-cmd --reload
      

    參考文獻:

    1. https://www.nginx.com/resources/admin-guide/reverse-proxy/
    2. http://shazi.info/centos-6-%E5%BB%BA%E7%AB%8B-nginx-reverse-proxy/
    3. https://www.twstar.biz/43151.html
    4. http://icodding.blogspot.tw/2015/08/nginx.html
    5. https://snippetinfo.net/media/671/
    6. https://deviantengineer.com/2015/05/nginx-reverseproxy-centos7/
    7. https://www.rosehosting.com/blog/install-and-configure-jenkins-with-nginx-as-a-reverse-proxy-on-centos-7/

    2016年7月7日 星期四

    KVM 教學文件


    1. https://jerry2yang.wordpress.com/2011/11/24/%E4%BF%AE%E6%94%B9%E8%99%9B%E6%93%AC%E6%A9%9Fkvmqemu%E7%A1%AC%E9%AB%94%E8%A8%AD%E5%AE%9A-with-virsh-management-user-interface/
    2. http://blog.changyy.org/2013/10/linux-virsh-snapshot-kvm-ubuntu-1204.html
    3. http://linuxkvm.blogspot.tw/2011/05/linux-kvm_15.html
    4. http://www.lijyyh.com/2015/12/linux-kvm-set-up-linux-kvm.html
    5. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/App_Domain_Monitor_Socket.html
    6. http://chimerhapsody.blogspot.tw/2013/03/kvm-kernel-based-virtual-machine.html

    2016年7月6日 星期三

    用 CentOS7/RHEL7 架設 Redis Cluster Servers

    參考文獻:

    1. http://blog.csdn.net/dc_726/article/details/48552531
    2. http://redis.io/topics/replication
    3. https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04
    4. https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04

    2016年7月5日 星期二

    在 CentOS7/RHEL7 上安裝 Memcached 套件

    安裝前注意事項:
    • 基本 Web 站台設定,請參考這一篇文章!
    • 若想使用 Nginx 當 Web 運作平台,請參考這一篇文章!
    基本安裝流程 (在 Apache Web 平台上):
    1. 安裝 Memcached 套件:
      #yum install memcached
      
    2. 檢查設定檔內容:
      #vim /etc/sysconfig/memcached
      PORT="11211"         ##使用埠號 11211
      USER="memcached"
      MAXCONN="1024"       ##最大連線使用數
      CACHESIZE="512"       ##使用 512MB 記憶體
      OPTIONS=""
      
    3. 啟動 Memcached 套件:
      #systemctl enable memcached
      #systemctl start memcached
      
    4. 開啟防火牆設定:
      #firewall-cmd --permanent --add-port=11211/tcp
      #firewall-cmd --reload
      
    5. 讓 php 套件使用 memcached ,需安裝下列套件:
      #yum -y install php-pecl-memcache
      
    6. 重新啟動 Apache Web Server:
      #systemctl restart httpd
      

    在 Ngnix 平台上的應用:
    1. 修改 Nginx 設定檔:
      #vim /etc/nginx/conf.d/default.conf
      
      server {
         :
         (加入以下的設定值:)
         :
         location ^~ /cache/ {
              set            $memcached_key $request_uri;
              memcached_pass 127.0.0.1:11211;
          }
          :
          :
      }
      
    2. 重新啟動 Nginx :
      #systemctl restart nginx
      
    3. ※注意:參考資料~~~
      • http://nginx.org/en/docs/http/ngx_http_memcached_module.html
      • http://blog.octo.com/en/http-caching-with-nginx-and-memcached/
      • http://www.ttlsa.com/nginx/application-of-nginx_memcached-to-construct-the-page-cache/
      • http://www.icyfire.me/2014/11/30/use-nginx-and-memcached-to-cache-pages.html

    安裝 phpMemcachedAdmin 套件
    • 下載 phpMemcachedAdmin 套件:
      #cd /var/www/html
      #wget http://phpmemcacheadmin.googlecode.com/files/phpMemcachedAdmin-1.2.2-r262.tar.gz
      
    • 解壓縮 phpMemcachedAdmin 套件:
      #mkdir phpMemcachedAdmin
      #tar zxvf phpMemcachedAdmin-1.2.2-r262.tar.gz -C phpMemcachedAdmi
      
    • 設定相關權限:
      #chown -R apache.apache phpMemcachedAdmin
      #restorecon -R /var/www/html
      #setsebool -P httpd_can_network_memcache on
      #setsebool -P httpd_unified on
      #grep httpd /var/log/audit/audit.log | audit2allow -M http
      #semodule -i httpd.pp
      
    • 重新啟動 Apache Web Server:
      #systemctl restart httpd
      
    • 利用 Firefox 查看網頁:
      http://127.0.0.1/phpMemcachedAdmin/
    參考文獻:
    1. http://www.phpini.com/php/rhel-centos-7-install-php-memcached
    2. http://www.liquidweb.com/kb/how-to-install-the-memcached-php-extension-on-centos-7/
    3. http://www.liquidweb.com/kb/how-to-install-memcached-on-centos-7/
    4. https://devops.profitbricks.com/tutorials/install-and-configure-memcached-on-centos-7/
    5. http://blog.elijaa.org/phpmemcachedadmin-installation-guide/
    6. http://www.techoism.com/install-phpmemcachedadmin-on-linux/

    2016年7月4日 星期一

    XFS 檔案系統與 LVM

    LVM 的使用
    • 查看系統內容:
      #lvs
      #pvs
      #vgs
      

    參考資料:
    • http://jamyy.us.to/blog/2015/09/7673.html
    • http://dywang.csie.cyut.edu.tw/dywang/rhel7/node60.html

    2016年6月27日 星期一

    在 CentOS7/RHEL7 上安裝 Bootstrap 套件

    安裝前注意事項:
    • 基本 Web 站台設定,請參考這一篇文章!
    基本安裝流程:
    1. 安裝 EPEL 套件:
      #yum -y install epel-release
      
    2. 安裝 git 套件:
      #yum -y install git
      
    3. 由 GitHub 網站,下載 BootStrap 套件:
      #cd /var/www/html
      #git clone https://github.com/twbs/bootstrap.git
      
    4. 利用 Firefox 連到 BootStrap 起始網頁看看:
      http://127.0.0.1/bootstrap/docs/examples/starter-template/
    參考文獻:
    1. https://github.com/twbs/bootstrap
    2. https://gist.github.com/kmassada/73678d48dcf6b23b6f0a
    3. http://getbootstrap.com/
    4. https://kkbruce.tw/bs3/Gettingstarted

    2016年6月26日 星期日

    在 CentOS7/RHEL7 上架設 Redis Server

    基本安裝流程:
    1. 安裝 EPEL 套件:
      #yum -y install epel-release
      
    2. 安裝 redis 相關套件:
      #yum install -y redis
      
    3. 開啟防火牆設定:
      #firewall-cmd --permanent --add-port=6379/tcp
      #firewall-cmd --reload
      
    4. 啟動 Redis Server 服務:
      #systemctl enable redis.service
      #systemctl start redis.service
      
    5. 查詢開啟的 port 號:
      #netstat -antlp | grep redis
      
    6. 測試 Redis Server 服務:
      #rdis-cli ping
      
    7. ※重要設定檔:
      • /etc/redis.conf
      • /etc/redis-sentinel.conf

    基本設定:
    1. 修改登入密碼:
      #vim /etc/redis.conf
      (移除前方的註解符號)
      requirepass redhat
      
    2. 重新啟動 Redis Server 服務:
      #systemctl restart redis.service
      
    3. 再次測試 Redis Server 服務:
      #redis-cli -a 'redhat' -h 192.168.5.61 ping
      

    利用 PHP 連結 Redis Server:
    1. 安裝相關所需要的套件:
      #yum -y install http php php-mbstring php-mcrypt php-gd php-redis
      
    2. 重新啟動 Httpd Server 服務:
      #systemctl restart httpd.service
      
      ※注意::要開啟 Http Server 的防火牆設定:
      #firewall-cmd --permanent --add-service=http
      #firewall-cmd --reload
      

      ※注意::要開啟 SELinux 相關設定:
      #setsebool -P httpd_can_network_connect on
      
    3. 寫一支 PHP 的程式,測試是否可以運作 Redis :
      #vim /var/www/html/test.php
      (內容如下:)
      <?php
       $redis = new Redis();
       $redis->connect('127.0.0.1', 6379);
       $redis->set("foo", "bar");
       echo $redis->get("foo");
      ?>
      

    安裝 Redis Server 管理後台--phpRedisAdmin:
    1. 下載 phpRedisAdmin 套件:
      #git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git
      #cd phpRedisAdmin
      #git clone https://github.com/nrk/predis.git vendor
      
    2. 修改 phpRedisAdmin 連線設定:
      #cd includes/
      #cp config.sample.inc.php config.inc.php
      #vim config.inc.php
      (修改下列設定,並移去註解符號)
      'auth' => 'redhat'
      
    3. 開啟 Firefox ,輸入網址 http://127.0.0.1/phpRedisAdmin ,即可看見!

    將 php 的 session ,交給 Redis Server
    1. 修改 php.ini 檔案:
      #vim /etc/php.ini
      session.save_handler = redis
      session.save_path = "tcp://192.168.1.61:6379?weight=1"
      
    2. ※注意:http://blog.51yip.com/php/1616.html
    3. 重新啟動 httpd :
      #systemctl restart httpd
      
    參考文獻:
    1. https://magiclen.org/ubuntu-redis-php/
    2. https://bepsvpt.wordpress.com/2016/04/08/install-redis-and-deal-with-warning-message/
    3. https://laravel.tw/docs/5.1/redis
    4. http://www.runoob.com/redis/redis-tutorial.html
    5. http://ithelp.ithome.com.tw/articles/10105731
    6. http://kejyun.github.io/Laravel-4-Documentation-Traditional-Chinese/docs/redis/
    7. http://xyz.cinc.biz/2015/09/centos7-redis-php.html
    8. https://dotblogs.com.tw/supershowwei/2016/02/02/112238
    9. http://sharadchhetri.com/2014/10/04/install-redis-server-centos-7-rhel-7/
    10. https://github.com/erikdubbelboer/phpRedisAdmin
    11. https://bepsvpt.wordpress.com/2016/04/08/install-redis-and-deal-with-warning-message/

    2016年6月21日 星期二

    在 CentOS7/RHEL7 上架設 Vsftpd Server(二)

    安裝前注意事項:
    • 基本 MariaDB 安裝與設定,請參考這一篇文章!

    設定目標:
    • 利用 MariaDB 來管理 Vsftpd 的使用者!

    快速安裝流程:
    1. 安裝 EPEL 套件:
      #rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
    2. 安裝 vsftpd 相關套件:
      #yum install -y vsftpd-*
      
    3. 在 mariadb 裡,建立給 vsftpd 專用的資料庫與資料表:
      #mysql -u root -p
      MariaDB [(none)]> CREATE DATABASE vsftpd;
      MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'a123456';
      MariaDB [(none)]> FLUSH PRIVILEGES;
      MariaDB [(none)]> USE vsftpd;
      MariaDB [vsftpd]> CREATE TABLE `accounts` )
          -> `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
          -> `username` VARCHAR(100) NOT NULL,
          -> `pass` VARCHAR(200) NOT NULL,
          -> UNIQUE (`username`)
          -> )ENGINE=InnoDB, CHARSET=utf8;
      MariaDB [vsftpd]> quit;
      
    4. 新增一個實機使用者,用來配合 vsftpd 運作:
      #groupadd nogroup
      #useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
      
    5. 編輯 vsftpd 設定檔:
      #vim /etc/vsftpd/vsftpd.conf
      (修改或是新增下列設定參數:)
      anonymous_enable=NO
      nopriv_user=vsftpd
      chroot_local_user=YES
      secure_chroot_dir=/var/run/vsftpd
      rsa_cert_file=/etc/ssl/certs/vsftpd.pem
      guest_enable=YES
      guest_username=vsftpd
      local_root=/home/vsftpd/$USER
      user_sub_token=$USER
      virtual_use_local_privs=YES
      user_config_dir=/etc/vsftpd/vsftpd_user_conf
      
    6. 建立各別使用者的設定檔目錄:
      #mkdir /etc/vsftpd/vsftpd_user_conf
      #mkdir /var/run/vsftpd
      
    7. 設定 vsftpd 的 PAM 模組,使 vsftpd 在建立連線時,讀取資料庫內容:
      #cd /etc/pam.d
      #cp vsftpd /root/vsftpd.pam
      #cat /dev/null > vsftpd
      #vim vsftp
      (輸入下列兩行內容)
      auth required pam_mysql.so user=vsftpd passwd=a123456 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
      account required pam_mysql.so user=vsftpd passwd=a123456 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
      
    8. 開啟防火牆:
      #firewall-cmd --permanent --add-service=ftp
      #firewall-cmd --reload
      
    9. 設定 SELinux:
      #setsebool -P ftp_home_dir on
      #setsebool -P ftpd_connect_db on
      #setsebool -P ftpd_full_access on
      #setsebool -P ftpd_use_passive_mode on
      
    10. 啟動 vsftpd 服務:
      #systemctl enable vsftpd.service
      #systemctl start vsftpd.service
      
    11. 使用 TLS 通訊用的密鑰對:
      #mkdir -p /etc/ssl/private
      #chmod 700 /etc/ssl/private
      #openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
      
    12. 重新編寫 vsftpd 設定檔:
      #vim /etc/vsftpd/vsftpd.conf
      (增加下列設定:)
      ssl_enable=YES
      force_local_data_ssl=YES
      force_local_logins_ssl=YES
      ssl_tlsv1=YES
      ssl_sslv2=NO
      ssl_sslv3=NO
      require_ssl_reuse=NO
      ssl_ciphers=HIGH
      rsa_cert_file=/etc/ssl/private/vsftpd.pem
      
    13. 重新啟動 vsftpd 服務:
      #systemctl restart vsftpd.service
      
    14. 建立 vsftpd 虚擬使用者:
      #mysql -u vsftpd -p
      MariaDB [(none)]> use vsftpd;
      MariaDB [vsftpd]> INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
      MariaDB [vsftpd]> quit;
      
    15. 建立虚擬使用者家目錄:
      #mkdir /home/vsftpd/testuser
      #chown vsftpd:nogroup /home/vsftpd/testuser
      #chmod a-w /home/vsftpd/testuser
      #restorecon -R /home
      
    缺 pam_mysql.so 模組:
    1. 利用 git 下載 pam_mysql 模組:
      #mkdir /root/pam_mysql
      #cd /root/pam_mysql
      #git clone https://github.com/NigelCunningham/pam-MySQL
      
    2. 編譯 pam_mysql 模組:
      #cd pam-MySQL/
      #yum install make gcc-c++ autoconf automake libtool rpm-build pam-devel mariadb-devel
      #./configure --with-pam-mods-dir=/usr/lib64/security --with-mysql=/bin/mysql --with-pam=/lib64/security
      
    參考文獻:
    1. https://www.howtoforge.com/tutorial/virtual-hosting-with-vsftpd-and-mysql-on-ubuntu-15.10/
    2. https://wiki.centos.org/zh-tw/HowTos/VirtualVsFtpd
    3. https://access.redhat.com/solutions/3436

    在 CentOS7/RHEL7 上架設 Vsftpd Server(一)

    基本安裝流程:
    1. 安裝 EPEL 套件:
      #rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
    2. 安裝 vsftpd 相關套件:
      #yum install -y vsftpd-*
      
    3. 編輯 vsftpd 設定檔:
      #vim /etc/vsftpd/vsftpd.conf
      修改下列設定參數:
      anonymous_enable=NO   ##防止暱名登入
      
    4. 修改防火牆設定:
      #firewall-cmd --permanent --add-service=ftp
      #firewall-cmd --reload
      
    5. 設定啟動 vsftpd 服務:
      #systemctl enable vsftpd
      #systemctl start vsftpd
      
    基本測試流程:
    1. 安裝 ftp 套件:
      #yum install -y ftp
      
    2. 使用 ftp 指令:
      #ftp 10.1.1.1
      
      (輸入帳密之後,應該看下列指令提示字元)
      ftp>
      ftp>dir
      ftp> put test.txt
      

    2016年6月19日 星期日

    在 CentOS7/RHEL7 上架設 Git Server

    設定目標:
    • 在 Linux 上架設 Git Server ,方便專案開發的軟體可以管控軟體版本!
    • 事先準備事項:
      • 參考
    快速設定流程:
    1. 利用 YUM 安裝 git 相關套件:
      #yum -y install git
      
    2. 建立一個帳號 git ,提供 git 上傳檔案用:
      #useradd -m -d /opt/git git
      #passwd git
      
    3. 切換至 git 帳號,建立一個測試用的專案:
      #su - git
      $mkdir test1
      $cd test1
      $git init --bare
      
    4. 在自己的本機 (Client 機) 上,建立一個 RSA key ,提供上傳檔案到 Git Server 用:
      $ssh-keygen -t rsa
      $ssh-copy-id -i ~/.ssh/id_dsa.pub git@gitserver
      
      測試:
      $ssh git@gitserver
      
    5. 在自己的本機上,先行進行設定:
      $git config --global user.email "test@localhost"
      $git config --global user.name "test"
      
    6. 在自己的本機上,下載剛才建立的專案來測試 Git Server:
      $cd ~
      $git clone git@gitserver:/opt/git/test1
      $cd test1
      $touch test1.txt
      $git add test1.txt
      $git commit -m "test server"
      $git push origin master
      
    7. 測試成功之後,可以將 Server 上的 git 帳號,進行功能上的限制:
      #usermod -s /bin/git-shell git
      
    參考文獻:
    1. http://shazi.info/centos-%E5%AE%89%E8%A3%9D-git-server-%E5%85%B1%E4%BA%AB-repository-%E9%81%94%E5%88%B0%E5%A4%9A%E4%BA%BA%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83/
    2. http://wznote.blogspot.tw/2014/09/instal-git-server-in-centos.html
    3. http://blog.feehi.com/linux/124.html

    2016年6月15日 星期三

    在 CentOS7/RHEL7 上使用 WINE 玩遊戲

    設定目標:
    • 使用 WINE 玩 Windows 平台上的遊戲!
    • 事先準備事項:
      • 參考
    快速設定流程:
    1. 更新 yum 相關套件:
      #yum clean all
      #yum update
      
    2. 安裝開發用工具:
      #yum groupinstall 'Development Tools'
      #yum install libX11-devel freetype-devel zlib-devel libxcb-devel
      
    3. 準備自行安裝 WINE 套件:
      #cd /usr/src
      #wget http://dl.winehq.org/wine/source/1.9/wine-1.9.9.tar.bz2
      #tar xjf wine-1.9.9.tar.bz2
      
    4. 安裝 WINE 套件:
      #cd wine-1.9.9
      #./configure  --enable-win64
      # make
      # make install
      
    5. 執行 WINE 套件:
      #wine64 --version
      #wine putty.exe
      
    參考文獻:
    1. http://tecadmin.net/steps-install-wine-centos-rhel-fedora-systems/#
    2. https://appdb.winehq.org/objectManager.php?sClass=version&iId=19141

    在 CentOS7/RHEL7 上架設 Steam OS

    設定目標:
    • 使用 Steam OS 架設 Linux 上的遊戲下載、管理平台!
    • 事先準備事項:
      • 參考
    Master 快速設定流程:
    1. 安裝 dnf 相關套件:
      #yum install dnf
      
    參考文獻:
    1. http://negativo17.org/steam-for-centos-rhel-7/
    2. http://negativo17.org/steam/

    2016年6月9日 星期四

    在 CentOS7/RHEL7 上安裝設定 Power DNS (二)

    設定目標:
    • 架設 Power DNS 的 Master & Slave Server 備援機制!
    • 事先準備事項:
      • Power DNS 服務設定,請參考這一篇的設定!
    Master 快速設定流程:
    1. 參考事先準備事項,完成 Power DNS Server 的架設!
    2. 修改設定檔內容:
      #cp /etc/pdns/pdns.conf /etc/pdns/pdns.conf.orig
      #vim /etc/pdns/pdns.conf
      allow-recursion=192.168.5.0/0
      allow-axfr-ips=192.168.5.11/32
      config-dir=/etc/pdns
      daemon=yes
      disable-axfr=no
      guardian=yes
      local-address=0.0.0.0
      local-port=53
      log-dns-details=on
      log-failed-updates=on
      loglevel=4
      master=yes
      slave=no
      setgid=pdns
      setuid=pdns
      socket-dir=/var/run
      version-string=powerdns
      include-dir=/etc/pdns/pdns.d
      
    3. 重新啟動 Power DNS Server:
      #systemctl restart pdns
      

    Slave 快速設定流程:
    1. 參考事先準備事項,完成 Power DNS Server 的架設!(不用安裝 phpPowerAdmin)
    2. 修改設定檔內容:
      #cp /etc/pdns/pdns.conf /etc/pdns/pdns.conf.orig
      #vim /etc/pdns/pdns.conf
      allow-recursion=0.0.0.0/0
      config-dir=/etc/pdns
      daemon=yes
      disable-axfr=yes
      guardian=yes
      local-address=0.0.0.0
      local-port=53
      log-dns-details=on
      log-failed-updates=on
      loglevel=4
      master=no
      slave=yes
      slave-cycle-interval=60
      setgid=pdns
      setuid=pdns
      socket-dir=/var/run
      version-string=powerdns
      include-dir=/etc/pdns/pdns.d
      
    3. 在 MySQL 內,增加下列表格:(有發現錯誤時才做!)
      #mysql -u powerdns -p
      MariaDB [(none)]> use powerdns;
      MariaDB [powerdns]>CREATE TABLE `domainmetadata` (
                         `id` int(11) NOT NULL AUTO_INCREMENT,
                         `domain_id` int(11) NOT NULL,
                         `kind` varchar(16) DEFAULT NULL,
                         `content` text,
                         PRIMARY KEY (`id`)
                         ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
    4. 登入 MySQL ,增加 supermaster 設定值:
      #mysql -u powerdns -p
      MariaDB [(none)]> use powerdns;
      MariaDB [powerdns]> insert into supermasters values('192.168.5.1','dns1.example.tw','admin');
      MariaDB [powerdns]> exit;
      
    5. 重新啟動 Power DNS Server:
      #systemctl restart pdns
      

    參考文獻:
    1. https://www.digitalocean.com/community/tutorials/how-to-configure-dns-replication-on-a-slave-powerdns-server-on-ubuntu-14-04
    2. https://www.benjaminfleckenstein.name/en/powerdns-master-slave-howto.html
    3. http://www.debiantutorials.com/installing-powerdns-as-supermaster-with-slaves/
    4. http://jpmens.net/2013/02/13/automatic-provisioning-of-slave-dns-servers/
    5. https://doc.powerdns.com/md/authoritative/modes-of-operation/

    2016年6月6日 星期一

    在 CentOS7/RHEL7 上架設 PXE 系統(二)

    設定目標:
    • 利用 PXE 系統,提供無硬碟 Linux 作業系統!
    • 利用 PXE 系統,提供無硬碟 Windows 作業系統!
    注意事項:
    • 基本 PXE 系統設定,請參考這一篇文章!

    快速設定流程(Linux):
    1. 利用 yum 安裝 tftp Server、DHCP Server、Vsftp Server 以及 syslinux 等套件:
      #yum install tftp-server dhcp syslinux vsftpd
      
    快速設定流程(Windows):
    1. 利用 yum 安裝 tftp Server、DHCP Server、Vsftp Server 以及 syslinux 等套件:
      #yum install tftp-server dhcp syslinux vsftpd
      

    參考文獻:
    1. http://www.tecmint.com/configure-pxe-server-to-install-windows-on-centos/
    2. http://www.tecmint.com/installing-windows-7-over-pxe-network-boot-in-centos/
    3. https://technet.microsoft.com/zh-tw/library/dd744541(v=ws.10).aspx
    4. https://technet.microsoft.com/en-us/library/cc730907(v=ws.10).aspx#Capture
    5. http://www.sandeploy.com/solutions/PXE-iSCSI-BOOT-SAN/Pxe-Boot-Windows/iSCSI-PXE-Boot-Windows-7.php
    6. http://silent.gumph.org/content/4/7/071-diskless-windows-pxe.html
    7. https://www.youtube.com/watch?v=tTJUWIj3Ikg
    8. https://jonmccune.wordpress.com/2011/12/19/diskless-windows-7-with-iscsi-and-gpxe/
    9. https://blogs.technet.microsoft.com/storageserver/2011/05/03/diskless-servers-can-boot-and-run-from-the-microsoft-iscsi-software-target-using-a-regular-network-card/

    RHEL7上的 OpenStack (十三)--善用 Ceph Storage 服務(二)

    Ceph 佈署與設定:
    設定目標:

    快速佈署流程:
    1. 利用 yum 安裝
      #yum -y install ceph-deploy
      

    參考文獻:

    1. http://www.server-world.info/en/note?os=CentOS_7&p=ceph
    2. http://linoxide.com/storage/setup-red-hat-ceph-storage-centos-7-0/
    3. http://ilkerdagli.info/?p=40

    RHEL7上的 OpenStack (十三)--善用 Ceph Storage 服務(一)

    Ceph 簡介:
    • Ceph 存取方法圖:


    • Ceph 被設計成可彈性調整的儲存系統,可應付不同需求的儲存方式!
    • Ceph 架構包含下列幾個架構:
      • Master server:
      • Nodes:
      • Front end server:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. https://wiki.centos.org/HowTos/PXE

    2016年5月29日 星期日

    在 CentOS7/RHEL7 上架設 PXE 系統(一)

    設定目標:
    • 在 Centos 7 上安裝設定 PXE 服務!
    • 利用 PXE 系統,提供安裝 Linux OS 服務!
    快速設定流程:
    1. 利用 yum 安裝 tftp Server、DHCP Server、Vsftp Server 以及 syslinux 等套件:
      #yum install tftp-server dhcp syslinux vsftpd
      
    2. 設定 DHCP Server:(可參考這一篇設定)
      #vim /etc/dhcp/dhcpd.conf
      (編寫下列內容即可!)
      ### 基本設定 ###
      ddns-update-style interim;
      ignore client-updates;
      authoritative;
      allow booting;
      allow bootp;
      allow unknown-clients;
      
      ### 想要配發的網路 IP 位址 ###
      subnet 192.168.4.0 netmask 255.255.254.0 {
        range 192.168.4.110 192.168.4.120;
        option domain-name-servers 8.8.8.8;
        option domain-name "example.com";
        option routers 192.168.5.254;
        option broadcast-address 192.168.5.255; #not important
        default-lease-time 86400;
        max-lease-time 86400;
      
      ### PXE SERVER IP 位置 ###
        next-server 192.168.5.104; #  DHCP server ip
        filename "pxelinux.0";
      }
      
      
    3. 修改 tftp 套件內容:
      #cd /usr/lib/systemd/system
      #cp tftp.service /root/tftp.service.orig
      #vim tftp.service
      [Unit]
      Description=Tftp Server
      Requires=tftp.socket
      Documentation=man:in.tftpd
      
      [Service]
      ExecStart=/usr/sbin/in.tftpd -s /tftpboot  ##修改本行至合適的目錄
      StandardInput=socket
      
      [Install]
      Also=tftp.socket
      
    4. 建立 tftpboot 目錄:
      #mkdir /tftpboot
      
    5. 修改 SELinux 相關設定:
      #semanage fcontext -a -t public_content_t "/tftpboot(/.*)?"
      #restorecon -F -R -v /tftpboot
      
    6. 將必要的 syslinux 檔案,複製到 tftp Server 分享目錄內:
      #cd /usr/share/syslinux
      #cp pxelinux.0 menu.c32 memdisk mboot.c32 chain.c32 /tftpboot/
      #chmod 644 -R /tftpboot
      #chmod 755 /tftpboot
      #restorecon -F -R -v /tftpboot
      
    7. 在 tftp Server 目錄內,建立可提供 Linux 開機核心的目錄:
      #mkdir /tftpboot/pxelinux.cfg
      #mkdir -p /tftpboot/netboot/
      #restorecon -R -F -v /tftpboot/
      
    8. 將 Linux OS ISO 檔案內容,複製到 vsftp 分享目錄上:
      #mount linux.iso /mnt
      #cp -R /mnt/* /var/ftp/pub
      
    9. 將 Linux PXE 開機核心檔案,放置於 tftp Server 分享目錄上:
      #cd /var/ftp/pub/images/pxeboot
      #cp vmlinuz initrd.img /tftpboot/netboot/
      #restorecon -R -F -v /tftpboot/netboot/
      
    10. 將 Linux Kstart 檔案,複製到/var/ftp/pub 目錄下:
      #cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
      #chmod 644 /var/ftp/pub/ks.cfg
      #restorecon -R -F -v /var/ftp/pub/
      
    11. 編寫 PXE Server 開機選單:
      #vim /tftpboot/pxelinux.cfg/default
      default menu.c32
      prompt 0
      timeout 30
      MENU TITLE example.com PXE Menu
      LABEL CentOS7_x64
      MENU LABEL CentOS 7.2 X86_64
      KERNEL /netboot/vmlinuz
      APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.5.104/pub ks=ftp://192.168.5.104/pub/ks.cfg
      
    12. 啟動各項服務:
      #systemctl enable vsftpd
      #systemctl start vsftpd
      #systemctl enable tftp
      #systemctl start tftp
      #systemctl daemon-reload
      #systemctl enable dhcpd
      #systemctl start dhcpd
      
    13. 開啟防火牆設定:
      #firewall-cmd --permanent --add-service=dhcp
      #firewall-cmd --permanent --add-service=ftp
      #firewall-cmd --permanent --add-service=tftp
      #firewall-cmd --reload
      

    參考文獻:

    1. https://www.unixmen.com/install-pxe-server-and-configure-pxe-client-on-centos-7/
    2. https://www.unixmen.com/install-pxe-server-centos-7/
    3. http://www.tecmint.com/configure-pxe-server-to-install-windows-on-centos/
    4. http://www.tecmint.com/installing-windows-7-over-pxe-network-boot-in-centos/
    5. https://technet.microsoft.com/zh-tw/library/dd744541(v=ws.10).aspx
    6. https://technet.microsoft.com/en-us/library/cc730907(v=ws.10).aspx#Capture
    7. http://www.sandeploy.com/solutions/PXE-iSCSI-BOOT-SAN/Pxe-Boot-Windows/iSCSI-PXE-Boot-Windows-7.php
    8. http://silent.gumph.org/content/4/7/071-diskless-windows-pxe.html

    在 CentOS7/RHEL7 上設定 RAID 磁碟陣列系統

    設定目標:
    • 在 Centos 7 上安裝設定 RAID 服務!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. https://wiki.centos.org/HowTos/SoftwareRAIDonCentOS5

    在 CentOS7/RHEL7 上架設 OpenStack Server

    設定目標:
    • 在 Centos 7 上安裝 OpenStack Mitaka 版本套件!
    • 安裝 OpenStack 基本 Nova、Glance、Nuetron元件套件!
    • 安裝 OpenStack 基本 RabbitMQ 套件,提供 keystone 服務!
    OpenStack Mitaka 安裝流程:
    1. 設定 yum 的 repo 檔案:
      #vim /etc/yum.repos.d/CentOS-OpenStack.repo
      [OpenStack]
      name= CentOS 7 OpenStack Mitaka
      baseurl=ftp://ftp.stu.edu.tw/Linux/CentOS/7.2.1511/cloud/x86_64/openstack-mitaka/
      enabled=1
      gpgcheck=0
      
    2. 安裝 openstack-packstack 套件:
      # yum -y install openstack-packstack
      
    3. 停止使用 Network Manager 套件:
      #systemctl disable NetworkManager
      #systemctl stop NetworkManager
      #systemctl enable network
      #systemctl start network
      
    4. 產生 answer-file ,方便以後的設定:
      # packstack --gen-answer-file /root/answer.txt
      CONFIG_DEFAULT_PASSWORD=secret
      CONFIG_SWIFT_INSTALL=n
      CONFIG_HEAT_INSTALL=y
      CONFIG_NTP_SERVERS=211.22.103.158
      CONFIG_KEYSTONE_ADMIN_PW=secret
      CONFIG_CINDER_VOLUMES_CREATE=y
      CONFIG_LBAAS_INSTALL=y
      CONFIG_NEUTRON_FWAAS=y
      CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan
      CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan
      CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:1:1000
      CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1
      CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-eth1:enp0s3
      CONFIG_HORIZON_SSL=y
      CONFIG_PROVISION_DEMO=n
      
    5. 執行 OpenStack 套件安裝:
      # packstack --answer-file /root/answer.txt
      
      ※若發生 DB 編輯錯誤:
      1. 移除 Mariadb Database 套件:
        # yum -y erase mariadb-*
        
      2. 重新安裝 Mariadb Database Server 套件:
        # yum -y erase mariadb-server
        

    參考文獻:
    1. https://www.gitbook.com/book/kairen/openstack-centos/details
    2. https://kairen.gitbooks.io/openstack-centos/content/conceptions/index.html

    在 CentOS7/RHEL7 上架設 MySQL Replication Server

    設定目標:
    • 在 Centos 7 上安裝 MySQL Master/Slave Server,Master 可以利用 Replication 技術,複製資料到 Slave 上!
    • 在 Centos 7 上安裝 MySQL Master/Master Server,Master 可以利用 Replication 技術,複製資料到 Master 上!
      • 請參考這一篇的設定,架設好 MySQL Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. http://www.server-world.info/en/note?os=CentOS_7&p=mariadb&f=3

    2016年5月28日 星期六

    在 CentOS7/RHEL7 上使用 KVM 虚擬化技術

    設定目標:
    • 在 Centos 7 上安裝 KVM 套件!
    • 利用 KVM,新增虚擬主機!
    • 架設一部 NFS Server 以及另一部 KVM 主機,活體移動虚擬主機!
      • 請參考這一篇的設定,架設好 Web Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. http://www.server-world.info/en/note?os=CentOS_7&p=kvm&f=1
    2. http://www.server-world.info/en/note?os=CentOS_7&p=kvm
    3. http://www.itzgeek.com/how-tos/linux/centos-how-tos/install-kvm-qemu-on-centos-7-rhel-7.html

    在 CentOS7/RHEL7 上架設 Nginx Web Server(一)

    設定目標:
    • 在 Centos 7 上架設 Nginx Web Server!
    Nginx Web Server 快速設定流程:
    1. 編寫最新的 Nginx 套件位置:
      #vim /etc/yum.repos.d/nginx.repo
      [nginx]
      name=nginx repo
      baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
      gpgcheck=0
      enabled=1
      
    2. 利用 yum 安裝
      #yum -y install nginx
      
    3. 啟動防火牆:
      #firewall-cmd --permanent --zone=public --add-service=http
      #firewall-cmd --permanent --zone=public --add-service=https
      #firewall-cmd --reload
      
    4. 啟動 Nginx:
      #systemctl enable nginx.service
      #systemctl start nginx
      

    讓 Nginx 加入 php 模組:
    1. 利用 yum 安裝
      #yum -y install php-fpm
      
    2. 編寫 php-fpm 預設檔:
      #vim /etc/php-fpm.d/www.conf
      user = nginx
      group = nginx
      
    3. 啟動 php-ftm 功能:
      #systemctl enable php-fpm.service
      #systemctl start php-fpm
      
    4. 編寫 Nginx 預設檔:
      #vim /etc/nginx/conf.d/default.conf
      (修改下列項目:)
       location ~ \.php$ {
              root           /usr/share/nginx/html;
              fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
       location ~ /\.ht {
              deny  all;
          }
      
    5. 重新啟動 Nginx:
      #systemctl restart nginx
      
    6. 改成 Socket 的使用方式:
      #vim /etc/sysconfig/memcached
      OPTIONS="-s /tmp/memcached.sock -a 666"
      #MEMCACHED_ARGS="-s /tmp/memcached.sock -a 666"
      
    7. 檢查一下成果:
      #echo stats | nc -U /tmp/memcached.sock
      
    8. 修改 memcached.ini 設定檔內容:
      #/etc/php/conf.d/memcached.ini
      extension=memcached.so
      session.save_handler="memcached"
      session.save_path="/tmp/memcached.sock"
      
    9. 編修 Nginx 預設檔:
      #vim /etc/nginx/conf.d/default.conf
      server {
         :
      (加入以下內容:)
         location ^~ /cache/ {
                 set            $memcached_key $request_uri;
                 #memcached_pass 127.0.0.1:11211;
                 memcached_pass unix:/tmp/memcached.sock;
          }
          :
      
    10. 重新啟動 Nginx:
      #systemctl restart nginx
      

    參考文獻:

    1. https://www.howtoforge.com/tutorial/install-nginx-with-php-and-mysql-lemp-stack-on-centos/
    2. http://blog.itist.tw/2016/01/installing-lemp-stack-with-centos-7-nginx-mariadb-php-7.html
    3. http://www.phpini.com/linux/rhel-centos-7-install-nginx-mysql-php-lemp
    4. http://www.server-world.info/en/note?os=CentOS_7&p=nginx&f=1
    5. https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-centos-7

    2016年5月27日 星期五

    在 CentOS7/RHEL7 上架設 HTTP 負載平衡系統

    設定目標:
    • 在 Centos 7 上架設 HAProxy Server,將流量分配至後方的多個 Web 站台!
    • 後方的 Web 站台,不拘任何套件平台,可以是 Apache 也可以是 Nginx!
      • 請參考這一篇的設定,架設好 Web Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. http://www.server-world.info/en/note?os=CentOS_7&p=haproxy&f=1

    在 CentOS7/RHEL7 上架設 MRTG 主機網路流量監控系統

    設定目標:
    • 在 Centos 7 上安裝 MRTG 系統,監控主機網路流量!
      • 請參考這一篇的設定,架設好 Web Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. http://www.server-world.info/en/note?os=CentOS_7&p=mrtg&f=1

    在 CentOS7/RHEL7 上架設 Cacti 主機監控系統

    設定目標:
    • 在 Centos 7 上安裝 Cacti 套件,監控主機狀態!
      • 請參考這一篇的設定,架設好 Web Server!
      • 請參考這一篇的設定,架設好 Mariadb Database Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum -y install epel-release
      #yum -y update epel-release
      #yum -y upgrade
      #yum -y install httpd mariadb-server php php-mysql php-pear php-gd php-mbstring net-snmp net-snmp-utils rrdtool
      #yum -y install cacti
      
    2. 在 MariaDB 上,新增一組帳密/資料庫給 Cacti 使用:
      # mysql -u root -p
      MariaDB [(none)]> create database cacti;
      MariaDB [(none)]> grant all privileges on cacti.* to cacti@localhost identified by `你的密碼`;
      MariaDB [mysql]> exit;
      
    3. 匯入 cacti 資料表:
      #mysql -u cacti -p -A cacti < /usr/share/doc/cacti-0.8.8h/cacti.sql
      (沒錯誤訊息,表示正確!)
      
    4. 設定 Web Site 相關設定參數:
      #vim /etc/httpd/conf.d/cacti.conf
      Alias /cacti    /usr/share/cacti
      
      <Directory /usr/share/cacti/>
              <IfModule mod_authz_core.c>
                      # httpd 2.4
                      Require host localhost
                      Require all granted
              </IfModule>
              .........
      </Directory>
      
      
    5. 修改 Cacti 網頁設定檔:
      #vim /etc/cacti/db.php
      .........
      $database_username = "cacti";
      $database_password = "你的密碼";
      .........
      
    6. 修改 PHP 設定檔:
      #vim /etc/php.ini
      .........
      date.timezone = Asia/Taipei
      .........
      
    7. 修改 Crontab 設定檔:
      #vim /etc/cron.d/cacti
      (取消註解)
      */5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
      
    8. 啟動 Web 以及 Snmp 服務:
      #systemctl enable httpd
      #systemctl start httpd
      #systemctl enable snmpd
      #systemctl start snmpd
      
    9. 利用 firefox ,連線 cacti 網頁:
      #firefox http://localhost/cacti
      
      出現第一次登入頁面!

    10. 設定資料庫資料!

    11. 修正錯誤的地方,完成 cacti 設定:

    12. Cacti 登入畫面:

    13. PS:預設帳密 admin/admin
    14. 登入後,立即被要求改密碼:

    15. Very 寫意的畫面:

    參考文獻:


    1. http://www.server-world.info/en/note?os=CentOS_7&p=cacti&f=1

    在 CentOS7/RHEL7 上架設多個 PHP 版本的 Web Server

    設定目標:
    • 在 Centos 7 上安裝多個 php 版本的 Web Server!
    • Web Server 可以是 Apache 套件,也可以是 Nginx 套件!
      • 請參考這一篇的設定,架設好 Web Server!
    快速設定流程:
    1. 利用 yum 安裝
      #yum install 
      

    參考文獻:

    1. http://serverfault.com/questions/671400/multiple-versions-of-php-through-nginx
    2. http://www.server-world.info/en/note?os=CentOS_7&p=nginx&f=9
    3. https://www.digitalocean.com/community/tutorials/how-to-host-multiple-websites-securely-with-nginx-and-php-fpm-on-ubuntu-14-04
    4. https://serversforhackers.com/video/php-fpm-multiple-resource-pools
    5. https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10
    6. https://www.howtoforge.com/perfect-server-centos-7-x86_64-nginx-dovecot-ispconfig-3

    2016年5月23日 星期一

    在 CentOS7/RHEL7 上使用 PgAdmin III

    設定目標:
    • 利用 PgAdmin III 管理 PostgreSQL Server!
      • 請參考這一篇的設定,架設好 PostgreSQL Server!
    快速設定流程:
    1. 利用 yum 安裝 PgAdmin III:
      #yum install epel-release
      #yum install pgadmin3
      
    2. 利用 yum 安裝 PgAdmin III:
      #vim /var/lib/pgsql/data/pg_hba.conf
      (追加下列設定)
      host    all     all     192.168.5.244/32    md5
      
    3. 重新啟動 PostgreSQL Server:
      #su - postgres
      $pg_ctl restart
      
    4. 登入 X Window ,啟動 pgadmin3 :
      #pgadmin3 &
      
    5. 按下「插座」圖示,輸入相關 PostgreSQL Server 資訊、帳密,即可登入!

    2016年5月22日 星期日

    在 CentOS7/RHEL7 上架設多部 PostgreSQL

    設定目標:
    • 架設多部 PostgreSQL Server,並且設定 Replication 進行同步資料與備援!
    事前說明與準備:
    • PostgreSQL 基本安裝,請參考這一篇的設定!
    • 本篇將架設 9.4 版多部 PostgreSQL Server!一部 Pgpool-II,一部 Master Server 以及一部 Standby Server!
    • 示意圖如下:
      pgpool server: 192.168.100.241 pgs1 server: 192.168.100.231 pgs2 server: 192.168.100.232
    • 本篇將利用 repmgr 與 pgpool-II 來進行實作!

    (一)安裝前設定流程:
    1. 先製作 ssh 金鑰對,方便連線登入到各個 Server:
      [root@pgpool ~]#ssh-keygen -t rsa
      [root@pgs1 ~]# ssh-keygen -t rsa
      [root@pgs2 ~]# ssh-keygen -t rsa
      
    2. 將製作好的 ssh 公鑰,互相送到各個 Server:
      (pgpool Server 上的設定)
      [root@pgpool ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgs1
      [root@pgpool ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgs2
      
      (pgs1 Server 上的設定)
      [root@pgs1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgpool
      [root@pgs1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgs2
      
      (pgs2 Server 上的設定)
      [root@pgs2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgpool
      [root@pgs2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@pgs1
      
    3. 在各個 Server 上安裝 PostgreSQL 的 repo 檔案:
      [root@pgpool ~]#yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
      [root@pgs1 ~]# yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
      [root@pgs2 ~]# yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
      
      ※上述網址為 PostgreSQL 官方提供的網址!

    4. 提前先新增 postgres 使用者與群組,以利後續的操作:
      (製作 pgpool Server上的 postgres 使用者與群組)
      [root@pgpool ~]# mkdir /var/lib/pgsql
      [root@pgpool ~]# groupadd -r -g 26 postgres
      [root@pgpool ~]# useradd -r -u 26 -M -d /var/lib/pgsql -n -g postgres postgres
      [root@pgpool ~]# passwd postgres
      [root@pgpool ~]# chown postgres:postgres -R /var/lib/pgsql/
      
      (製作 pgs1 Server上的 postgres 使用者與群組)
      [root@pgs1 ~]# mkdir /var/lib/pgsql
      [root@pgs1 ~]# groupadd -r -g 26 postgres
      [root@pgs1 ~]# useradd -r -u 26 -M -d /var/lib/pgsql -n -g postgres postgres
      [root@pgs1 ~]# passwd postgres
      [root@pgs1 ~]# chown postgres:postgres -R /var/lib/pgsql/
      
      (製作 pgs2 Server上的 postgres 使用者與群組)
      [root@pgs2 ~]# mkdir /var/lib/pgsql
      [root@pgs2 ~]# groupadd -r -g 26 postgres
      [root@pgs2 ~]# useradd -r -u 26 -M -d /var/lib/pgsql -n -g postgres postgres
      [root@pgs2 ~]# passwd postgres
      [root@pgs2 ~]# chown postgres:postgres -R /var/lib/pgsql/
      
      
    5. 仿照 root 製作 ssh 公鑰對方式,互相送到各個 Server,以利將來登入設定:
      (製作 pgpool 上的 postgres 憑證,並送至其他 Server)
      [root@pgpool ~]# su - postgres
      -bash-4.2$ ssh-keygen -t rsa
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgs1
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgs2
      
      (製作 pgs1 上的 postgres 憑證,並送至其他 Server)
      [root@pgs1 ~]# su - postgres
      -bash-4.2$ ssh-keygen -t rsa
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgpool
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgs2
      
      (製作 pgs2 上的 postgres 憑證,並送至其他 Server)
      [root@pgs2 ~]# su - postgres
      -bash-4.2$ ssh-keygen -t rsa
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgs1
      -bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub postgres@pgpool
      
    6. 注意 SELinux 的修正:
      [root@pgpool ~]# /sbin/restorecon -vR /var/lib/pgsql/
      [root@pgs1 ~]# /sbin/restorecon -vR /var/lib/pgsql/
      [root@pgs2 ~]# /sbin/restorecon -vR /var/lib/pgsql/
      

    (二)在 Master 上安裝設定 PostgreSQL Server:
    ※Master Server 為本例的 pgs1 Server!
    1. 利用 YUM 安裝必要套件:
      #yum -y install postgresql94 postgresql94-server postgresql94-contrib rsync
      
    2. 安裝 repmgr 套件:
      #yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/repmgr94-3.1.2-1.rhel7.x86_64.rpm
      
      ※ repmgr 套件是用來監控 PostgreSQL Server 對其他 PostgreSQL Server 的 Replication 動作!
    3. 初始化 PostgreSQL Database:
      #/usr/pgsql-9.4/bin/postgresql94-setup initdb
      
    4. 編輯 PostgreSQL 連線設定檔:
      #vim /var/lib/pgsql/9.4/data/pg_hba.conf
      (只修改需要修改的部份)
      local   all             all                             trust
      host    all             all         127.0.0.1/32        md5
      host    all             all         ::1/128             md5
      host    repmgr          repmgr      192.168.100.231/32  trust
      host    replication     repmgr      192.168.100.231/32  trust
      host    repmgr          repmgr      192.168.100.232/32  trust
      host    replication     repmgr      192.168.100.232/32  trust
      host    all             pgpool      192.168.100.241/32  trust
      host    all             all         192.168.100.241/32  md5
      
    5. 編輯 PostgreSQL 設定檔:
      #vim /var/lib/pgsql/9.4/data/postgresql.conf
      (只修改需要用到的部份)
      listen_addresses = '*'
      max_connections = 200
      shared_buffers = 512MB
      effective_cache_size = 1536MB
      work_mem = 2621kB
      maintenance_work_mem = 128MB
      default_statistics_target = 100
      shared_preload_libraries = 'repmgr_funcs'
      wal_level = hot_standby
      wal_buffers = 16MB
      checkpoint_segments = 32
      checkpoint_completion_target = 0.7
      archive_mode = on
      archive_command = 'cd .'
      max_wal_senders = 1
      wal_keep_segments = 5000
      wal_sender_timeout = 1s
      hot_standby = on
      log_destination = 'stderr'
      logging_collector = on
      log_directory = 'pg_log' 
      log_filename = 'postgresql-%a.log' 
      log_truncate_on_rotation = on
      log_rotation_age = 1d
      log_rotation_size = 0
      log_min_duration_statement = 0
      log_checkpoints = on
      log_connections = on
      log_disconnections = on
      log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '
      log_lock_waits = on
      log_statement = 'all'
      log_temp_files = 0
      datestyle = 'iso, mdy'
      timezone = 'Europe/Brussels'
      lc_messages = 'en_US.UTF-8'
      lc_monetary = 'en_US.UTF-8'
      lc_numeric = 'en_US.UTF-8'
      lc_time = 'en_US.UTF-8'
      default_text_search_config = 'pg_catalog.english'
      
    6. 建立 repmgr 專用目錄:
      #su - postgres
      $ mkdir -p /var/lib/pgsql/repmgr/
      
    7. 編修 repmgr 設定檔:
      #vim /var/lib/pgsql/repmgr/repmgr.conf
      cluster=db_cluster
      node=1
      node_name=pgs1
      conninfo='host=pgs1 user=repmgr dbname=repmgr'
      pg_bindir=/usr/pgsql-9.4/bin/
      master_response_timeout=5
      reconnect_attempts=2
      reconnect_interval=2
      failover=manual
      promote_command='/usr/pgsql-9.4/bin/repmgr standby promote -f /var/lib/pgsql/repmgr/repmgr.conf'
      follow_command='/usr/pgsql-9.4/bin/repmgr standby follow -f /var/lib/pgsql/repmgr/repmgr.conf'
      
    8. 開啟防火牆:
      #firewall-cmd --permanent --add-service=postgresql
      #firewall-cmd --reload
      
    9. 啟動 PostgreSQL Server:
      #systemctl enable postgresql-9.4
      #systemctl start postgresql-9.4
      
    10. 建立 Replication 和 rempgr 的使用者,以及 rempgr 資料庫:
      #su - postgres
      $ psql
      postgres=# CREATE ROLE pgpool SUPERUSER CREATEDB CREATEROLE INHERIT REPLICATION LOGIN ENCRYPTED PASSWORD 'secret';
      postgres=# CREATE USER repmgr SUPERUSER LOGIN ENCRYPTED PASSWORD 'secret';
      postgres=# CREATE DATABASE repmgr OWNER repmgr;
      postgres=# \q
      
    11. 將 pgs1 Server 註冊成 rempgr 的 master node:
      #su - postgres
      $ /usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf master register
      

    (三)在 Standby 上安裝設定 PostgreSQL Server:
    ※Standby Server 為本例的 pgs2 Server!
    1. 在 Standby Server 上安裝 PostgreSQL Server:
      #yum -y install postgresql94 postgresql94-server postgresql94-contrib rsync
      
    2. 安裝 repmgr 套件:
      #yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/repmgr94-3.1.2-1.rhel7.x86_64.rpm
      
    3. 所有設定檔,可由同步 Master Server 取得:
      #su - postgres
      $/usr/pgsql-9.4/bin/repmgr -D /var/lib/pgsql/9.4/data -d repmgr -p 5432 -U repmgr -R postgres standby clone pgs1
      
    4. 建立 repmgr 專用目錄:
      #su - postgres
      $ mkdir -p /var/lib/pgsql/repmgr/
      
    5. 編修 repmgr 設定檔:
      #vim /var/lib/pgsql/repmgr/repmgr.conf
      cluster=db_cluster
      node=2
      node_name=pgs2
      conninfo='host=pgs2 user=repmgr dbname=repmgr'
      pg_bindir=/usr/pgsql-9.4/bin/
      master_response_timeout=5
      reconnect_attempts=2
      reconnect_interval=2
      failover=manual
      promote_command='/usr/pgsql-9.4/bin/repmgr standby promote -f /var/lib/pgsql/repmgr/repmgr.conf'
      follow_command='/usr/pgsql-9.4/bin/repmgr standby follow -f /var/lib/pgsql/repmgr/repmgr.conf'
      
    6. 開啟防火牆:
      #firewall-cmd --permanent --add-service=postgresql
      #firewall-cmd --reload
      
    7. 啟動 PostgreSQL Server:
      #systemctl enable postgresql-9.4
      #systemctl start postgresql-9.4
      
    8. 將 pgs2 Server 註冊成 rempgr 的 standby node:
      #su - postgres
      $ /usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby register
      

    (四)測試 PostgreSQL Server 的 Replication 功能:
    1. 在 Standby Server 上查詢 rempgr 的情況:
      #su - postgres
      $/usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf cluster show
      
      (顯示狀況如下:)
      Role      | Name | Upstream | Connection String
      ----------+------|----------|------------------------------------
      * master  | pgs1 |          | host=pgs1 user=repmgr dbname=repmgr
        standby | pgs2 | pgs1     | host=pgs2 user=repmgr dbname=repmgr
      
    2. 在 Standby Server 上查詢 PostgreSQL Database 的情況:
      $psql -U postgres -c "\list"
      
      (顯示狀況如下:)
                                        List of databases
         Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
      -----------+----------+----------+-------------+-------------+-----------------------
       postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
       repmgr    | repmgr   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
       template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres
       template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres
      (4 rows)
      
    3. 在 Master Server 上建立一個測試用資料庫:
      #su - postgres
      $psql -U postgres -c "CREATE DATABASE test"
      
    4. 在 Standby Server 上,再次查詢 PostgreSQL Database 的情況:
      $psql -U postgres -c "\list"
                                        List of databases
         Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
      -----------+----------+----------+-------------+-------------+-----------------------
       postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
       repmgr    | repmgr   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
       template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres
       template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres
       test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
      (5 rows)
      
      ※可以發現有新資料庫已經被複製過來了~~~
    5. 在 Standby Server 上,新增測試 database:
      $psql -U postgres -c "CREATE DATABASE test2"
      (顯示以下訊息:)
      ERROR:  cannot execute CREATE DATABASE in a read-only transaction
      

    (五)設定PgPool Server 功能:
    1. 在 PgPool Server上安裝需要套件:
      #yum install postgresql94 pgpool-II-94
      
    2. 從範例檔複製設定檔:
      #cp /etc/pgpool-II-94/pgpool.conf.sample-stream /etc/pgpool-II-94/pgpool.conf
      
    3. 編輯設定檔:
      #vim /etc/pgpool-II-94/pgpool.conf
      (只要新增或是編修下列設定參數即可:)
      listen_addresses = '*'
      port = 5432
      backend_hostname0 = 'pgs1'
      backend_port0 = 5432
      backend_weight0 = 1
      backend_data_directory0 = '/var/lib/pgsql/9.4/data'
      backend_flag0 = 'ALLOW_TO_FAILOVER'
      backend_hostname1 = 'pgs2'
      backend_port1 = 5432
      backend_weight1 = 1
      backend_data_directory1 = '/var/lib/pgsql/9.4/data'
      backend_flag1 = 'ALLOW_TO_FAILOVER'
      enable_pool_hba = on
      pid_file_name = '/var/run/pgpool-II-94/pgpool.pid'
      sr_check_user = 'pgpool'
      sr_check_password = 'secret'
      health_check_period = 10
      health_check_user = 'pgpool'
      health_check_password = 'secret'
      failover_command = '/etc/pgpool-II-94/failover.sh %d %H'  
      recovery_user = 'pgpool'
      recovery_password = 'secret'
      recovery_1st_stage_command = 'basebackup.sh'
      
    4. 編輯 failover.sh shell scripts 檔案:
      #vim /etc/pgpool-II-94/failover.sh
      #!/bin/sh
      failed_node=$1
      new_master=$2
      (
      date
      echo "Failed node: $failed_node"
      set -x
      /usr/bin/ssh -T -l postgres $new_master "/usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby promote 2>/dev/null 1>/dev/null <&-"
      exit 0;
      ) 2>&1 | tee -a /tmp/pgpool_failover.log
      
    5. 修改 failover.sh 檔案權限:
      #chmod 755 /etc/pgpool-II-94/failover.sh
      
    6. 編輯 pool_hba.conf 檔案:
      #vim /etc/pgpool-II-94/pool_hba.conf
      # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
      local   all         all                               trust
      host    all         all         127.0.0.1/32          trust
      host    all         all         ::1/128               trust
      host    all         all         0.0.0.0/0             md5
      
    7. 編輯 pool_passwd 檔案:
      #touch /etc/pgpool-II-94/pool_passwd
      #chown postgres:postgres /etc/pgpool-II-94/pool_passwd
      #su - postgres
      $pg_md5 -m -u pgpool secret
      
      ※可設定所有需要連結 pgpool 資料庫的使用者密帳!
    8. 利用 PCP 來連結管理 pgpool 功能:
      #echo "pgpool:$(pg_md5 secret)"| tee /etc/pgpool-II-94/pcp.conf
      
    9. 開啟防火牆:
      #firewall-cmd --permanent --add-service=postgresql
      #firewall-cmd --reload
      
    10. 啟動 PgPool Server:
      #systemctl enable pgpool-II-94
      #systemctl start pgpool-II-94
      

    11. (六)失效測試:

    參考文獻:

    1. http://blog.pulipuli.info/2015/06/postgresqlpgpool2-ha-structure-of.html
    2. http://www.pgpool.net/docs/latest/pgpool-en.html
    3. http://www.pgpool.net/docs/latest/pgpool-zh_cn.html
    4. http://jensd.be/591/linux/setup-a-redundant-postgresql-database-with-repmgr-and-pgpool
    5. https://www.keyup.eu/en/blog/89-replication-and-load-balancing-with-postgresql-and-pgpool2
    6. http://yum.postgresql.org/repopackages.php
    7. http://dz.sdut.edu.cn/blog/subaochen/2013/08/%E5%85%B3%E4%BA%8Epgpool-ii%E7%9A%84online-recovery/
    8. http://www.ahlinux.com/postgresql/9419.html
    9. http://linux.xvx.cz/2014/10/loadbalancing-of-postgresql-databases.html
    10. https://github.com/2ndQuadrant/repmgr/blob/master/README.md