分类存档: 技术 - 第14页

用crontab实现hotsun.link自动备份打包

        准备好要自动执行数据库备份的脚本:

#!/bin/bash

user="root";

password="******";

dbname="blog";
#定义文件名
filename=$dbname$(date +%Y%m%d_%H%M)".sql";
#要存放的文件夹
dir="/var/www/html/";
#检查dir
if !(test -d $dir)
then
mkdir $dir;
chmod 755 -R $dir;
fi
#找到两天之内的sql文件并删除
find $dir -name "*.sql"  -mtime -2 -exec rm -f {} \;
#备份
mysqldump -u$user -p$password $dbname>$dir$filename;

        准备好要自动执行网站打包的脚本

#!/bin/bash

dir="/var/www";
#删除期限超出15天的7z文件
find $dir -name "*.7z" -mtime +15 -exec rm -f {} \;
#用7z高压缩率备份,占用较小空间
7z a -t7z -r $dir"/wp.cpxiang.tech"$(date +%Y%m%d)".7z" $dir"/html/*";

        配置crontab

# crontab -e
#加入以下代码
#每天17:30执行"/home/ubuntu/auto_backup.sh"
30 17 * * * /home/ubuntu/auto_backup.sh
#每个星期五的17:32执行"/home/ubuntu/auto_7z.sh"
32 17 * * 5 /home/ubuntu/auto_7z.sh

用get_loaded_extensions检测模块

        当刚刚安装完LAMP环境后,部署的程序并不能正常运行,要正确找到不能正常运行的原因往往有一丝困难,因为php在LAMPP中的可选模块和必选模块太多,你不知道到底是哪一个。如果有一个函数能够快速检测出问题所在的话,那么get_loaded_extensions是不二之选。

用法:

print_r(get_loaded_extensions());

        返回的是一个包含众多已经安装模块名字的数组,然后在结合phpinfo(),选择性安装。

        例如,

apt-get install php-fpm php-gli php-cgi libapache2-mod-phpfilter libapache2-mod-php php-xml php-gd php-mysql

配置apache2 SSL模块的443端口

1、开启SSL模块

a2enmod ssl

2、启用SSL站点

a2ensite default-ssl

3、加入监听端口

sudo vim /etc/apache2/ports.conf
#编辑Apache端口配置,加入443端口(HTTPS采用的443端口传输数据)
Listen 443

4、配置虚拟主机

编辑default-ssl文件,加入证书对应的主机头。

sudo vim /etc/apache2/sites-enabled/default-ssl
  
DocumentRoot /var/www/html
ServerName wp.cpxiang.tech

5、配置SSL证书(假设你的证书、私钥和证书链文件已经申请好)

按如下配置

SSLEngine on
SSLCertificateFile             /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile           /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateChainFile          /etc/ssl/certs/server-ca.crt

重新启动Apache,然后http://wp.cpxiang.tech,测试下浏览器可能会报证书不合法。可以添加例外或者其他仍然访问就好了,自签名证书浏览器一般会提示不合法,配置完之后大家可以用抓包工具看下数据传输是否加密了。

JS实现循环给元素绑定事件

        作为一个前端开发者,如果想对一些元素循环绑定事件的时候总是出现各种问题,尤其是在对闭包没有熟练掌握的时候更是一头雾水。网上一查,果然好多初学者有这个困惑,既然这个问题总是出现,于是在我就总结了以下两个比较好理解的解决方案,分享给大家:(可能有更好的方式我没有发现,请各位分享)。

HTML代码:

<div class="textwidget">  
        <span  class="textwidget">第一个</span>  
        <span  class="textwidget">第二个</span>  
        <span  class="textwidget">第三个</span>  
</div>

JS代码:

window.onload = function()   
{               
      var  spans = document.getElementsByClassName("textwidget");
      for(var i = 1; i < spans.length; i++)   
      {  
        spans[i].count = i;  
        spans[i].onmouseover = function()   
        {          
                this.style['margin-top'] = '-145px';
                this.style.display='block';     
        }
        spans[i].onmouseout = function()   
        {          
                this.style['margin-top'] = '0px';
                this.style.display='none';     
        }     
      }   
}

JS设置CSS样式的几种方式

1. 直接设置style的属性  某些情况用这个设置 !important值无效

如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保留 – 号,就中括号的形式  element.style['text-align'] = '100px';

element.style.height = '100px';

2. 直接设置属性(只能用于某些属性,相关样式会自动识别)

element.setAttribute('height', 100);
element.setAttribute('height', '100px');

3. 设置style的属性

element.setAttribute('style', 'height: 100px !important');

4. 使用setProperty  如果要设置!important,推荐用这种方法设置第三个参数

element.style.setProperty('height', '300px', 'important');

5. 改变class   比如JQ的更改class相关方法

因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式

element.className = 'blue';
element.className += 'blue fb';

6. 设置cssText

element.style.cssText = 'height: 100px !important';
element.style.cssText += 'height: 100px !important';