树莓派搭建NAS(SMB, ARIA2,流播放器)

最近,买了一个树莓派,发现可玩性很强. 在研究一天后,记录一下感受。

挂载移动硬盘

我是先把硬盘用gpart格式为ext4

为了能让树莓派启动的时候,自动挂载硬盘,我们要写一个脚本,然后让它开机自动启动。

创建/usr/bin/脚本名字

以下是,我的文件 /usr/bin/aria

把文件的权限改成777是让所有人都可以读写文件。后面Samba会用到。

并且修改/etc/rc.local文件,在exit 0之前加上以下的语句

这个脚本就可以开机执行了。

安装并配置 Samba

首先安装Samba

编辑文件sudo vim /etc/samba/smb.conf

在文件末尾插入就可以了,你也可以把文件中用不到的东西删掉。

然后创建用户pi并设密码

配备完后,重启Samba

aria2 安装及配置

刚装完官方的debian, nginx和aria2 的时候,发现怎么也不好使(webui连到了aria2 RPC server 但下载不了东西。aria2命令行可以下东西)。于是重新装debian, 换成用docker来装aria2和webui

首先,安装docker.这个可以通过树莓派官方的包管理器安装,因为我把树莓派的图形界面关掉了,所以就不贴图了。

安装完docker, 下载镜像

运行镜像

遇到问题的话,可以进入cotainer里面看出了什么问题

没有问题,继续下面的教程

为了能够让这个container 再开机运行,修改/usr/bin/aria(修改你自己之前的脚本文件)

这里面包括了之前的脚本,其实只加了docker start aria. 注意的是docker start aria一定要放到后面,因为我们要先mount硬盘之后,才能map硬盘里的文件夹.

minidlna

其实,我感觉安装了Smba就没有必要安装minidlna了。但因为我已经踩过了这个坑,就记录一下好了。

首先,安装minidlna

修改minidlan 配置文件(/etc/minidlna.conf)

上面的comment是说明,根据说明配置自己的文件。因为,minidlna会开机自己启动。所以也不需要写脚本文件了.

结语

至此,我们就完成了NAS的搭建。其实还有一些改善的东西,比如加入ngrok外网穿透,ftp连接。因为比较简单,我就没写到里面。在研究树莓派的时候,遇到了很多的坑没有写到里面。比如64GB内存卡,一定要用gpart格式成FAT32等问题(树莓派只识别FAT32USB启动),我都研究了很久,很痛苦。当然,也有完成之后的成就感。在接下来的几天里,我也会继续研究树莓派,享受它的乐趣。

apache 换成 nginx

https://www.howtoforge.com/tutorial/dockerizing-wordpress-with-nginx-and-php-fpm/

之前在DO的VPS上搭建的博客(LAMP),如果不开swap space 有时会因为内存不过杀掉mysql,导致网站无法打开。虽然最近打开了swap space, 情况大幅度好转,但从网上看到说nginx比apache 省内存。所以,动手试试:). 这篇文章根据网上教程写的(链接在最上面), 内容非原创. 因为,网上已经有教程了。所以,我也就只把配置文件贴出来就好了,具体请看教程.

docker-compose.yml

效果:比apache省100MB内存

Vue.js 2.0 教程

### Vue

首先,我们要先全局安装vue-cli.

然后,我们来创建一个新的项目

进入项目的文件夹,安装dependencies

安装完之后,我们就可以打开一个web server 了

这个命令会自动在localhost:8080创建一个server并把output显示在浏览器里。

项目结构

我们来看一下在新建项目里的文件结构

  • package.json文件里包括项目所有的dependecies
  • npm install 会把package.json里列出的dependecies 安装到 node_modules文件夹中

下面是index.html

接下来,我们看一下在src文件夹中的main.js

  • App是项目的根组件(root component)
  • Vue 是项目的主要框架

我们再看一下 App.vue 的内容

我们可以看到App 需要Hello 组件。Hello 组件被定义到了component 文件中的Hello.vue.

下面是Hello.vue文件

值得注意的是这里的data不是object. 这里的data是一个function return to an object.


下面我们可以来改一下Hello.vue

效果如下

至此,我们已经完成了一个用vue-cli写的小demo.

用vue写一个to do list

最近,想学一些前端的知识。但感觉无从下手,因为前端的框架好多,不知道选哪一个 Angular, Vue, reat,backbone... 想想还是先学一下最近最火的vue好了,毕竟以前用vue写过一个网站而且vue也是中国人写的。但已经快一年没碰过vue了,什么都不记得了,就写一个to do list来复习一下vue好了。

构思

  • 用什么储存数据?

因为, 要做一个简单to do list,就不想考虑数据库了,用一个数组来储存数据就可以了。

  • 需要什么功能?

to do list 的功能的话,只需要有增加任务和删除任务就好。所以,需要两个function就可以了。

实际效果

全部代码可以到codepen上去查看,https://codepen.io/jingfei/pen/Npppya

下面我就讲一下关于vue的代码好了.

v-model实现输入的内容和task进行双向绑定。用v-on来监听DOM事件,如果enter(按回车),执行add_task function.

下面是Vue实例

v-for来遍历todos的数组。用v-bind来把checkedhtml 属性和todo.isCompleted绑定。用v-on来监听鼠标左键,如果按了左键,执行completed(index) function. 利用v-bind来绑定class, 如果todo.isCompleted 是真的话,加入completed class.

总结

以上就是关于vue的代码了。在这个小项目里,对双向绑定,自定义触发和监听,绑定hmtl属性和class进行了实践。

如何满速在linux下载

  • aria2c

