编译安装LAMP架构搭建wordpress个人博客和discuz论坛——编译安装基于 FASTCGI 模式LAMP架构多虚拟主机WEB应用

news2025/8/2 17:38:54

文章目录

  • 1 实验目标
  • 2 环境准备
  • 3 实现步骤
      • 3.1.1 二进制安装
      • 3.1.2为wordprss和discuz应用准备数据库和用户帐号
    • 3.2 编译安装 httpd 2.4
    • 3.3 编译安装 fastcgi 方式的 php 7.4
    • 3.4 修改配置 httpd 支持 php-fpm
    • 3.5 准备wordpress和discuz! 相关文件
    • 3.6 测试访问
    • 3.7 安装成功

1 实验目标

  • 实现CentOS 8 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构
    欢迎访问我的个人博客:www.zhangkangjia.info

2 环境准备

一台主机:

  • httpd+php(fastcgi模式)
  • mysql服务器

软件版本:

  • CentOS 8 Steam
  • mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
  • apr-1.7.0.tar.bz2
  • apr-util-1.6.1.tar.bz2
  • httpd-2.4.43.tar.gz
  • php-7.4.33.tar.gz
  • wordpress-6.1.1-zh_CN.zip
  • Discuz_X3.4_SC_UTF8_20220811.zip
  • install_mysql5.7or8.0_for_centos.sh
    在这里插入图片描述

3 实现步骤

3.1.1 二进制安装

install_mysql5.7or8.0_for_centos.sh编译安装mysql脚本

#!/bin/bash
. /etc/init.d/functions 
SRC_DIR=`pwd`
MYSQL='mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz'
COLOR='echo -e \E[01;31m'
END='\E[0m'
MYSQL_ROOT_PASSWORD=123456
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

check (){

if [ $UID -ne 0 ]; then
  action "当前用户不是root,安装失败" false
  exit 1
fi

cd  $SRC_DIR
if [ !  -e $MYSQL ];then
        $COLOR"缺少${MYSQL}件"$END
		$COLOR"请将相关软件放在${SRC_DIR}目录下"$END
        exit
elif [ -e /usr/local/mysql ];then
        action "数据库已存在,安装失败" false
        exit
else
	return
fi
} 

