分类 服务器 下的文章

Let's Encrypt,免费好用的 HTTPS 证书

文章目录

很早之前我就在关注 Let's Encrypt 这个免费、自动化、开放的证书签发服务。它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织。Let's Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅猛。

申请 Let's Encrypt 证书不但免费,还非常简单,虽然每次只有 90 天的有效期,但可以通过脚本定期更新,配好之后一劳永逸。经过一段时间的观望,我也正式启用 Let's Encrypt 证书了,本文记录本站申请过程和遇到的问题。

我没有使用 Let's Encrypt 官网提供的工具来申请证书,而是用了 acme-tiny 这个更为小巧的开源工具。以下内容基本按照 acme-tiny 的说明文档写的,省略了一些我不需要的步骤。

ACME 全称是 Automated Certificate Management Environment,直译过来是自动化证书管理环境的意思,Let's Encrypt 的证书签发过程使用的就是 ACME 协议。有关 ACME 协议的更多资料可以在这个仓库找到。

首先创建一个目录,例如 ssl,用来存放各种临时文件和最后的证书文件。进入这个目录,创建一个 RSA 私钥用于 Let's Encrypt 识别你的身份:

接着就可以生成 CSR(Certificate Signing Request,证书签名请求)文件了。在这之前,还需要创建域名私钥(一定不要使用上面的账户私钥),根据证书不同类型,域名私钥也可以选择 RSA 和 ECC 两种不同类型。以下两种方式请根据实际情况二选一。

1)创建 RSA 私钥(兼容性好):

阅读全文

crontab 定时任务

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

分 时 日 月 星期 要运行的命令

向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在其中加入这样一行

然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, davecron。在该文件中加入如下的内容。

保存并退出。注意前面5个域用空格分隔。

在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数

现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

使用-l参数列出crontab文件

可以使用这种方法在$HOME目录中对crontab文件做一备份

这样,一旦不小心误删了crontab文件,可以用上一节所讲述的方法迅速恢复。

如果希望添加、删除或编辑crontab文件中的条目,而EDITOR环境变量又设置为vi,那么就可以用vi来编辑crontab文件

保存并退出。

阅读全文

Ubuntu 上安装 Weblate

首先安装必要的依赖:

然后就到了安装 Weblate 的步骤,pip 是 python 世界的 Composer,requirements.txt 就是 composer.json

创建数据库。官方文档没说 charset 的设置,而 Weblate 在创建表的时候是不指定 charset 的,很有可能表创建好的时候charset 是 lantin1 导致翻译中文的时候,中文进不了库,特别坑

weblate/settings_example.py 其实就是 app/config/parameters.yml.dist

设置一下数据库

以及 Time zone 设置,这就不多说了。

接下来是 UWSGI 的设置。UWSGI 是类似 PHP-FPM 的服务,设置也差不多:

Nginx 的设置,完全官网配置:

创建数据库表结构,类似 doctrine:schema:create 命令;然后还需要初始化一下 locales,相当于导入默认语言分类数据到库

这也是比较坑的一点,官网文档也没说,虽然不知道这个 Whoosh 目录是干嘛的,而且看上去不太可能这么蠢Weblate 不会自动创建,但是 Weblate 就真的等着你去创建这个目录。

这个时候,就可以启动 weblate 项目了,当然,一定要注意文件权限的问题!!

如果不出意外,访问 localhost 应该可以看到 Weblate 的界面了:

screenshot weblate

然后咱们去后台创建翻译项目。不过目前后台还没有帐号呢,我们先来创建一个超级帐号:

输入完帐号、密码、邮箱后,登录到后台。

按照官方文档的指导,点击 project 后点右上角的新增按钮。不用多说了,输入内容一看就明白。

阅读全文

Raspberry Pi 3

This is a installation of caffe in raspberry pi

Modify next lines, instead of these

with

Put in your terminal

首先,更新以下系统:

接着,安装需要的编译工具

然后,安装相应的依赖包

上边的参数配置中,有几处是需要根据你自己电脑上的路径来设置的:

然后在进行安装

最后,建立软连接

阅读全文

git

用git登录服务器,git用户的文件夹下创建一个文件夹repo用以存放代码仓库,进入此文件,开始创建bare的git仓库

首先,我们创建dev分支,然后切换到dev分支:

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

然后,用git branch命令查看当前分支:

git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

然后提交:

现在,dev分支的工作完成,我们就可以切换回master分支:

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

现在,我们把dev分支的工作成果合并到master分支上:

git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev分支了:

删除后,查看branch,就只剩下master分支了:

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

阅读全文