马哥博客作业第十六周

1、前端有一个 LAMP 架构通过 wordpress 来部署,后端构建一个 NFS 服务器实现要求将用户上传的图片保存至后端 NFS 服务器上。

  准备3台主机

  一台apache+php:10.0.0.212

  一台mysql:10.0.0.216

  一台NFS:10.0.0.213

一、在10.0.0.212上通过脚本编译安装apache和php 

  [root@localhost ~]#cat httpd-2.4.46_install.sh
  #! /bin/bash

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

  # 下载源代码并解压缩
  wget -P /usr/local/src/ https://mirror.bit.edu.cn/apache//apr/apr-1.7.0.tar.gz
  wget -P /usr/local/src/ https://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
  wget -P /usr/local/src/ https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.46.tar.gz
  cd /usr/local/src/
  tar xf apr-1.7.0.tar.gz
  tar xf apr-util-1.6.1.tar.gz
  tar xf httpd-2.4.46.tar.gz

  # 将apr和apr-util源码与httpd源码合并,三者共同编译安装
  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=prefork
  make && make install

  # 创建apache账户
  useradd -r -s /sbin/nologin apache

  # 修改配置文件
  sed -i 's/^User.*/User apache/' /apps/httpd/conf/httpd.conf
  sed -i 's/^Group.*/Group apache/' /apps/httpd/conf/httpd.conf

  # 配置环境变量
  echo 'PATH="/apps/httpd/bin:$PATH"' > /etc/profile.d/httpd.sh
  . /etc/profile.d/httpd.sh

  # 配置man帮助
  echo 'MANDATORY_MANPATH /apps/httpd/man' >> /etc/man_db.conf

  # 创建service unit文件,设置开机启动
  cat > /lib/systemd/system/httpd.service << EOF
  [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
  ExecStart=/apps/httpd/bin/apachectl start
  ExecReload=/apps/httpd/bin/apachectl graceful
  ExecStop=/apps/httpd/bin/apachectl stop
  # We want systemd to give httpd some time to finish gracefully, but still want
  # it to kill httpd after TimeoutStopSec if something went wrong during the
  # graceful stop. Normally, Systemd sends SIGTERM signal right after the
  # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
  # httpd time to finish.
  KillSignal=SIGCONT
  PrivateTmp=true

  [Install]
  WantedBy=multi-user.target
  EOF

  systemctl daemon-reload
  systemctl enable --now httpd.service

 

  [root@localhost ~]#cat php-7.4.10_install.sh
  # 编译安装fastcgi方式的php-7.4.10

  # 安装相关包
  yum -y install wget gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel openssl-devel

  # 下载php源码进行编译安装
  wget -P /usr/local/src/ https://www.php.net/distributions/php-7.4.10.tar.xz
  cd /usr/local/src/
  tar xf php-7.4.10.tar.xz
  cd php-7.4.10/
  ./configure --prefix=/apps/php74 --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变量
  echo "PATH=/apps/php74/bin:$PATH" > /etc/profile.d/php74.sh
  . /etc/profile.d/php74.sh

  # 准备php配置文件和service unit文件
  cp php.ini-production /etc/php.ini
  cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
  mv /apps/php74/etc/php-fpm.conf.default /apps/php74/etc/php-fpm.conf
  mv /apps/php74/etc/php-fpm.d/www.conf.default /apps/php74/etc/php-fpm.d/www.conf

  # 启用opcache加速
  cat >> /etc/php.ini << EOF
  [opcache]
  zend_extension=opcache.so
  opcache.enable=1
  EOF

  # 启动php-fpm服务并设为开机启动
  systemctl daemon-reload
  systemctl enable --now php-fpm.service

 

二、修改配置文件

  1)、修改php-fpm进程所有者和支持status和ping页面,支持opcache加速

    [root@localhost ~]#vim /apps/php74/etc/php-fpm.d/www.conf   

    user = apache
    group = apache

    pm.status_path = /status

    ping.path = /ping

    [root@localhost ~]#vim /etc/php.ini  

    [opcache]
    zend_extension=opcache.so
    opcache.enable=1

    重启服务

    systemctl enable --now php-fpm

  2)、修改配置httpd支持php-fpm

    [root@localhost ~]#vim /apps/httpd/conf/httpd.conf

    #取消下面两行注释,打开代理功能

    LoadModule proxy_module modules/mod_proxy.so

    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

    #加上下面5行,添加fcgi配置文件 

    AddType application/x-httpd-php .php
    ProxyRequests off
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://localhost:9000/data/html/$1
    ProxyPassMatch ^/(status|ping) fcgi://localhost:9000/

  3)、准备wordpress相关文件

    tar xf wordpress-5.4.2-zh_CN.tar.gz

    chown apache.apache wordpress -R

    mv wordpress /data/html/

 

三、在10.0.0.216上安装mysql并创建相关数据库和用户并授权

    MariaDB [(none)]> create database wordpress;

    MariaDB [(none)]> create user wpuser@'10.0.0.%' identified by '123456';

    MariaDB [(none)]> grant all on wordpress.* to  wpuser@'10.0.0.%';

 

四、在10.0.0.213上安装nfs服务

  1)、安装软件包nfs-utils

    [root@centos7 ~]#yum -y install nfs-utils

  2)、nfs共享文件配置

    [root@centos7 ~]#vim /etc/exports 

    /data/nfsdir3 10.0.0.0/24(rw,no_root_squash)

    启动服务并设为开机启动

    systemctl enable --now nfs-server.service

    查看共享目录   

    [root@centos7 ~]#exportfs -v
    /data/nfsdir3 10.0.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

 

五、在10.0.0.212上安装nfs客户端,并将用户上传的图片保存至NFS服务器上

  1)、安装nfs-utils软件,并将远程NFS服务器的/data/nfsdir3目录挂载到本地/data/html/wordpress/wp-content/uploads/目录

    [root@localhost ~]#yum -y install nfs-utils

    [root@localhost ~]#mount 10.0.0.213:/data/nfsdir3 /data/html/wordpress/wp-content/uploads/

  2)、打开浏览器访问http://10.0.0.212/wordpress测试,创建博客并上传图片

  3)、在10.0.0.213NFS服务器上可以看到文件已保存    

    [root@centos7 nfsdir3]#tree
    .
    └── 2020
      └── 09
        └── vim\351\224\256\347\233\230\345\233\276.png

    2 directories, 1 file

 

posted @ 2020-09-15 17:15  富儿代  阅读(103)  评论(0编辑  收藏  举报