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


    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
      在这里插入图片描述
      以上文件下载链接:

    链接:https://pan.baidu.com/s/1kuzBwowHRnnrhuwfp8fPFQ?pwd=2022 提取码:2022

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    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或网段';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    编译完成:
    在这里插入图片描述

    准备PATH变量:

    vim /etc/profile.d/lamp.sh
    PATH=/apps/httpd/bin:$PATH
     . /etc/profile.d/lamp.sh
    
    • 1
    • 2
    • 3

    创建和配置用户和组:

    useradd -s /sbin/nologin -r -u 88 apache
    
    • 1

    编辑配置文件:

    vim /apps/httpd/conf/httpd.conf
    user apache
    group apache
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    修改为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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    httpd -M |grep mpm
    mpm_event_module (shared)
    
    • 1
    • 2

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

    apachectl start
    
    • 1

    修改为以下内容:

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述
    编译安装
    make && make install

    准备PATH变量:

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

    查看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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改进程所有者

    vim /apps/php/etc/php-fpm.d/www.conf
    user apache
    group apache
    
    • 1
    • 2
    • 3

    支持status和ping页面

    vim /apps/php/etc/php-fpm.d/www.conf
    pm.status_path = /fpm_status
    ping.path = /ping
    
    • 1
    • 2
    • 3

    支持opcache加速

    mkdir /etc/php.d/
    vim /etc/php.d/opcache.ini
    [opcache]
    zend_extension=opcache.so               
    opcache.enable=1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    初始化启动

    systemctl daemon-reload
    systemctl status php-fpm.service 
    systemctl enable --now php-fpm.service
    
    • 1
    • 2
    • 3

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

    3.4 修改配置 httpd 支持 php-fpm

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

    在这里插入图片描述

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

    更改为:

    在这里插入图片描述

    • 在文件最后面加上下面两行
    AddType application/x-httpd-php .php
    ProxyRequests Off
    
    • 1
    • 2
    • 在文件最后面加上下面内容
    #实现第一个虚拟主机
    <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 创建主文件夹
    mkdir /data/wordpress
    mkdir /data/discuz
    
    • 1
    • 2
    • 重新启动apache
    apachectl restart
    
    • 1

    3.5 准备wordpress和discuz! 相关文件

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

    #准备discuz!程序文件

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

    3.6 测试访问

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

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

    3.7 安装成功

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

  • 相关阅读:
    Nginx缓存基础
    C语言之结构体的有关知识
    华为机试真题 C++ 实现【最大化控制资源成本】【2022.11 Q4 新题】
    msm8953 LCD dtsi文件的配置选项含义说明(详解)
    MallBook:后疫情时代下,酒店企业如何破局?
    复盘今年寒气逼人的秋招
    将Bean放入Spring容器中的方式有哪些?
    五.docker+jenkins自动部署项目
    java毕业设计房屋租赁平台(附源码、数据库)
    java-php-python-医院挂号系统计算机毕业设计
  • 原文地址:https://blog.csdn.net/qq_43555873/article/details/127919181