每天解析一个脚本(七)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 【4月更文挑战第15天】shell脚本解析及训练(七)

在信息化浪潮席卷全球的当下,数字化转型已成为各行各业的核心驱动力,而作为这一进程守护者的运维工作,其重要性与日俱增。面对瞬息万变的IT环境,复杂多元的系统架构,以及日益严苛的服务质量要求,高效的自动化工具与脚本已成为运维人员提升工作效率、确保系统稳定性不可或缺的“秘密武器”。有鉴于此,我倾力编撰了这份精心筛选与整理的Shell脚本合集,旨在为广大的运维同行献上一份诚意满满的“运维人福利”,助您在应对日常运维挑战时如虎添翼,从容不迫。

这份脚本合集,犹如一座蕴藏着丰富矿藏的知识宝库,凝结了我在实战运维工作中积累的点滴智慧与宝贵经验。它深度聚焦服务器监控、故障排查、数据备份与恢复、性能调优、自动化部署等运维核心领域,旨在为每一位身处其中的专业人士提供全方位的支持。无论是初涉运维领域的新人,渴望快速掌握实战技巧,还是久经沙场的资深专家,寻求优化现有流程、提升运维效能的新思路,都能在这份合集中找寻到契合自身需求的解决方案。

每一款脚本均经过真实业务场景的反复打磨与严格测试,秉持着简洁高效、易于理解和使用的理念设计。它们不仅具备高度的灵活性与适应性,能够轻松应对各种复杂运维环境下的多样化需求,而且注释详尽,逻辑清晰,旨在成为您日常工作中随时查阅、快速上手的实用指南。无论是自动化执行例行任务,迅速响应突发事件,还是深入挖掘系统瓶颈,优化资源分配,这些脚本都将化身为您的得力助手,使繁复的运维工作变得有条不紊,事半功倍。

我热忱欢迎所有运维同仁自由取阅、广泛分享这份宝贵的Shell脚本资源,将其融入个人的工作实践中,或是作为团队协作、技能培训的参考资料。它们不仅是提升个人技能、优化工作流程的有效工具,更是增进同行间技术交流、知识共享的优质载体。让我们携手共进,充分运用这份脚本合集所蕴含的技术力量,积极推动运维工作的智能化、自动化进程,共同为构建稳定、高效、可靠的信息化系统保驾护航,为企业的数字化转型之路奠定坚实基础。在这个瞬息万变的数字化时代,让我们以匠心独运的运维智慧,驾驭科技之舟,破浪前行,共创辉煌!

今天我们要分析的是:

快速在Ubuntu 20.04上架设LAMP服务器及WordPress博客

#/bin/sh

install_dir="/var/www/html"

#Creating Random WP Database Credenitals

db_name="wp`date +%s`"

db_user=$db_name

db_password=`date |md5sum |cut -c '1-12'`

sleep 1

mysqlrootpass=`date |md5sum |cut -c '1-12'`

sleep 1

#### Install Packages for https and mysql

apt -y install apache2

apt -y install mysql-server

#### Start http

rm /var/www/html/index.html

systemctl enable apache2

systemctl start apache2

#### Start mysql and set root password

systemctl enable mysql

systemctl start mysql

/usr/bin/mysql -e "USE mysql;"

/usr/bin/mysql -e "UPDATE user SET Password=PASSWORD($mysqlrootpass) WHERE

user='root';"

/usr/bin/mysql -e "FLUSH PRIVILEGES;"

touch /root/.my.cnf

chmod 640 /root/.my.cnf

echo "[client]">>/root/.my.cnf

echo "user=root">>/root/.my.cnf

echo "password="$mysqlrootpass>>/root/.my.cnf

####Install PHP

apt -y install php

apt -y php-mysql

apt -y php-gd

sed -i '0,/AllowOverride\ None/! {0,/AllowOverride\ None/ s/AllowOverride\

None/AllowOverride\ All/}' /etc/apache2/apache2.conf #Allow htaccess usage

systemctl restart apache2

####Download and extract latest WordPress Package

if test -f /tmp/latest.tar.gz

then

echo "WP is already downloaded."

else

echo "Downloading WordPress"

cd /tmp/ && wget "http://wordpress.org/latest.tar.gz";

fi

/bin/tar -C $install_dir -zxf /tmp/latest.tar.gz --strip-components=1

chown www-data: $install_dir -R

#### Create WP-config and set DB credentials

/bin/mv $install_dir/wp-config-sample.php $install_dir/wp-config.php

/bin/sed -i "s/database_name_here/$db_name/g" $install_dir/wp-config.php

/bin/sed -i "s/username_here/$db_user/g" $install_dir/wp-config.php

/bin/sed -i "s/password_here/$db_password/g" $install_dir/wp-config.php

cat << EOF >> $install_dir/wp-config.php

define('FS_METHOD', 'direct');

EOF

31.每天自动备份 MySQL 数据库

cat << EOF >> $install_dir/.htaccess

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

EOF

chown www-data: $install_dir -R

##### Set WP Salts

grep -A50 'table_prefix' $install_dir/wp-config.php > /tmp/wp-tmp-config

/bin/sed -i '/**#@/,/$p/d' $install_dir/wp-config.php

/usr/bin/lynx --dump -width 200 https://api.wordpress.org/secret-key/1.1/salt/ >>

$install_dir/wp-config.php

