1、部署分離的LAMP,部署到二臺服務(wù)器上,php加載xcache模塊
主機:兩臺CentOS7系統(tǒng)主機,一臺實現(xiàn)apache+php (node1:192.168.17.7),一臺實現(xiàn)mariadb (node2:192.168.17.17)
軟件:httpd-2.4.39.tar.bz2,php-7.3.12.tar.bz2,apr-1.7.0.tar.bz2,apr-util-1.6.1.tar.bz2,mariadb-10.2.25-linux-x86_64.tar.gz(二進制包),xcache-3.2.0.tar.gz,wordpress-5.2.2.tar.gz
因xcache-3.2.0不支持最新版的php-7.3.12,只支持到php5.6,所以在另一臺主機上(192.168.27.27)實現(xiàn)低版本php的安裝,以及xcache的編譯加載;
#安裝httpd與php服務(wù)
[root@centos7 ~]# yum install -y httpd php-devel php php-mysql gcc
#編譯安裝xcache
[root@centos7 ~]# ll xcache-3.2.0.tar.gz
-rw-r--r-- 1 root root 173368 Mar? 3 00:19 xcache-3.2.0.tar.gz
[root@centos7 ~]# tar -xf xcache-3.2.0.tar.gz
[root@centos7 ~]# cd xcache-3.2.0/
[root@centos7 xcache-3.2.0]# phpize --clean
Cleaning..
[root@centos7 xcache-3.2.0]# phpize
Configuring for:
PHP Api Version:? ? ? ? 20100412
Zend Module Api No:? ? ? 20100525
Zend Extension Api No:? 220100525
[root@centos7 xcache-3.2.0]# ./configure --enable-xcache
[root@centos7 xcache-3.2.0]# make && make install
[root@centos7 xcache-3.2.0]# cp xcache.ini /etc/php.d/
#編寫php測試頁面
[root@centos7 xcache-3.2.0]# vim /var/www/html/phpinfo.php
<?php
phpinfo();
?>

