第16周作业
架构题:前端有一个 LAMP 架构通过 wordpress 来部署,后端构建一个 NFS 服务器实现要求将用户上传的图片保存至后端 NFS 服务器上。
1.环境准备:
2.一键安装wordpress脚本
准备好源码包如下:
apr-1.7.0.tar.bz2
apr-util-1.6.1.tar.bz2
httpd-2.4.41.tar.gz
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
php-7.4.10.tar.xz
wordpress-5.4.2-zh_CN.zip
#Setp 1 #!/bin/bash #二进制安装mysql5.7.31 COLOR="echo -e \033[01;31m" END='\033[0m' Wordpress_user="wpuser" #Wordpress数据库连接用户 Wordpress_password="wppass" #Wordpress数据库连接用户密码 Wordpress_database="wordpress" #Wordpress数据库名称 ${COLOR} Setp 1 开始安装MySQL...${END} #安装相关依赖包 yum -y install libaio numactl-libs &> /dev/null #创建用户并解压包 groupadd mysql useradd -r -g mysql -s /bin/false mysql tar xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src cd /usr/local/src ln -sv mysql-5.7.31-linux-glibc2.12-x86_64 mysql cd mysql chown -R root.root /usr/local/src/mysql #创建mysql目录 mkdir -p /data/mysql chown -R mysql.mysql /data/mysql #修改配置文件 cat > /etc/my.cnf <<-EOF [mysqld] datadir=/data/mysql basedir=/usr/local/src/mysql skip_name_resolve=ON socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock EOF #配置环境变量 echo 'PATH=/usr/local/src/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh #初始化 mysqld --initialize --user=mysql --datadir=/data/mysql #准备服务脚本和启动 cp /usr/local/src/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start PASSWORD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log` mysqladmin -uroot -p$PASSWORD password magedu mysql_user(){ mysql -uroot -pmagedu -e "create database $Wordpress_database" mysql -uroot -pmagedu -e "create user '$Wordpress_user'@'10.0.0.%' identified by '$Wordpress_password'" mysql -uroot -pmagedu -e "grant all on $Wordpress_database.* to $Wordpress_user@'10.0.0.%'" mysql -uroot -pmagedu -e "flush privileges" } install_httpd(){ id apache &> /dev/null || useradd -r -s /sbin/nologin apache yum install gcc pcre-devel openssl-devel expat-devel -y cd ~ tar xvf apr-1.7.0.tar.bz2 tar xvf apr-util-1.6.1.tar.bz2 tar xvf httpd-2.4.41.tar.gz mv apr-1.7.0 httpd-2.4.41/srclib/apr mv apr-util-1.6.1 httpd-2.4.41/srclib/apr-util cd httpd-2.4.41/ ./configure --prefix=/apps/httpd \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --enable-modules=most \ --enable-mpms-shared=all \ --with-mpm=prefork \ --with-included-apr make -j 4 && make install echo 'PATH=/usr/local/mysql/bin/:/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh.sh . /etc/profile.d/httpd.sh.sh sed -i.bak 's/^User.*/User apache/' /apps/httpd/conf/httpd.conf sed -i.bak 's/^Group.*/Group apache/' /apps/httpd/conf/httpd.conf apachectl start } #Step 3 编译安装httpd模块方式 php-7.3 #安装相关包,依赖EPEL源 install_php(){ yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel \ sqlite-devel oniguruma-devel openssl* &> /dev/null cd tar xvf php-7.4.10.tar.xz cd php-7.4.10/ ./configure \ --prefix=/apps/php \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-openssl \ --with-pdo-mysql=mysqlnd \ --enable-mbstring \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --enable-sockets \ --with-apxs2=/apps/httpd/bin/apxs \ --with-config-file-path=/etc \ --with-config-file-scan-dir=/etc/php.d \ --enable-maintainer-zts \ --disable-fileinfo make -j`lscpu | grep "^CPU(s)" | awk '{print $NF}'` && make install #为php提供配置文件 cp php.ini-production /etc/php.ini #编辑apache配置文件支持php mkdir -pv /apps/httpd/conf.d/ chown -R apache.apache /apps/httpd/conf.d/ cat >> /apps/httpd/conf/httpd.conf <<-EOF Include conf.d/*.conf EOF cat > /apps/httpd/conf.d/test1.conf <<-EOF servername 10.0.0.7 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps EOF sed -ri.bak 's/(.*DirectoryIndex)/\1 index.php /' /apps/httpd/conf/httpd.conf #Step4 解压wordpress包 cd .. unzip wordpress-5.4.2-zh_CN.zip mv wordpress /apps/httpd/htdocs setfacl -R -m u:apache:rwx /apps/httpd/htdocs apachectl restart systemctl stop firewalld } mysql_user install_httpd install_php
3.所有服务器上均安装NFS软件
[root@lamp-server ~]#yum install -y nfs-utils;systemctl start nfs-server [root@NFS-client ~]#yum install -y nfs-utils #配置NFS共享文件格式 [root@lamp-server ~]#vi /etc/exports.d/wordpress.exports /apps/httpd/htdocs/wordpress/ *(rw) #重读配置文件,并共享目录 [root@lamp-server ~]#exportfs -r #查看本机所有NFS共享 [root@lamp-server ~]#exportfs -v #查看远程主机 [root@lamp-server ~]#rpcinfo -p 10.0.0.8 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 44426 status 100024 1 tcp 45345 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100021 1 udp 52521 nlockmgr 100021 3 udp 52521 nlockmgr 100021 4 udp 52521 nlockmgr 100021 1 tcp 37821 nlockmgr 100021 3 tcp 37821 nlockmgr 100021 4 tcp 37821 nlockmgr
4.在NFS-server 上安装自动挂载软件sutofs
[root@NFS-client ~]#yum install -y autofs [root@NFS-client ~]#vi /etc/auto.master /apps/httpd/htdocs/ /etc/auto.wordpress [root@NFS-client ~]#vi /etc/auto.wordpress * -fstype=nfs,vers=3 10.0.0.7:/apps/httpd/htdocs/wordpress/ [root@NFS-client ~]#systemctl restart autofs [root@NFS-client ~]#df -T /apps/httpd/htdocs/wordpress Filesystem Type 1K-blocks Used Available Use% Mounted on 10.0.0.7:/apps/httpd/htdocs/wordpress/ nfs 39518464 4504832 35013632 12% /apps/httpd/htdocs/wordpress #说明共享NFS服务器配置成功
5.上传图片并验证