第十七周作业—虚怀若谷
一、部署分离的LAMP,部署到两台服务器上,php加载xcache模块
主机:两台CentOS7系统主机,一台实现apache+php (node1:192.168.27.7),一台实现mariadb (node2:192.168.27.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)实现低版本php的安装,以及xcache的编译加载;
#安装httpd与php服务 [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(); ?>
通过浏览器访问 http://192.168.27.27/phpinfo.php,可以看到xcache模块已加载。

以下为LAMP最新软件包的编译实现过程
1、实现node2的mariadb服务
(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用户和数据目录
[root@node2 ~]# useradd -r -s /sbin/nologin mysql [root@node2 ~]# mkdir /data/mysql [root@node2 ~]# chown mysql:mysql /data/mysql
(3) 准备二进制程序
[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
(3) 准备配置文件
[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 #设备字符集
(4) 初始化数据库,生成数据库文件
[root@node2 mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
(5) 准备服务脚本,并启动服务
[root@node2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@node2 mysql]# chkconfig --add mysqld [root@node2 mysql]# service mysqld start
(6) 配置PATH环境变量
[root@node2 mysql]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@node2 mysql]# . /etc/profile.d/mysql.sh
(7) 安全加固,以上安装后数据库是没有密码的,可以使用安全初始化脚本修改密码
[root@node2 mysql]# mysql_secure_installation
2、实现node1的apache服务,编译安装httpd
(1) 准备相关安装包
[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 复制到 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) 先安装相关依赖包(光盘yum源)
[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) 创建apache用户并修改配置文件中的启动服务时所用的用户和组,默认的用户和组为 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>
3、实现node1的php-fpm服务,编译安装php-fpm
(1) 准备安装包
[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) 安装相关所需包(光盘yum源与EPEL源)
[root@node1 data]# cat /etc/yum.repos.d/base.repo [development] name=dvdbase repo baseurl=file:///mnt/cdrom/ enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7 [aliyunEpel] name=aliyun epel baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-$releasever [root@node1 data]# yum install -y libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma oniguruma-devel
#libmcrypt-devel依赖epel源
(3) 解压源码包,并进行编译安装
[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
(4) 准备配置文件,并修改 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
(5) 准备服务启动脚本,并启动 php-fpm 服务
[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 *:*
(6) 修改 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 #以下这行如果是单主机是必需加的,如要实现多虚拟主机,在虚拟主机配置中加即可 #ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
(7) 编写一个php页面,然后重启apache服务,通过浏览器访问 http://192.168.27.27/phpinfo.php 测试php页面能否正常访问
[root@node1 ~]# vim /app/httpd24/htdocs/index.php <?php phpinfo(); ?> [root@node1 ~]# apachectl restart
二、部署wordpress论坛,并实现正常访问登录论坛
(1) 在node1节点上 /app/httpd24/htdocs/ 创建多虚拟主机所需文件夹
[root@node1 ~]# mkdir /app/httpd24/htdocs/wordpress
(2) 继续在 httpd.conf 文件中添加虚拟主机设置
[root@node1 ~]# vim /app/httpd24/conf/httpd.conf #添加以下内容 <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服务
[root@node1 ~]# apachectl restart
(4) 准备wordpress源码,将源码复制到 /app/httpd24/htdocs/wordpress 目录,并在源码目录给 apache 用户设置访问控制权限
[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节点的数据库服务器上,创建数据库及连接数据库的用户
[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.27.%' identified by 'centos'; Query OK, 0 rows affected (0.01 sec)
(6) 设置 hosts 文件,使域名可以解析到主机,在 hosts 文件中添加一行(如果利用Linux图形桌面上的浏览器进行网站安装,hosts文件为 /etc/hosts,如果是用windows安装,则host文件 路径为 C:\Windows\System32\drivers\etc)
192.168.27.7 www.blog.com
(7) 安装网站即可,利用浏览器安装,输出相应域名,根据安装向导安装即可







三、收集apache访问日志,并实现图形化展示
软件:loganalyzer-4.1.7.tar.gz
(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 #找到此处,添加以下内容
local6.* /var/log/blog_access.log
(3) 重启 httpd 服务与 rsyslog 服务
[root@node1 data]# apachectl restart
[root@node1 data]# systemctl restart rsyslog
(4) 在node1上安装mysql模块相关的程序包,并将数据库创建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.27.17:/data
(5) 在node2上导入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.27.%' 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 #### #找到此处,在其下添加数据库连接信息 ##facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD local6.* :ommysql:192.168.27.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 文件中添加虚拟主机设置
[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,先重启相关服务,然后用浏览器进行安装配置,在浏览器输入 http://192.168.27.17/logs 开始安装配置
[root@node1 logs]# systemctl restart rsyslog
[root@node1 logs]# apachectl restart






浙公网安备 33010602011771号