LAMP軟件包的編譯實現(xiàn)過程如下:
實現(xiàn)node2的mariadb服務(wù)
(1)下載mariadb-10.2.25的二制包 mariadb-10.2.25-linux-x86_64.tar.gz
[root@node2 ~]# ll mariadb*
-rw-r--r-- 1 root root 457955398 Nov 29 12:58 mariadb-10.2.25-linux-x86_64.tar.gz
(2) 新建mysql用戶和數(shù)據(jù)目錄
[root@node2 ~]# useradd -r -s /sbin/nologin mysql
[root@node2 ~]# mkdir /data/mysql
[root@node2 ~]# chown mysql:mysql /data/mysql
(3) 準(zhǔn)備二進制程序
[root@node2 ~]# tar -zxvf mariadb-10.2.25-linux-x86_64.tar.gz -C /usr/local/
[root@node2 ~]# cd /usr/local/
[root@node2 local]# ln -s mariadb-10.2.25-linux-x86_64/ mysql
[root@node2 local]# chown -R root:mysql /usr/local/mysql
(4) 準(zhǔn)備配置文件
[root@node2 mysql]# cd /usr/local/mysql/
[root@node2 mysql]# mkdir /etc/mysql
[root@node2 mysql]# cp support-files/my-huge.cnf /etc/mysql/my.cnf
[root@node2 mysql]# vim /etc/my.cnf
#在[mysqld]下添加以下四項
[mysqld]
datadir=/data/mysql
innodb_file_per_table=on
skip_name_resolve=on
character_set_server=utf8mb4? ? #設(shè)備字符集
(5) 初始化數(shù)據(jù)庫,生成數(shù)據(jù)庫文件
[root@node2 mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
(6) 準(zhǔn)備服務(wù)腳本,并啟動服務(wù)
[root@node2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node2 mysql]# systemcle enable mysqld
[root@node2 mysql]# systemctl start mysqld
(7)配置PATH環(huán)境變量
[root@node2 mysql]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@node2 mysql]# . /etc/profile.d/mysql.sh
(8) 安全加固,以上安裝后數(shù)據(jù)庫是沒有密碼的,可以使用安全初始化腳本修改密碼
[root@node2 mysql]# mysql_secure_installation
實現(xiàn)node1的apache服務(wù),編譯安裝httpd
(1) 準(zhǔn)備相關(guān)安裝包
[root@node1 data]# ll
total 33672
-rw-r--r-- 1 root root? 872238 Dec 13 17:37 apr-1.7.0.tar.bz2
-rw-r--r-- 1 root root? 428595 Dec 13 17:37 apr-util-1.6.1.tar.bz2
-rw-r--r-- 1 root root? 7030539 Dec 13 17:39 httpd-2.4.39.tar.bz2
-rw-r--r-- 1 root root 15006275 Nov 19 18:20 php-7.3.12.tar.bz2
-rw-r--r-- 1 root root 11133665 Dec 13 17:57 wordpress-5.2.2.tar.gz
(2) 解壓源碼包,并將 apr 和 apr-util 復(fù)制到 httpd 解壓包中一起編譯
[root@node1 data]# tar -xf apr-1.7.0.tar.bz2
[root@node1 data]# tar -xf apr-util-1.6.1.tar.bz2
[root@node1 data]# tar -xf httpd-2.4.39.tar.bz2
[root@node1 data]# mv apr-1.7.0 httpd-2.4.39/srclib/apr
[root@node1 data]# mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
(3) 先安裝相關(guān)依賴包
[root@node1 data]# yum install-y gcc pcre-devel openssl-devel expat-devel
(4) 開始編譯安裝
[root@node1 data]# cd httpd-2.4.39/
[root@node1 httpd-2.4.39]# ./configure \
> --prefix=/app/httpd24 \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-included-apr \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
[root@node1 httpd-2.4.39]# make && make install
(5) 創(chuàng)建apache用戶并修改配置文件中的啟動服務(wù)時所用的用戶和組,默認的用戶和組為 daemon
[root@node1 httpd-2.4.39]# useradd -r -s /sbin/nologin apache
[root@node1 httpd-2.4.39]# vim /app/httpd24/conf/httpd.conf
#找到以下兩項,修改用戶和組為apache
User apache
Group apache
(6) 配置PATH變量并啟動測試
[root@node1 httpd-2.4.39]# echo 'PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/http24.sh
[root@node1 httpd-2.4.39]# . /etc/profile.d/http24.sh
[root@node1 httpd-2.4.39]# apachectl start
[root@node1 httpd-2.4.39]# curl http://192.168.27.7
<html><body><h1>It works!</h1></body></html>
實現(xiàn)node1的php-fpm服務(wù),編譯安裝php-fpm
(1) 準(zhǔn)備安裝包
[root@node1 data]# ll php-7.3.12.tar.bz2
-rw-r--r-- 1 root root 15006275 Nov 19 18:20 php-7.3.12.tar.bz2
(2) 解壓源碼包,并進行編譯安裝
[root@node1 data]# tar -jxvf php-7.3.12.tar.bz2
[root@node1 data]# cd php-7.3.12/
[root@node1 data]# ./configure --prefix=/app/php \
> --enable-mysqlnd \
> --with-mysqli=mysqlnd \
> --with-pdo-mysql=mysqlnd \
> --with-openssl \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --with-config-file-path=/etc \
> --with-config-file-scan-dir=/etc/php.d \
> --enable-mbstring \
> --enable-xml \
> --enable-sockets \
> --enable-fpm \
> --enable-maintainer-zts \
> --disable-fileinfo
[root@node1 php-7.3.12]# make && make install
(3) 準(zhǔn)備配置文件,并修改?www.conf?配置文件中啟動用戶與組為 apache,默認用戶與組為 nobody
[root@node1 php-7.3.12]# cp php.ini-production /etc/php.ini
[root@node1 php-7.3.12]# cd /app/php/etc/
[root@node1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@node1 etc]# cd php-fpm.d/
[root@node1 php-fpm.d]# cp www.conf.default www.conf
[root@node1 php-fpm.d]# vim www.conf
#找到以下兩項,將nobody改為apache
user = apache
group = apache
(4) 準(zhǔn)備服務(wù)啟動腳本,并啟動 php-fpm 服務(wù)
[root@node1 php-fpm.d]# cd /data/php-7.3.12/
[root@node1 php-7.3.12]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@node1 php-7.3.12]# chmod +x /etc/init.d/php-fpm
[root@node1 php-7.3.12]# chkconfig --add /etc/init.d/php-
[root@node1 php-7.3.12]# service php-fpm start
Starting php-fpm? done
[root@node1 php-7.3.12]# ss -nlt|grep 9000
LISTEN? ? 0? ? ? 128? ? 127.0.0.1:9000?
(5) 修改 httpd 的配置文件,讓其支持 php
[root@node1 ~]# vim /app/httpd24/conf/httpd.conf
#取消下面兩個模塊的注釋
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#修改下面行,添加 index.php
<IfModule dir_module>
? ? DirectoryIndex index.php index.html
</IfModule>
#添加以下行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
#以下這行如果是單主機是必需加的,如要實現(xiàn)多虛擬主機,在虛擬主機配置中加即可
#ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
(6) 編寫一個php頁面,然后重啟apache服務(wù),通過瀏覽器訪問
http://192.168.17.27/phpinfo.php?測試php頁面能否正常訪問
[root@node1 ~]# vim /app/httpd24/htdocs/index.php
<?php
phpinfo();
?>
[root@node1 ~]# apachectl restart
2、部署wordpress論壇,并實現(xiàn)正常訪問登錄論壇。
(1) 在node1節(jié)點上 /app/httpd24/htdocs/ 創(chuàng)建多虛擬主機所需文件夾
[root@node1 ~]# mkdir /app/httpd24/htdocs/wordpress
(2) 繼續(xù)在 httpd.conf 文件中添加虛擬主機設(shè)置
[root@node1 ~]# vim /app/httpd24/conf/httpd.conf
#添加以下內(nèi)容
<VirtualHost *:80>
ServerName www.blog.com
DocumentRoot /app/httpd24/htdocs/wordpress
CustomLog /app/httpd24/logs/blog.access_log combined
ErrorLog /app/httpd24/logs/blog.error_log
LogLevel warn
<Directory /app/httpd24/htdocs/wordpress>
Options none
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/wordpress/$1
</VirtualHost>
(3) 重啟httpd服務(wù)
[root@node1~]# apachectl restart
(4) 準(zhǔn)備wordpress源碼,將源碼復(fù)制到 /app/httpd24/htdocs/wordpress 目錄,并在源碼目錄給 apache 用戶設(shè)置訪問控制權(quán)限
[root@node1 ~]# cd /data
[root@node1 data]# ll wordpress-5.2.2.tar.gz
-rw-r--r-- 1 root root 11133665 Dec 13 17:57 wordpress-5.2.2.tar.gz
[root@node1 data]# tar -xf wordpress-5.2.2.tar.gz
[root@node1 data]# cp -r wordpress/* /app/httpd24/htdocs/wordpress/
[root@node1 data]# setfacl -Rm u:apache:rwx /app/httpd24/htdocs/wordpress
(5) 在node2節(jié)點的數(shù)據(jù)庫服務(wù)器上,創(chuàng)建數(shù)據(jù)庫及連接數(shù)據(jù)庫的用戶
[root@node2 ~]# mysql
Welcome to the MariaDB monitor.? Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.2.25-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on wordpress.* to wpuser@'192.168.17.%' identified by 'centos';
Query OK, 0 rows affected (0.01 sec)
(6) 設(shè)置 hosts 文件,使域名可以解析到主機,在 hosts 文件中添加一行(如果利用Linux圖形桌面上的瀏覽器進行網(wǎng)站安裝,hosts文件為 /etc/hosts,如果是用windows安裝,則host文件 路徑為 C:\Windows\System32\drivers\etc)
192.168.17.7www.blog.com
(7) 安裝網(wǎng)站即可,利用瀏覽器安裝,輸出相應(yīng)域名,根據(jù)安裝向?qū)О惭b即可






