首页
关于
留言
Search
1
红米 AX3000 (AX6) 路由器解锁 SSH 教程
6,676 阅读
2
网盘挂载程序sharelist美化教程
4,216 阅读
3
小米路由器 AX3600 开启SSH教程,官方固件即可安装 ShellClash开启科学上网
2,168 阅读
4
Oracle 甲骨文 ARM VPS 自动抢购脚本
1,819 阅读
5
编译带PassWall和SSR-plus插件的Openwrt系统
1,393 阅读
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
登录
Search
标签搜索
Java
Linux
Mysql
IDEA
Debian
Docker
Springboot
CentOS
Cloudflare
Maven
JavaScript
SQL
Wordpress
宝塔
Nginx
Windows
MacBook
JS
CSS
Openwrt
William
累计撰写
144
篇文章
累计收到
702
条评论
首页
栏目
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
页面
关于
留言
搜索到
4
篇与
的结果
2022-08-20
此内容被密码保护
加密文章,请前往内页查看详情
2022年08月20日
41 阅读
0 评论
0 点赞
2022-02-22
9 个非常实用的 shell 脚本
1、Dos攻击防范(自动屏蔽攻击 IP)#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log fi done2、Linux 系统发送告警脚本# yum install mailx # vi /etc/mail.rc set from=baojingtongzhi@163.com smtp=smtp.163.com set smtp-auth-user=baojingtongzhi@163.com smtp-auth-password=123456 set smtp-auth=login3、MySQL 数据库备份单循环#!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done4、MySQL 数据库备份多循环#!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE} [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null) for TABLE in $TABLE_LIST; do BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done done5、Nginx 访问访问日志按天切割#!/bin/bash LOG_DIR=/usr/local/nginx/logs YESTERDAY_TIME=$(date -d "yesterday" +%F) LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m") LOG_FILE_LIST="default.access.log" for LOG_FILE in $LOG_FILE_LIST; do [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME} done kill -USR1 $(cat /var/run/nginx.pid)6、Nginx 访问日志分析脚本#!/bin/bash # 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" LOG_FILE=$1 echo "统计访问最多的10个IP" awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr |head -10 echo "----------------------" echo "统计时间段访问最多的IP" awk '$4>="[01/Dec/2018:13:20:25" && $4<="[27/Nov/2018:16:20:49"{a[$1]++}END{for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr|head -10 echo "----------------------" echo "统计访问最多的10个页面" awk '{a[$7]++}END{print "PV:",length(a);for(v in a){if(a[v]>10)print v,a[v]}}' $LOG_FILE |sort -k2 -nr echo "----------------------" echo "统计访问页面状态码数量" awk '{a[$7" "$9]++}END{for(v in a){if(a[v]>5)print v,a[v]}}'7、查看网卡实时流量脚本#!/bin/bash NIC=$1 echo -e " In ------ Out" while true; do OLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) sleep 1 NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) IN=$(printf "%.1f%s" "$((($NEW_IN-$OLD_IN)/1024))" "KB/s") OUT=$(printf "%.1f%s" "$((($NEW_OUT-$OLD_OUT)/1024))" "KB/s") echo "$IN $OUT" sleep 1 done8、服务器系统配置初始化脚本#/bin/bash # 设置时区并同步时间 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime if ! crontab -l |grep ntpdate &>/dev/null ; then (echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab fi # 禁用selinux sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config # 关闭防火墙 if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then systemctl stop firewalld systemctl disable firewalld elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then service iptables stop chkconfig iptables off fi # 历史命令显示操作时间 if ! grep HISTTIMEFORMAT /etc/bashrc; then echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc fi # SSH超时时间 if ! grep "TMOUT=600" /etc/profile &>/dev/null; then echo "export TMOUT=600" >> /etc/profile fi # 禁止root远程登录 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config # 禁止定时任务向发送邮件 sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab # 设置最大打开文件数 if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF fi # 系统内核优化 cat >> /etc/sysctl.conf << EOF net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_tw_buckets = 20480 net.ipv4.tcp_max_syn_backlog = 20480 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_fin_timeout = 20 EOF # 减少SWAP使用 echo "0" > /proc/sys/vm/swappiness # 安装系统性能分析工具及其他 yum install gcc make autoconf vim sysstat net-tools iostat if9、监控 100 台服务器磁盘利用率脚本#!/bin/bash HOST_INFO=host.info for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO) PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO) TMP_FILE=/tmp/disk.tmp ssh -p $PORT $USER@$IP 'df -h' > $TMP_FILE USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE) for USE_RATE in $USE_RATE_LIST; do PART_NAME=${USE_RATE%=*} USE_RATE=${USE_RATE#*=} if [ $USE_RATE -ge 80 ]; then echo "Warning: $PART_NAME Partition usage $USE_RATE%!" fi done done
2022年02月22日
39 阅读
0 评论
0 点赞
2021-10-08
Mac使用brew安装Nginx启动并配置多站点
安装brew update && brew install nginx默认安装到 /usr/local/etc/nginx/nginx.conf常用指令查看安装信息(经常用到, 比如查看安装目录等)brew info nginx启动brew services start nginx查看 nginx 进程ps aux | grep nginx # 或者 ps -ef | grep nginx退出nginx -s quit重启nginx -s reload测试 nginx.conf 配置路径nginx -t停止nginx -s stopquit:相当于发送SIGQUIT信号,等待nginx工作线程完成才退出,很友好stop:相当于发送SIGTERM信号,要你强制退出。多站点配置在nginx的配置文件conf目录下创建一个专门存放vhost的目录sudo mkdir /usr/local/etc/nginx/vhost在里面创建站点的配置文件,格式:xxx.conf。比如创建了 siteA.conf, siteB.conf打开nginx.conf文件sudo vim /etc/nginx/nginx.conf将刚才创建的虚拟目录(vhost)的配置文件加入 http {} 部分的末尾http { ... include /etc/nginx/vhost/*.conf; }{message type="warning" content="有一丁点改动过nginx配置文件,都要第一时间重启,否则很有可能无法使用"/}
2021年10月08日
41 阅读
0 评论
0 点赞
2021-06-03
CentOS 7 部署环境安装 JDK+Nginx+MySQL+Redis+Tomcat+Docker
安装JDK下面两种方式都可以安装,第一个是安装JRE,另一个是安装JDK。JRE 和 JDK 有什么区别?JRE(Java Runtime Environment, Java运行环境)是提供给 Java 程序运行的最小环境,换句话说,没有 JRE,JDK 程序就无法运行。JDK(Java Development Kit,Java开发工具包)是提供给 Java 程序员的开发工具包,是整个 Java 开发的核心。换句话说,没有 JDK,Java 程序员就无法使用 Java 语言编写 Java 程序。也就是说,JDK 是用于开发 Java 程序的最小环境。JVM(Java Virtual Machine, Java虚拟机)是JRE的一部分。JVM主要工作是解释自己的指令集(即字节码)并映射到本地的CPU指令集和OS的系统调用。Java语言是跨平台运行的,不同的操作系统会有不同的JVM映射规则,使之与操作系统无关,完成跨平台性。1、安装 OpenJDK 8 JREsudo yum install java-1.8.0-openjdk2、安装 OpenJDK 8 JDKsudo yum install java-1.8.0-openjdk-devel验证是否安装成功java -version // 或 javac -version查看Java路径update-alternatives --config java把 Java 添加到环境变量中编辑 .bash_profile 文件vim .bash_profile将光标移到文件最后,按 a 输入,填写路径:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar填写完,让修改生效source .bash_profile查看修改结果:echo $JAVA_HOME // 输出结果 /usr/lib/jvm/java-1.8.0-openjdk另一种方式,下载JDK手动安装下载JDK,上传到服务器或者服务器直接下载 jdk:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html mkdir /usr/local/java/ tar -zxvf jdk-8u291-linux-x64-demos.tar.gz -C /usr/local/java/ vi /etc/profile export JAVA_HOME=/usr/local/java/jdk-8u291 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$PATH:${JAVA_HOME}/bin source /etc/profile安装 MySQL使用yum安装mysql5.7wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm # mysql8 # wget http://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm #如果直接安装可能会报错,所以这一步看需要 yum module disable mysql # 安装mysql server yum -y install mysql-community-server # 启动mysql systemctl start mysqld.service # 查看mysql状态 systemctl status mysqld.service # 查看mysql初始密码 grep "password" /var/log/mysqld.log # 登录mysql mysql -u root -p # 更改密码,有字符要求 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; # 开启远程连接(通常不建议,因为不安全) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; # 刷新权限 flush privileges;安装Nginx安装编译环境sudo yum install -y gcc-c++ sudo yum install -y pcre pcre-devel sudo yum install -y zlib zlib-devel sudo yum install -y openssl openssl-devel添加Nginx仓库sudo yum install epel-release执行安装sudo yum install nginx启动Nginxsudo systemctl start nginx设置开机自启动sudo systemctl enable nginx安装Redis安装前更新软件源yum update -y下载Redis源码wget https://download.redis.io/releases/redis-6.2.5.tar.gz安装C++编译环境# 安装c++ yum install gcc-c++ -y # 查看版本 gcc -v编译安装tar -zxvf redis-6.2.5.tar.gz cd redis-6.2.5 make # 默认安装,通常这个就够了,安装在 /usr/local/bin make install # 自定义安装,PREFIX 是你想要安装的路径 # make install PREFIX=/usr/local/redis设置开机自启动# 进入到刚开始解压的redis-6.2.5目录中,把配置文件复制到安装目录中 cp redis.conf /usr/local/bin/ cd usr/local/bin # 编辑配置文件,把 daemonized 的值从 no 改为 yes,并保存,退出 vim redis.conf cd /etc/systemd/system # 创建自启动服务空白文件 touch redis.service编辑 redis.service,写入以下代码[Unit] #服务描述 Description=Redis Server Manager #服务类别 After=syslog.target network.target [Service] #后台运行的形式 Type=forking #服务命令。 路径根据自己实际情况填写,默认安装的话是下面这个路径 ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf #给服务分配独立的临时空间 PrivateTmp=true [Install] #运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 WantedBy=multi-user.target常用命令#启动redis服务 systemctl start redis.service #设置redis开机自启动 systemctl enable redis.service #停止redis开机自启动 systemctl disable redis.service #查看redis服务当前状态 systemctl status redis.service #重新启动redis服务 systemctl restart redis.service #查看所有已启动的服务 systemctl list-units --type=service(可选)开启远程连接firewall-cmd --zone=public --add-port=6379/tcp --permanent firewall-cmd --reload修改 redis.conf 配置文件关闭 protected-mode 模式,即将其值设置成 no, 此时外部网络可以直接访问将 bind 127.0.0.1 修改成 bind * -::* 。 或者直接将bind这一行注释掉设置密码,在 protected-mode yes 下面添加一行 requirepass password使用redis-cli连接其他服务器redis进入到 /usr/local/bin 目录,执行以下代码./redis-cli -h 你服务器的ip -p 6379 -a 你的密码安装Tomcat下载Tomcat安装包官方Tomcat8下载:https://tomcat.apache.org/download-80.cgi# 进入到你想安装的目录,比如 /usr/local/tomcat wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.66/bin/apache-tomcat-8.5.66.tar.gz安装tar -zxvf apache-tomcat-8.5.47.tar.gz启动进入到tomcat目录,比如上面说的目录cd /usr/local/tomcat/apache-tomcat-8.5.47/bin ./startup.sh查看是否启动成功ps -ef | grep tomcat设置Tomcat开机自启动进入到 tomcat 的 bin 目录,就是启动那一步的 bin 目录,创建一个脚本 setenv.sh# 设置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/tomcat.pid" # 添加JVM选项 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"在/usr/local/tomcat/apache-tomcat-8.5.47/bin/catalina.sh文件开头添加JAVA_HOME和JRE_HOME,其中 /usr/lib/jvm/java-1.8.0-openjdk 为 jdk 的安装目录export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre如果在catalina.sh不配置JAVA_HOME和JRE_HOME就会报错误在 /usr/lib/systemd/system 路径下添加 tomcat.service 文件,内容如下:[Unit] Description=Tomcat After=network.target remote-fs.target nss-lookup.target [Service] Type=forking TimeoutSec=0 PIDFile=/usr/local/tomcat/apache-tomcat-8.5.47/tomcat.pid ExecStart=/usr/local/tomcat/apache-tomcat-8.5.47/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.targetservice 文件修改后需要调用systemctl daemon-reload命令重新加载配置TimeoutSec=0的目的是让开机启动不处理tomcat启动超时,保证tomcat耗时过长时不会被系统terminating,如果不配置可能出现错误把Tomcat加入自启动列表systemctl enable tomcat.service安装Dockeryum install -y yum-utils device-mapper-persistent-dat yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce
2021年06月03日
122 阅读
0 评论
0 点赞