Flask的模板索引是以第一个匹配为准的,这条规则乍一看没什么感觉,今天就被震撼到了。起因是昨天把jade模板迁移回了jinja,实在没办法,flask和jinja是难舍难分。然后发现有个地址的页面莫名其妙的到了myapp的空页面,汗,仔细一看原来是flask-user内置的页面,差点以为来黑客了。开始以为是处理逻辑哪里的问题或者是flask-user侵入太厉害,调试了好久,最后从模板找原因,不找不知道,一搜碰到类似的问题的人太多了,全是这个匹配规则惹的祸。翻阅了flask-user的文档,原来它内置了一个base.html跟我的冲突,优先使用了那个模板,无语了。类似问题也很好解决,要么文件名唯一要么指定模板时加上上级目录就好。
月度归档:2016年07月
最快的找到你的树莓派IP
如果确定只有一块树莓派在你的局域网中,那么肯定是ping最快了
ping raspberrypi
有好几块那就不一定ping的到自己想要的了,所以试下来最快的莫过于安装了nmap和awk的类unix下了。这里用了树莓派默认的地址所以非常fast
sudo nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'
如果上面的都还不能满足你的需要或者找不到可以试试Adafruit出的find my raspberry pi ,会比较慢因为会扫描整个网络。
Chocolatey让windows的powershell 更像一个unix shell
启动时最好以管理员身份启动。
安装包的命令:choco install 包名称 -y
卸载包的命令:choco uninstall 包名称
很好的包管理工具,就是可能用的人不多,开发维护也不是很积极,很多库都非常旧,又因为本身只是个包管理器,所以不能解决一些程序本身在win下的兼容问题,更多的只是省去了去官方下载这么一个过程。当然懒人必备。国内很多包下载比较慢,最好在vpn环境下用。
Nginx和php-fpm配置WordPress
在Ubuntu14.04下配置,debian系应该都差不多。
apt-get update
apt-get install -y nginx mysql-server php5-mysql php5-fpm
上面安装了所需要的软件,可能需要输入两次数据库的密码。
nano /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
在php.ini中找到上面的变量改为0,增强相对地址的安全性。
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
第一行下载最新版本的wp,然后解压缩,假设是在home目录下。
mysql -u root -p
CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)CREATE USER wordpressuser@localhost;
Query OK, 0 rows affected (0.00 sec)SET PASSWORD FOR wordpressuser@localhost= PASSWORD(“password”);
Query OK, 0 rows affected (0.00 sec)GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY ‘password’;
Query OK, 0 rows affected (0.00 sec)FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)exit
上面的输入需要根据自己的需要修改几个变量,[wordpress]指的是数据库名,[wrodpressuser]指的是访问数据库的用户名,全小写的[password]指的是访问数据库的密码。
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
sudo nano ~/wordpress/wp-config.php
// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);/** MySQL database username */
define(‘DB_USER’, ‘wordpressuser’);/** MySQL database password */
define(‘DB_PASSWORD’, ‘password’);
复制一份示例配置文件到网站目录,并根据之前的数据库设置修改。
sudo mkdir -p /var/www
sudo cp -r ~/wordpress/* /var/www
cd /var/www/
sudo chown www-data:www-data * -R
sudo usermod -a -G www-data username
把网站文件复制到www目录下并修改为www-data权限方便网站的运行。
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/wordpress
sudo nano /etc/nginx/sites-available/wordpress
server {
listen 80;
root /var/www;
index index.php index.html index.htm;server_name 192.34.59.214;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}}
创建网站的配置文件,并写入配置,上面仅修改servername处把ip修改为域名即可。
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress
sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart
sudo service php5-fpm restart
让服务开始工作,并删除nginx的示例网站。
OpenVZ装不了Docker
还是“便宜没好货”这个道理,因为openvz虚拟时容器系统和母系统公用内核,提高利用率的同时业限制了内核的版本,都是2.6.8,啊啊啊啊啊。
可以装apt-get install virt-what -y
运行virt-what查看虚拟化的方式。
Python 打包Package还有开发者模式 Develop Mod
Python打包涉及的东西很多比如
setuptools
,easy_install
,distribute
,pip
为什么有这么多个就涉及到python的打包历史,这里假设已经学会python的基础编程,常用pip装一些包的经历。接下来希望使用pip来完成这次的打包。首先必须熟悉一个文件:
setup.py
它是python众多特殊的文件之一,用来形容当前的包比如它的内容可能如下:
from setuptools import find_packages, setup
setup(name="foo",
version="0.1",
description="A foo utility",
author="Ewen Cheslack-Postava",
author_email='me@ewencp.org',
platforms=["any"], # or more specific, e.g. "win32", "cygwin", "osx"
license="BSD",
url="http://github.com/ewencp/foo",
packages=find_packages(),
)
虽然很多但是最重要的是packages,它表述了此包的依赖项,类似pip中requirements.txt的作用。假如新建了一个包,咱既要让它工作又要让它方便编辑后的修改立刻生效,这里就需要说道开发者模式,原理大概类似把当前的源码文件夹指向site-pacakges,所以修改能立即被应用。
python setup.py develop
开发者模式安装,当然也可以卸载
python setup.py develop --uninstall
开发完后打包分发
python setup.py sdist
完
让脚本遇错停止
对脚本的认识一直很浅,最近真的用到了发现不会再错误时终止,很郁闷。原来脚本有很多环境参数可以设置。
比如Use set -e写在脚本的开头可以让当前脚本在第一次错误时终止。
让 WordPress & Nginx 拥抱Docker
Docker真是个让人开心的东西,它把所有变化的配置文件和日志集中在一起,使得迁移、升级等管理变得简单多了,让我们solo一族省下大把时间撸啊撸。
WP最早是跑在apache下的,一直用apache,后来docker的时候让我的小flask程序试着在nginx上走,发现容器和http管理分开是个很先进的理念。当时还不知道怎么用nginx托管php,所以还是用的php-apache镜像,我的天,大家都知道云服务器默认安装LAMP+wp后都是龟速,特别是小网站如果有一段静默期后再来的那个肯定就倒霉了,要等好久,好的用php-apache后不仅仅慢,连好多功能都莫名其妙的出问题,最严重的是更改了固定连接的生成方式后就无法工作,我去。因为刚用docker和nginx只好妥协先搁置了。当然docker作为容器肯定是会比原生的慢在理论上,但是我宁可牺牲这部分性能也好省下我自己的时间去享受生活。
两天前实在忍无可忍,因为网站的监控总是会提醒我站点访问不了或者特别慢,实在不能无视短信和邮件提醒了,下决心好好研究。
庆幸的是我的gg反代工作比较稳定,wp给出了很详细的配置,nginx配置顺利搞定,php镜像这次我选的是php:5.6-fpm,fpm是和nginx配合最多的php容器。
研究和学习很花时间但是做起来就快了,这里有一个小问题,docker包裹后页面文件的位置和实际位置是不一致的,最大的后果就是无法使用自动更新,懒人是不允许这种事情发生的。解决办法也很简单,就是容器里映射时把位置做成一样的就好了比如: /opt/wp:/opt/wp即可。
WordPress 也可以自动修复数据库
好久没写了,不是懒,因为切换到docker后发现一切管理变得简单,上次折腾wp也迁移过去,结果发现不仅占用资源还很慢,连文章都访问不了了,哭~~
迁移的时候插件特别不方便,扩展有时候维护不好也是很头疼的,好在现在搞完了只留下了精华。
之前wp有一半的时间都在折腾,就是一直不知道还有个自动修复的功能,所以总是担心数据库结构弄乱了,或者插件导致的各种问题怎么办。这次在修复时无意中浏览到/wp-admin/maint/reapire.php是个数据库修复页面,哇塞,正好解决这个问题。一般来说只要保存好数据库和上传的文件,程序文件是很稳定的,大不了再下载一份。
页面地址:http://jinzhao.me/wp-admin/maint/repare.php
当然在访问前需要在config.php加上“define(‘WP_ALLOW_REPAIR’, true);”否则会报404。