赞
踩
# 所需源码包:
mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
nginx-1.18.0.tar.gz
php-7.4.7.tar.bz2
wordpress-5.4.2-zh_CN.tar.gz
注意:浏览器访问之前确保Windows主机已添加DNS解析记录(路径:C:\Windows\System32\drivers\etc\hosts
)
#!/bin/bash # #******************************************** #Author: jacklee #QQ: 122 #Time: 2020-11-28_19:14:57 #FileName: mysql.sh #Copyright: 2020 All rights reserved #Description: #********************************************* . /etc/init.d/functions #—————————————————————————————————————————————————————————————————————————————————————————— install-nginx() { yum -y install gcc git pcre pcre-devel openssl-devel zlib-devel unzip [ id nginx ] || useradd -r -s /sbin/nologin nginx NGINX=/root/nginx-1.18.0.tar.gz [ -e $NGINX ] || wget http://nginx.org/download/nginx-1.18.0.tar.gz cd /usr/local/src/ tar xvf $NGINX cd nginx-1.18.0/ # 注意:编译安装指定的用户与 php 的配置文件使用同一用户!!! ./configure --prefix=/apps/nginx \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ || { echo -e "\e[1;32m<./configure执行失败>\e[0m"; exit; } make && make install && echo -e "\e[1;32m<nginx编译安装成功>\e[0m" chown -R nginx.nginx /apps/nginx ln -s /apps/nginx/sbin/nginx /usr/sbin/ nginx && ss -ntl | grep -q 80 && echo -e "\e[1;32m<nginx启动成功>\e[0m" # 配置fastCGI sed -ri \ -e '37s/(server_name ).*/\1 www.jacklee.org;/' \ -e '44s#(root ).*#\1 /data/nginx/wordpress;#' \ -e '45s/(index ).*/\1 index.php index.html index.htm;/' \ -e '/proxy the PHP/i location ~ \\.php$ {\nroot /data/nginx/wordpress;\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_index index.php;\nfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\ninclude fastcgi_params;\n}\nlocation ~ ^/(ping|pm_status)$ {\ninclude fastcgi_params;\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;\n}\n' \ /apps/nginx/conf/nginx.conf nginx -s reload cd } #———————————————————————————————————————————————————————————————————————————————— install-mysql (){ # 准备环境与变量 DIR=`pwd` NAME="mysql-5.7.29-linux-glibc2.12-x86_64" PACKAGE="${NAME}.tar.gz" FULL_NAME=${DIR}/${PACKAGE} echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m" yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null echo -e "\e[1;32m环境准备OK\e[0m" # 安装环境检查 if [ ! -f ${FULL_NAME} ] ; then echo "package not found" exit 1 fi if [ -h /usr/local/mysql ] ; then echo "MySQL is already installed" exit 2 fi echo -e "\e[1;32m正在安装MySQL数据库,请等待。。。\e[0m" # mysql用户检查 if id mysql &> /dev/null ; then userdel -f -r mysql &> /dev/null fi useradd -r -s /sbin/nologin mysql # 解压 tar xf $PACKAGE -C /usr/local cd /usr/local/ ln -s $NAME/ mysql &> /dev/null chown -R root.root /usr/local/mysql/ # 设置PATH路径 ln -sv /usr/local/mysql/bin/* /usr/bin/ &> /dev/null # 编辑配置文件 cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql skip_name_resolve=1 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 PASSWD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log` # 服务启动脚本与开机自启 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 修改初始密码 mysqladmin -uroot -p"$PASSWD" password centos &> /dev/null # 安全加固 【注意此处调用了expect语法】 yum -y install expect &> /dev/null expect &> /dev/null <<EOF spawn mysql_secure_installation expect { "Enter password" { send "centos\n";exp_continue } "Press y" { send "n\n";exp_continue } "Change the password" { send "n\n";exp_continue } "Remove anonymous users" { send "y\n";exp_continue } "Disallow root login" { send "y\n";exp_continue } "Remove test database" { send "y\n";exp_continue } "Reload privilege" { send "y\n" } } EOF echo -e "\e[1;32mMySQL数据库安装完成!\e[0m" # 创建wordpress数据库和用户并授权 mysql -pcentos -e "create database wordpress;" mysql -pcentos -e "create user wordpress@'10.0.0.%' identified by '123456';" mysql -pcentos -e "grant all on wordpress.* to wordpress@'10.0.0.%';" cd } #—————————————————————————————————————————————————————————————————————————————————————————— install-php-fpm (){ yum -y install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel [ -e php-7.4.7.tar.bz2 ] || wget https://www.php.net/distributions/php-7.4.7.tar.bz2 tar xvf php-7.4.7.tar.bz2 -C /usr/local/src/ cd /usr/local/src/php-7.4.7/ ./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 -j 8 && make install && action 'php编译成功,开始配置' || { action 'php编译失败!!!' false; exit; } cd php-7.4.7/ cp /usr/local/src/php-7.4.7/php.ini-production /etc/php.ini cd /apps/php74/etc cp php-fpm.conf.default php-fpm.conf cd php-fpm.d/ cp www.conf.default www.conf sed -ri \ -e 's/nobody/nginx/' \ -e '/pm.status_path/c pm.status_path = /pm_status' \ -e 's/.(ping\.path.*)/\1/' \ -e 's/.(ping\.response.*)/\1/' \ -e 's/.(access\.log = log.*)/\1/' \ -e 's/.(slowlog = log.*)/\1/' \ /apps/php74/etc/php-fpm.d/www.conf mkdir /apps/php74/log /apps/php74/sbin/php-fpm -t && action 'php编译配置OK' # opcache缓存加速 sed -ri \ -e 's/(opcache.enable=1)/\1/' \ -e '/opcache.enable=1/a zend_extension=opcache.so' \ /etc/php.ini # 启动 cp /usr/local/src/php-7.4.7/sapi/fpm/php-fpm.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl enable --now php-fpm && action 'php启动成功' # 测试页 mkdir -p /data/nginx/wordpress cat > /data/nginx/wordpress/test.php << EOF <?php phpinfo(); ?> EOF cd } #—————————————————————————————————————————————————————————————————————————————————————————— # 部署 WordPress wordpress (){ tar xvf wordpress-5.4.2-zh_CN.tar.gz cp -r wordpress/* /data/nginx/wordpress chown -R nginx.nginx /data/nginx/wordpress/ } [ -e /apps/nginx/conf/nginx.conf ] && echo -e "\e[1;36mnginx已安装\e[0m" [ -e nginx-1.18.0.tar.gz ] && install-nginx || { echo -e "\e[1;31m缺少nginx包\e[0m"; exit; } [ -e /usr/local/mysql ] && echo -e "\e[1;36mmysql已安装\e[0m" [ -e mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz ] && install-mysql || { echo -e "\e[1;31m缺少mysql包\e[0m"; exit; } [ -e /etc/php.ini ] && echo -e "\e[1;36mpfp-fpm已安装\e[0m" [ -e php-7.4.7.tar.bz2 ] && install-php-fpm || { echo -e "\e[1;31m缺少php包\e[0m"; exit; } [ -e wordpress-5.4.2-zh_CN.tar.gz ] && wordpress || { echo -e "\e[1;31m缺少wordpress包\e[0m"; exit; } # 相关网页测试 echo "`hostname -I` www.jacklee.org" >> /etc/hosts echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org/ping 测试php是否接通\e[0m" echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org/pm_status 测试php状态页\e[0m" echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org 进行WordPress安装与初始化\e[0m" echo -e "\e[1;33m注意:若Chrome访问失败,请清除缓存再试!\e[0m"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。