第十四周--作业
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 <br> #准备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<br> #为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'; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通