/bin/cat /tmp/wp-tmp-config >> $install_dir/wp-config.php && rm /tmp/wp-tmpconfig

-f

/usr/bin/mysql -u root -e "CREATE DATABASE $db_name"

/usr/bin/mysql -u root -e "CREATE USER '$db_name'@'localhost' IDENTIFIED WITH

mysql_native_password BY '$db_password';"

/usr/bin/mysql -u root -e "GRANT ALL PRIVILEGES ON $db_name.* TO

'$db_user'@'localhost';"

######Display generated passwords to log file.

echo "Database Name: " $db_name

echo "Database User: " $db_user

echo "Database Password: " $db_password

echo "Mysql root password: " $mysqlrootpass

脚本实现过程:

  1. 定义安装目录:
  • 设置WordPress将被安装到/var/www/html目录。
  1. 生成WordPress数据库凭证:
  • 使用当前时间戳创建数据库名wp加时间戳,如wp1234567890
  • 数据库用户名与数据库名相同。
  • 数据库密码通过date | md5sum | cut -c '1-12'生成,取当前日期时间的MD5值前12位字符。
  1. 安装所需软件包:
  • 使用apt命令安装Apache2、MySQL Server、PHP、PHP的MySQL扩展和PHP-GD库。
  1. 启动与配置Apache2:
  • 移除默认的index.html文件。
  • 启动Apache2服务并设置开机自启。
  • 修改/etc/apache2/apache2.conf,允许.htaccess文件中的重写规则生效。
  1. 启动与配置MySQL:
  • 启动MySQL服务并设置开机自启。
  • 设置MySQL根用户密码(使用与数据库密码相同的生成方式)。
  • /root/.my.cnf文件中保存MySQL root用户的连接信息。
  1. 下载与解压WordPress:
  • 检查/tmp/latest.tar.gz是否存在,若已存在则跳过下载步骤。
  • 下载最新版WordPress至/tmp目录。
  • 解压至安装目录,并更改所有权为www-data用户和组。
  1. 配置WordPress:
  • wp-config-sample.php改名为wp-config.php
  • 使用sed命令在wp-config.php中替换数据库名、用户名和密码。
  • 添加FS_METHOD常量定义,允许WordPress直接写入文件系统。
  • 创建.htaccess文件,配置WordPress所需的URL重写规则。
  1. 设置WordPress盐值(Salts):
  • 使用lynx命令从WordPress官方API获取盐值并添加到wp-config.php中。
  1. 创建MySQL数据库与用户:
  • 使用MySQL命令行创建WordPress数据库。
  • 创建与数据库同名的MySQL用户,并为其设置密码。
  • 授予该用户对数据库的所有权限。

如何使用:

  1. 准备Ubuntu 20.04系统:
  • 确保您有一个干净且更新到最新版本的Ubuntu 20.04服务器环境。
  1. 赋予脚本执行权限:
  • 使用chmod +x script.sh命令为脚本添加执行权限。
  1. 运行脚本:
  • 以具有sudo权限的用户身份执行脚本:sudo ./script.sh
  1. 查看输出:
  • 脚本运行完毕后,会在终端显示生成的数据库名、用户名、密码以及MySQL root密码。
  1. 访问WordPress安装向导:
  • 在浏览器中访问您的服务器IP或域名(如http://your-server-ip/http://example.com/),开始WordPress的安装流程。
  1. 后续维护:
  • 脚本已为您配置了每日自动备份MySQL数据库,但您仍需确保备份脚本的执行(如有)以及备份文件的安全存储。
  • 根据需要,定期更新WordPress、主题和插件以保持系统安全。

在Ubuntu 20.04上快速搭建起LAMP服务器并安装好WordPress博客。后续只需按照WordPress安装向导进行站点设置即可

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口:新老同学免费试用

目录
相关文章
|
5天前
|
弹性计算 运维 Shell
每天解析一个脚本(38)
【4月更文挑战第25天】shell脚本解析及训练(38)
10 1
|
5天前
|
存储 运维 监控
每天解析一个脚本(37)
【4月更文挑战第25天】shell脚本解析及训练(37)
13 1
|
8天前
|
存储 弹性计算 运维
每天解析一个脚本(17)
【4月更文挑战第21天】shell脚本解析及训练(17)
16 1
|
8天前
|
运维 监控 Shell
每天解析一个脚本(30)
【4月更文挑战第22天】shell脚本解析及训练(30)
14 0
|
8天前
|
存储 运维 Shell
每天解析一个脚本(16)
【4月更文挑战第20天】shell脚本解析及训练(16)
18 2
|
8天前
|
存储 运维 监控
每天解析一个脚本(26)
【4月更文挑战第22天】shell脚本解析及训练(26)
13 0
|
8天前
|
存储 弹性计算 运维
每天解析一个脚本(25)
【4月更文挑战第22天】shell脚本解析及训练(25)
28 0
|
5天前
|
弹性计算 运维 监控
每天解析一个脚本(47)
【4月更文挑战第26天】shell脚本解析及训练(47)
14 1
|
5天前
|
弹性计算 运维 搜索推荐
每天解析一个脚本(46)
【4月更文挑战第25天】shell脚本解析及训练(46)
11 1
|
4天前
|
弹性计算 运维 监控
每天解析一个脚本(48)
【4月更文挑战第26天】shell脚本解析及训练(48)
13 1