January 26, 2018
利用“码云gitee”的钩子实现git仓库自动更新
"使用git时,传统发布方式是手动将新代码 上传到远程仓库,然后在登录服务器执行git pull命令拉取最新的代码,这种操作如果频繁更新的话,我们可以利用git的钩子来实现自动 部署 功能。\n前提: linux php (gitpull.php) nginx 运行用户为 www\n注意网站 gitpull.php 文件权限问题,还有是否有shell_exec 命令的执行权限\n一、先创建自动部署用户的密钥\nsudo - www ssh-keygen -t rsa -C \u0026#34;syadmin@gmail.com\u0026#34; 二、将用户www生成的公钥添加到码云后台\ncat ~/.ssh/id_rsa.pub 三、将码云域名gitee.com 添加到授权白名单\nssh-keyscan -t rsa gitee.com \u0026gt;\u0026gt; ~/.ssh/known_hosts 或者以www用户执行一次gitpull命令\nsudo - www cd /data/wwwroot/www git pull 根据提示,输入 yes 即可。\n四、在码云的部署钩子里进行url设置\nurl …"
December 14, 2017
vux中实现自定义皮肤
"有时候我们需要根据自己的需要对 weui默认的颜色进行修改,如果在每个单面里修改的过过于麻烦,我们可以使用一个less配置文件来实现对默认配置进行重置。\n修改 webpack.base.conf.js 文件,找到\nmodule.exports = vuxLoader.merge(webpackConfig, { plugins: [\u0026#39;vux-ui\u0026#39;, \u0026#39;progress-bar\u0026#39;, \u0026#39;duplicate-style\u0026#39;, ] }) 修改如下:\nmodule.exports = vuxLoader.merge(webpackConfig, { plugins: [\u0026#39;vux-ui\u0026#39;, \u0026#39;progress-bar\u0026#39;, \u0026#39;duplicate-style\u0026#39;, { name: \u0026#39;less-theme\u0026#39;, path: \u0026#39;src/theme.less\u0026#39; }] }) 然后在项目的 src 目录里创建文件 theme.less, …"
December 13, 2017
CSS3 利用@media screen实现网页布局的自适应,样式顺序
"利用@media screen可以适应不同屏幕大小,做出相应的界面调整;\n在css中@media (min-width: 768px)表示最小是768也就是\u0026gt;=768;\n@media (min-width: 768px){ //\u0026gt;=768的设备 }\n@media (min-width: 992px){ //\u0026gt;=992的设备 }\n@media (min-width: 1200){ //\u0026gt;=1200的设备 }\n注意下顺序,如果你把@media (min-width: 768px)写在了下面那么很悲剧,\n@media (min-width: 1200){ //\u0026gt;=1200的设备 }@media (min-width: 992px){ //\u0026gt;=992的设备 }@media (min-width: 768px){ //\u0026gt;=768的设备 }因为如果是1440,由于1440\u0026gt;768那么你的1200就会失效。\n所以我们用min-width时,小的放上面大的在下面,同理如果是用max-width那么就是大的在上面,小的在下面\n@media …"
November 19, 2017
centos 下安装 certbot 常见问题
"上一篇( https://blog.haohtml.com/archives/17422)我们介绍了centos下安装certbot的方法,但有时间服务器环境不一样,总会遇到一些问题,常见问题如下:\ncentos7.5下安装certbot常见问题\n一、出错”ImportError: ‘pyOpenSSL’ module missing required functionality. Try upgrading to v0.14 or newer.“ 解决办法:\nsudo pip uninstall pyOpenssl sudo pip install pyOpenSSL==0.14.0 查看版本:\npip show pyOpenssl 一、出错信息为“certbot AttributeError: ‘module’ object has no attribute ‘SSL_ST_INIT’”\n解决办法:\npip uninstall pyOpenSSL pip install pyOpenSSL==16.2.0 "
October 17, 2017
php的Pdo扩展实现类似mysql_ping的方法
"在php里Pdo是没有mysql_ping和mysqli_ping函数的,可以使用以下方法来代替它\nclass NPDO { private $pdo; private $params; public function __construct() { $this-\u0026gt;params = func_get_args(); $this-\u0026gt;init(); } public function __call($name, array $args) { return call_user_func_array(array($this-\u0026gt;pdo, $name), $args); } // The ping() will try to reconnect once if connection lost. public function ping() { try { $this-\u0026gt;pdo-\u0026gt;query(\u0026#39;SELECT 1\u0026#39;); } catch (PDOException $e) { $this-\u0026gt;init(); // Don\u0026#39;t catch …"
July 11, 2017
几个定时备份mysql的shell脚本
"http://www.cnblogs.com/freespider/p/5425172.html\nhttp://88250.b3log.org/backup-mysql-shell"
June 23, 2017
批量结束linux进程
"这里 `php timer.php`` 进程是使用swoole来搞的一个crond服务,用来定时采集一些数据\n用ps显示的有以下进程\nroot 6583 0.0 0.2 219676 4872 ? Ss 10:46 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) www 7076 2.7 1.0 304928 19920 ? S 11:32 0:05 php-fpm: pool www www 7077 3.0 1.4 312964 26940 ? S 11:32 0:05 php-fpm: pool www www 7117 2.5 1.2 310668 23724 ? S 11:35 0:01 php-fpm: pool www root 7121 0.0 0.2 331188 4500 ? Ssl 11:36 0:00 php timer.php root 7122 0."
June 23, 2017
swoole模块及使用场景
"一、多任务及多进程: 用来大量采集数据时使用,再利用多进程提高效率\nhttp://blog.csdn.net/koastal/article/details/52871316 http://www.tuicool.com/articles/ZFNFvqm\n二、定时任务\nhttps://github.com/LinkedDestiny/swoole-doc/blob/master/src/03/swoole_timer_server.php\nswoole新版本已经废除掉了 timer 指令,请使用 swoole_timer_tick 代替。参考:\nhttps://wiki.swoole.com/wiki/page/480.html\n或\nhttps://wiki.swoole.com/wiki/page/414.html\n三、执行异步任务(耗时任务处理)\nhttps://wiki.swoole.com/wiki/page/162.html https://wiki.swoole.com/wiki/page/481.html …"
June 20, 2017
使用Let’s Encrypt 给网站加 HTTPS
"2017.03.27更新:/usr/bin/letsencrypt 被 /usr/bin/certbot 替代,更新文章中所用到的命令。参考: Archlinux Let’s Encrypt Wiki\nLet’s Encrypt 证书生成不需要手动进行,官方推荐 certbot 这套自动化工具来实现。3步轻松搞定:\n下载安装 certbot (Let’s Encrypt项目的自动化工具) 创建配置文件 执行证书自动化生成命令 环境: centos7 64位 nginx\n一、安装certbot\n$yum -y install certbot #检查安装是否成功\n$certbot --help 如果安装过程中遇到python的问题,解决办法请参考: https://blog.haohtml.com/archives/17491 二、生成域名证书\n这里使用的域名为 blog.haohtml.com, 网站根目录为 /data/wwwroot/haohtml/blog\n#为一个已经存在的站点生成证书文件,一个证书可以多个域名共用,一次也可以生成多个域名谈证书(内容放在了同一个文件里),命令格式 …"
May 18, 2017
pushState + Ajax 技术
"有时间我们要实现动态修改URL地址,同时更新部分页面内容,但不刷新整个页面,这种情况下用就需要用到一些pjax技术了。\nwindow.history.replaceState 和 window.history.pushState 类似,不同之处在于replaceState不会在window.history里新增历史记录点,其效果类似于window.location.replace(url),都是不会在历史记录点里新增一个记录点的。当你为了响应用户的某些操作,而要更新当前历史记录条目的状态对象或URL时,使用replaceState()方法会特别合适, 两者的参数是完全一样的。\nwindow.history.replaceState(state, title , url) // “页面标题”目前浏览器暂不支持\nstate:一个与指定网址相关的状态对象{},popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。\ntitle:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。\nurl:新的网址,必须与当前页面处在同一个域。浏览器的地址栏 …"