install_mysql(){
    $COLOR"开始安装MySQL数据库..."$END
	yum  -y -q install libaio numactl-libs   libaio &> /dev/null
    cd $SRC_DIR
    xz -dk  mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
    tar xf mysql-8.0.19-linux-glibc2.12-x86_64.tar -C /usr/local/
    MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`
    ln -s  /usr/local/$MYSQL_DIR /usr/local/mysql
    chown -R  root.root /usr/local/mysql/
    id mysql &> /dev/null || { useradd -s /sbin/nologin -r  mysql ; action "创建mysql用户"; }
        
    echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
    .  /etc/profile.d/mysql.sh
	ln -s /usr/local/mysql/bin/* /usr/bin/
    cat > /etc/my.cnf <<-EOF
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock                                                                                                   
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
    mysqld --initialize --user=mysql --datadir=/data/mysql 
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig mysqld on
    service mysqld start
    [ $? -ne 0 ] && { $COLOR"数据库启动失败,退出!"$END;exit; }
    MYSQL_OLDPASSWORD=`awk '/A temporary password/{print $NF}' /data/mysql/mysql.log`
    mysqladmin  -uroot -p$MYSQL_OLDPASSWORD password $MYSQL_ROOT_PASSWORD &>/dev/null
    action "数据库安装完成" 
}
check
install_mysql

3.1.2为wordprss和discuz应用准备数据库和用户帐号

mysql -uroot -p123456
mysql> create database wordpress;
mysql> create database discuz;
mysql> create user wordpress@'IP或网段' identified by '密码';
mysql> grant all on wordpress.* to wordpress@'IP或网段';
mysql> create user discuz@'IP或网段' identified by '密码';
mysql> grant all on discuz.* to discuz@'IP或网段';

3.2 编译安装 httpd 2.4

#安装相关包
yum install gcc pcre-devel openssl-devel expat-devel -y

#编译安装httpd
tar xvf apr-1.7.0.tar
tar xvf apr-util-1.6.1.tar
tar xf httpd-2.4.46.tar 
mv apr-1.7.0 httpd-2.4.46/srclib/apr
mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util
cd httpd-2.4.46/

./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)

在这里插入图片描述
启动apache:

apachectl start

修改为以下内容:

[root@VM-0-3-centos ~]#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

启动成功:
在这里插入图片描述

3.3 编译安装 fastcgi 方式的 php 7.4

#安装相关包,依赖EPEL源

  • php 7.4 相关包
    yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
    启用PowerTools源安装oniguruma-devel
    php7.4 编译
#解压
tar xvf php-7.4.33.tar.gz
#进入php目录
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 && make install

准备PATH变量:

  • 创建启动变量脚本
vim /etc/profile.d/lamp.sh
PATH=/apps/php/bin:/apps/httpd/bin:$PATH
  • 初始化启动脚本
 . /etc/profile.d/lamp.sh

查看php版本,检查是否安装成功
php --version
在这里插入图片描述

准备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页面

vim /apps/php/etc/php-fpm.d/www.conf
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

验证9000端口是否启动
在这里插入图片描述
可以看到9000端口已经启动!

3.4 修改配置 httpd 支持 php-fpm

vim /apps/httpd/conf/httpd.conf
  • 取消下面两行的注释

在这里插入图片描述

  • 修改下面行
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

更改为:

在这里插入图片描述

  • 在文件最后面加上下面两行
AddType application/x-httpd-php .php
ProxyRequests Off
  • 在文件最后面加上下面内容
#实现第一个虚拟主机
<virtualhost *:80>
servername blog.test.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.test.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>
  • 创建主文件夹
mkdir /data/wordpress
mkdir /data/discuz
  • 重新启动apache
apachectl restart

3.5 准备wordpress和discuz! 相关文件

  • 准备wordpress程序文件
upzip wordpress-6.1.1-zh_CN.zip
mv wordpress/ /data/wordpress/

#准备discuz!程序文件

unzip  Discuz_X3.4_SC_UTF8_20220811.zip
mv upload/* /data/discuz/
chown -R apache.apache /data/*

3.6 测试访问

vim /etc/hosts
ip地址 forum.test.org blog.test.org

打开浏览器访问 http://blog.test.org http://forum.test.org 分别进行初始化和安装
云服务器一定打开3306端口,否则数据库会连接不上
在这里插入图片描述

3.7 安装成功

博客安装成功!
在这里插入图片描述
论坛安装成功!
在这里插入图片描述
欢迎访问我的个人博客:www.zhangkangjia.info

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL高级篇知识点——其它数据库日志

目录1.其他数据库日志1.1.日志类型1.2.日志的弊端2.慢查询日志 (slow query log)3.通用查询日志 (general query log)3.1.问题场景3.2.查看当前状态3.3.启动日志3.4.查看日志3.5.停止日志3.6.删除/刷新日志4.错误日志 (error log)4.1.启动日志4.2.查看日志4.3.删除/刷新日志5.二…

Glide图片框架源码解析

一、Glide几个基本概念 Model 表示数据的来源&#xff1b;加载图片的时候需要告诉Glide从哪获取这个图片&#xff0c;可以是url类型、本地文件类型、资源ID类型。不管什么类型&#xff0c;Glide都将其称为Model。 Data 从数据源中获取到model之后&#xff0c;把它加工成原始数…

java.swing 飞机大战小游戏

上午没事刷到网上最近炒热了一些简单的小游戏和爱心代码&#xff0c;单身8个月了&#xff0c;对爱心代码不是很感冒&#xff0c;所以想蹭个热度&#xff0c;写一个飞机大站来玩玩。 首先&#xff0c;分析小游戏需要那些技术与怎么设计&#xff1a; 窗体&#xff0c;因为是jav…

Python如何使用PyMySQL连接数据库

1&#xff1a;为什么要连接数据库呢&#xff1f; 做接口自动化测试的时候&#xff0c;我们需要校验数据是否正常入库&#xff0c;数据是否正确&#xff0c;来做断言处理&#xff1b;有的时候需要修改数据&#xff0c;去执行其他场景的测试用例&#xff1b;有的时候需要删除数据…

DOX-HSA/HGB/FITC/Glu人血清蛋白/血红蛋白/荧光素/葡萄糖修饰阿霉素

小编今天分享给大家的科研知识是DOX-HSA/HGB/FITC/Glu人血清蛋白/血红蛋白/荧光素/葡萄糖修饰阿霉素&#xff0c;来看&#xff01; DOX-HSA人血清蛋白偶联阿霉素相关&#xff1a; 采用阿霉素(Doxorubicin,DOX)与人血清白蛋白(HSA)经化学交联获得的偶联物。本品经过滤,溶于PBS…

Chapter4 利用机器学习解决分类和回归问题

目录 4.1 机器学习和神经网络基本概念 4.1.1 感知器 4.1.2 前向传播 4.1.3 反向传播 4.1.4 过拟合和欠拟合 4.2 利用神经网络解决回归问题 4.2.1 问题介绍 4.2.2 利用pytorch解析数据 4.2.2 利用pytorch定义网络结构 4.2.3 开始训练 4.2.4 将模型进行保存 4.3 利用p…

云中马在A股上市:总市值约为40亿元,叶福忠为实际控制人

11月18日&#xff0c;浙江云中马股份有限公司&#xff08;下称“云中马”&#xff0c;SH:603130&#xff09;在上海证券交易所主板上市。本次上市&#xff0c;云中马的发行价为19.72元/股&#xff0c;发行数量为3500万股&#xff0c;募资总额约为6.90亿元&#xff0c;募资金额约…

码农必备?清华大学开源了一款写代码神器。。。

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 提升程序员编码效率&#xff0c;是一个经久不衰的话题&#xff0c;从最初用纯文本编辑器到后来代码自动补全&#xff0c;再到后来基于AI智能补全代码&#xff0c;开发者效率的确在不断提升。 关于新工…

这就是程序员眼中的函数吗?(一)

小叮当的任意门1. 函数是什么&#xff1f;2. C语言中的函数分类1. 库函数2. 自定义函数3. 函数的参数1. 实际参数&#xff08;实参&#xff09;2. 形式参数&#xff08;形参&#xff09;4. 函数的调用1. 传值调用2. 传址调用练习1. 写一个函数可以判断一个数是不是素数三级标题…

5分钟实现「视频检索」:基于内容理解,无需任何标签

Notebook 教程&#xff1a;text-video retrieval 「视频检索」任务就是输入一段文本&#xff0c;检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆&#xff0c;网络上视频的数量呈现井喷式增长&#xff0c;「视频检索」成为人们高效查找视频的一项新需求。传统的视频…

Matlab点云处理及可视化第1期—基于KD树的邻域点搜索(柱状邻域、球状邻域及KNN)

目录 1 概述 2 代码实现 3 可视化验证 数据及完整代码获取方式&#xff1a; 观前提示&#xff1a;本文文字内容请勿直接用于论文写作&#xff0c;否则后果自负。 特别提示&#xff1a;《Matlab点云处理及可视化》系列文章旨在为初入点云处理领域的朋友提供一份较为权威、可…

MR直播(混合现实直播)做一场高品质企业培训

阿酷TONY / 2022-11-18 / 长沙 MR&#xff0c;是英文Mixed Reality两个单词的缩写&#xff0c;中文翻译为混合现实。 MR混合现实直播技术是通过在现实环境中引入虚拟场景信息&#xff0c;增强用户体验的真实感&#xff0c;具有真实性、实时互动性等特点。 MR直播解决方案是深…

基于springboot农产品交易平台的设计与实现

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于特色农产品电商平台 当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了特色农产品电商平台&#xff0c;它彻底…

软件需求分析——需求的理论基础

如果有兴趣了解更多相关内容&#xff0c;可以来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;需求的涵义 研究对象&#xff1a;软件加强型系统中的软件 软件加强型系统&#xff1a;泛指由计算机技术支持的互相联系着的一组人类活动组成的系统。与物理设备和人类社会…

linux网络协议栈源码分析 - 传输层(TCP的输出)

1、TCP write系统调用(tcp_sendmsg) 1.1、write系统调用 socket的write系统调用栈: write最终调用tcp_sendmsg发送消息。 1.2、tcp_sendmsg报文分段 tcp_sendmsg主要是对用户的消息按MSS进行分段、添加到发送队列并将用户数据拷贝到分段里面&#xff0c;根据相关判断设置PSH标…

[附源码]SSM计算机毕业设计超市收银系统论文JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

学生台灯是灯管的好还是led的好?分享学生专用台灯第一品牌

给学生使用的话肯定是led灯更好的&#xff0c;主要是对眼睛有保护作用的&#xff0c;灯管一般当做主要照明灯具是可以的&#xff0c;在家中客厅里&#xff0c;卧室就是灯管&#xff0c;使用led灯是想要补足亮度的&#xff0c;全光谱的国AA级台灯&#xff0c;更健康、更适应人类…

计算机网络---ARP、DHCP与ICMP

&#xff08;一&#xff09;IP 地址与硬件地址 IP地址是网络层使用的地址&#xff0c;它是分层次等级的。硬件地址是数据链路层使用的地址&#xff08;MAC地址&#xff09;&#xff0c;它是平面式的。在网络层及网络层之上使用IP地址&#xff0c;IP地址放在IP数据报的首部&…

并肩刘德华,对战周杰伦,腾格尔老师线上演唱会即将拉开帷幕

在刚刚结束的第三十五届金鸡奖上面&#xff0c;著名爱国艺人刘德华&#xff0c;又一次出现在大众的视野当中。来自香港的天王刘德华&#xff0c;是一个著名的音乐人和演员&#xff0c;他拳拳的爱国之情&#xff0c;也感动了无数的粉丝。 刘德华作为中国华语乐坛的中坚力量&…

22071班(11月18日)

1.在串口工具进行输入&#xff1a; echo 1 > /dev/myled0 ---->led1灯点亮 echo 0 > /dev/myled0 ---->led1灯熄灭 echo 1 > /dev/myled1 ---->led1灯点亮 echo 0 > /dev/myled1 ---->led1灯熄灭 echo 1 > /dev/myled2 ----…