第十四周--作业
1、简述CGI与FASTCGI的区别
两者的区别主要表现为:
①在web服务器方面:CGI需要fork一个新的进程来处理,而FastCGI则是用TCP方式跟远程主机上的进程或本地进程进行连接。
②在对数据处理的进程方面:CGI在读取参数、处理数据后结束生命周期,FastCGI则是开启TCP端口,并进入循环,一旦有数据进来就进行数据的处理,不会退出。
通过两者的对比,我们会发现,FastCGI的程序性能会更好,同时安全性也更高,可谓是加强版的CGI,在当前的生产中,一般也是会用FastCGI来代替传统的CGI。
2、编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
二进制安装mariadb
useradd -r -s /sbin/nologin mysql tar xvf mariadb-10.2.27-linux-x86_64.tar.gz -C /usr/local cd /usr/local ln -sv mariadb-10.2.27-linux-x86_64 mysql cd mysql chown -R root.root ./* mkdir /data/mysql -p chown -R mysql.mysql /data/mysql mkdir /etc/mysql cp support-files/my-huge.cnf /etc/mysql/my.cnf vim /etc/mysql/my.cnf [mysqld] #加下面行 datadir =/data/mysql skip_name_resolve = ON
#准备PATH变量 vim /etc/profile.d/lamp.sh PATH=/usr/local/mysql/bin/:$PATH . /etc/profile.d/lamp.sh yum install libaio -y cd /usr/local/mysql;scripts/mysql_install_db --user=mysql --datadir=/data/mysql cp support-files/mysql.server /etc/rc.d/init.d/mysqld chkconfig --add mysqld service mysqld start
#为wordprss和discuz应用准备数据库和用户帐号 mysql -uroot mysql> create database wordpress; mysql> create database discuz; mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by "wppass"; mysql> grant all on discuz.* to discuz@'10.0.0.%' identified by 'dispass';
编译安装http
#安装相关包
yum install gcc pcre-devel openssl-devel expat-devel -y
#编译安装httpd
tar xvf apr-1.7.0.tar.bz2
tar xvf apr-util-1.6.1.tar.bz2
tar xf httpd-2.4.43.tar.gz
mv apr-1.7.0 httpd-2.4.43/srclib/apr
mv apr-util-1.6.1 httpd-2.4.43/srclib/apr-util
cd httpd-2.4.43/
./configure \
--prefix=/apps/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=event
make && make install
#准备PATH变量
vim /etc/profile.d/lamp.sh
PATH=/apps/httpd/bin:$PATH
. /etc/profile.d/lamp.sh
#创建和配置用户和组
useradd -s /sbin/nologin -r -u 88 apache
vim /apps/httpd/conf/httpd.conf
user apache
group apache
#修改为event模式,编译时已指定,此项不再需修改,可选项
vim /apps/httpd/conf/httpd.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
httpd -M |grep mpm
mpm_event_module (shared)
apachectl start
[root@centos7 ~]#vim /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/apps/httpd/bin/apachectl start
#ExecStart=/apps/httpd/bin/httpd $OPTIONS -k start
ExecReload=/apps/httpd/bin/apachectl graceful
#ExecReload=/apps/httpd/bin/httpd $OPTIONS -k graceful
ExecStop=/apps/httpd/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
编译安装fastcgi 方式的 php
#安装相关包,依赖EPEL源 #php 7.4 相关包 yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel #php7.4 编译 tar xvf php-7.4.7.tar.xz cd php-7.4.7/ ./configure \ --prefix=/apps/php \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-openssl \ --with-zlib \ --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 make -j 4 && make install #准备PATH变量 #php7.4 vim /etc/profile.d/lamp.sh PATH=/apps/php/bin:/apps/httpd/bin:$PATH . /etc/profile.d/lamp.sh #准备php配置文件和启动文件 cp php.ini-production /etc/php.ini cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/ cd /apps/php/etc cp php-fpm.conf.default php-fpm.conf cd php-fpm.d/ cp www.conf.default www.conf #修改进程所有者 vim /apps/php/etc/php-fpm.d/www.conf user apache group apache #支持status和ping页面 pm.status_path = /fpm_status ping.path = /ping #支持opcache加速 mkdir /etc/php.d/ vim /etc/php.d/opcache.ini [opcache] zend_extension=opcache.so opcache.enable=1 systemctl daemon-reload systemctl status php-fpm.service systemctl enable --now php-fpm.service
修改配置http支持php-fpm
vim /apps/httpd/conf/httpd.conf #取消下面两行的注释 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #修改下面行 <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> #加下面三行 AddType application/x-httpd-php .php #AddType application/x-httpd-php-source .phps ProxyRequests Off #实现第一个虚拟主机 <virtualhost *:80> servername blog.magedu.org documentroot /data/wordpress <directory /data/wordpress> require all granted </directory> ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1 #实现status和ping页面 ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1 CustomLog "logs/access_wordpress_log" common </virtualhost> #第二个虚拟主机 <virtualhost *:80> servername forum.magedu.org documentroot /data/discuz <directory /data/discuz/> require all granted </directory> ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/discuz/$1 CustomLog "logs/access_discuz_log" common </virtualhost> apachectl restart
准备WordPress和discuz!相关文件
#准备wordpress程序文件 mkdir /data/ tar xvf wordpress-5.4.2-zh_CN.tar.gz mv wordpress/ /data setfacl –R –m u:apache:rwx /data/wordpress/ #或者chown –R apache.apache /data/wordpress #准备discuz!程序文件 unzip Discuz_X3.4_SC_UTF8【20191201】.zip mv DiscuzX/upload/ /data/discuz setfacl -R -m u:apache:rwx /data/discuz/
3、通过loganalyzer展示数据库中的日志
rsyslog主机配置
rsyslog主机安装rsyslog-mysql包 yum -y install rsyslog-mysql 将文件mysql-createDB.sql拷贝到数据库服务器 scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.8:/data/ 修改/etc/rsyslog.conf配置文件 在modules语句模块添加module(load="ommysql") 在rules语句模块添加将要规划的数据库账号信息,如模块名、数据库主机ip、数据库名、账号和密*码
数据库服务器配置
安装mysql数据库 yum -y install mysql-server 登陆数据库创建相关账户并对数据库授权 create user rsyslog@'10.0.0.%' identified by 'magedu'; grant all on Syslog * to 'rsyslog'@'10.0.0.%; indentified by 'magedu';

浙公网安备 33010602011771号