Aria2 本质是一个下载工具,支持多协议、多来源. 对我们来说,它是一个可以支持任何下载方式的工具。

Aria2有两种模式,一种是命令行模式,另一种是RPC Server模式。网上比较流行的是RPC Server + webui.

命令行模式和配置文件

使用配置文件的方式管理配置(可以添加 -D 选项以后台运行):

配置文件

下面是我的配置文件(网上的配置文件很多,我也是抄别人的)

命令行

我比较常用的:

  • -x
    多线程下载 
  • -x10
    10个线程同时下载这个文件
  • --all-proxy=<PROXY>
    开代理,有时候我会开代理。

下载 text 文本文件中的链接:

RPC Server + webui

我是把webui 放到容器里用的(docker)

然后打开aria2c 的RPC server 模式

打开浏览器输入 localhost, 你就可以看到界面了

现在,就可以开始下载了。

当然,你也可以用aria2来替代百度云和迅雷。但我对这个没有太大的需求,所以就先不写它们的教程了。

PHP (1) Types and Variables

Types and Variables

  • Variables begin with the $ symbol.
  • A valid variable name starts with a letter or underscore, followed by any number of letters, or underscores.
  • Boolean values are case-insensitive

Integers

Floats (aka doubles)

Delete Variable

Arithmetic

Shorthand Arithmetic

String

ubuntu安装popcorn

1. Download Popcorn

2. Unpacking

3. Creating a shortcut

  • /opt
    This directory is reserved for all the software and add-on packages that are not part of the default installation.
  • /usr/bin

This directory contains the vast majority of binaries on your system. Executables in this directory vary widely. For instance vi, gcc, gnome-session and mozilla and are all found here.

4. Creating the application launcher

  • /usr/share

This directory contains 'shareable', architecture-independent files (docs, icons, fonts etc).

5. Delete the donwloaded file

Uninstall

安装mysql

mysql

安装

现在运行mysql服务器

docker inspect test-mysql 来查看ip地址和端口

现在用mysql客户端连接服务器

  • -u

user

  • -p

password

  • -P

port

  • -h

host

基本命令


PHP

PHP 是什么

PHP("Hypertext Preprocessor", 超文本预处理器)是一种被广泛应用的开放源代码的多用途脚本语言。

PHP能做什么

  • 收集表单数据
  • 生成动态网页
  • 发送/接受cookies

安装


用PHP 连接 mysql

demo.php

执行

使用VPS搭建自己的WordPress

准备

  • 一个运行linux的VPS
  • 一个 non-root 用户
  • 域名

租用VPS

  • 请自己google

下面的图片是我刚创建的vps

申请域名

域名申请

  • 略过(请Google)

我自己用的是namecheap

配备域名解析

Digital Ocean

Namecheap

-配置成功的话后,打开terminal, ping 自己的域名


现在,你就成功的将你的网址解析到你的ip地址了。

用Docker 来搭建wordpress

第一步 安装Docker

Ubuntu

第二步 测试Docker是否安装成功(可略过)

第三部 安装后的配置

  • 安装docker-compse

  • 开机重启docker

  • Non-root access

如果,你没有创建普通用户的话。执行下面的命令

如果,你有普通用户,请执行下面的命令

第四步 用LAMP来测试Docker

  • 什么是LAMP
    • Linux
    • Apache
    • MySQL
    • PHP/Python/Perl

    在non-root 用户执行下面的指令

docker run

  • 创建和开始一个容器

-d

  • "detach" from it, 跟我们连ssh和tmux 一样

--name=apache

  • 给容器一个名字apache

-p 8080:80

  • 把本机的端口8080和容器的端口80连在一起

-v $HOME/apache:/var/www/html

  • map 以上的文件夹
  • $HOME/apache 的文件map到 /var/www/html

现在你可以看到容器在运行

现在,你应该可以访问http://YOUR-SERVER-IP:8080/info.php

现在关掉并且删掉容器

第五步 搭建wordpress

创建docker-compose.yml

mariadb 比mysql 省内存
第一次运行容器

docker ps 查看容器

http://YOUR-SERVER-IP:8080 安装WordPress, 用docker-compose down停止运行容器

在安装完WordPress后,你就可以用http://YOUR-SERVER-IP:8080 访问你的WordPress网站了。

Docker 教程系列 二

使用Dockerfile 定制镜像

  • Dockerfile

镜像的定制实际上是定制每一层所添加的配置、文件。我们可以吧每一层修改、安装、构建、操作的命令写在一个脚本,用这个脚本来构建、定制镜像。 这个脚本叫做Dockerfile。

Dockerfile 内容

FROM 指定基础镜像

所谓定制镜像,那一定是以一个基础镜像为基础,在其上定制。

FROM 就是制订基础镜像

在Dockerfile中FROM 是必备的指令,并且是第一个指令。

RUN 执行指令

  • shell格式: RUN <命令>

  • exec 格式: RUN [“可执行文件”,“参数1”,“参数2”]

错误的写法

Dockerfile 中每一个指令都会建立一层

上面的写法创建了7层镜像

正确的写法

&&将各个所需命令串联起来,将7层,简化为1层。

\换行

#注释

构建镜像

Dockerfile 文件所在目录执行:

RUN指令启动了一个容器23d1b8a55e02,执行命令,并提交了最后一层2c1c0dc5e64e, 随后删掉了23d1b8a55e02

dokcer build指令

  • -t

tag list -- Name and optionally a tag in the name:tag format

其它docker build 的用法

直接用Git repo

用tar压缩包构建

从标准输入中读取 Dockerfile 进行构建

从标准输入中读取上下文压缩包进行构建