3、收集apache訪問日志,并實現(xiàn)圖形化展示。
(1) 修改node1上 /app/httpd24/conf/httpd.conf 文件中的訪問日志的配置,使其重定向至 rsyslog
[root@node1 data]# vim /app/httpd24/conf/httpd.conf
#CustomLog /app/httpd24/logs/blog.access_log combined? ? #找到此項,改為下面的
CustomLog "| /usr/bin/logger -p local6.info" combined #將日志定向到本地local6
(2) 修改 rsyslog的配置文件
[root@node1 data]# vim /etc/rsyslog.conf
# Save boot messages also to boot.log? ? #找到此處,添加以下內(nèi)容
local6.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/blog_access.log
(3)重啟 httpd 服務(wù)與 rsyslog 服務(wù)
[root@node1 data]# apachectl restart
[root@node1 data]# systemctl restart rsyslog
(4) 在node1上安裝mysql模塊相關(guān)的程序包,并將數(shù)據(jù)庫創(chuàng)建sql文件傳到node2
[root@node1 data]# yum install rsyslog-mysql
[root@node1 data]# rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
[root@node1 data]# scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.17.17:/data
(5) 在node2上導(dǎo)入sql文件,并新建用于連接rsyslog的用戶
[root@node2 ~]# mysql < /data/mysql-createDB.sql
[root@node2 ~]# mysql
Welcome to the MariaDB monitor.? Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.2.25-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> grant all on Syslog.* to syslog@'192.168.17.%' identified by 'centos';
Query OK, 0 rows affected (0.00 sec)
(6) 配置node1上rsyslog的配置文件 /etc/rsyslog.conf,添加模塊,使日志保存到mysql中
[root@node1 data]# vim /etc/rsyslog.conf
#### MODULES #### #找到此處,在其下添加模塊
$ModLoad ommysql
#### RULES ####? #找到此處,在其下添加數(shù)據(jù)庫連接信息
##facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
local6.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :ommysql:192.168.17.17,Syslog,syslog,centos
(7) 安裝LogAnalyzer
[root@node1 data]# ll loganalyzer-4.1.7.tar.gz
-rw-r--r-- 1 root root 2869395 Dec 18 19:09 loganalyzer-4.1.7.tar.gz
[root@node1 data]# tar -xf loganalyzer-4.1.7.tar.gz
[root@node1 data]# cp -a loganalyzer-4.1.7/src/ /app/httpd24/htdocs/logs
[root@node1 data]# cd /app/httpd24/htdocs/logs
[root@node1 logs]# touch config.php
[root@node1 logs]# chmod 666 config.php
(8) 在 httpd.conf 文件中添加虛擬主機設(shè)置
[root@node1 logs]# vim /app/httpd24/conf/httpd.conf
<VirtualHost *:80>
ServerName logs.blog.com
DocumentRoot /app/httpd24/htdocs/logs
<Directory /app/httpd24/htdocs/logs>
Options none
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/logs/$1
</VirtualHost>
(9) 配置loganalyzer,先重啟相關(guān)服務(wù),然后用瀏覽器進行安裝配置,在瀏覽器輸入?http://192.168.17.17/logs?開始安裝配置
[root@node1 logs]# systemctl restart rsyslog
[root@node1 logs]# apachectl restart




