第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.上传图片并验证

 

posted @ 2020-09-20 23:47  無心的Man  阅读(192)  评论(0)    收藏  举报