科技爱好者博客 http://blog.lxx1.com 开源知识分享博客,讨论树莓派、Arduino、Linux、服务器使用配置教程 Sun, 17 Feb 2019 06:30:02 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.1.1 ofo退余额退押金事 http://blog.lxx1.com/3363 http://blog.lxx1.com/3363#comments Sun, 17 Feb 2019 06:29:39 +0000 http://blog.lxx1.com/?p=3363 ofo退余额退押金事,首发于科技爱好者博客

上次去武汉,大约是在18年8月份,在欢乐谷附近想找辆共享单车找了半天,当时就觉得是不是ofo出了什么问题,果不 […]

ofo退余额退押金事,首发于科技爱好者博客

]]>
ofo退余额退押金事,首发于科技爱好者博客

上次去武汉,大约是在18年8月份,在欢乐谷附近想找辆共享单车找了半天,当时就觉得是不是ofo出了什么问题,果不其然,在18年12月份,大量的用户退押金不行。

不禁感叹,创业不易啊,从2017年开始用ofo,当时还在西安,确实觉得很方便,而且随处可见的小黄车,结果才一年时间,小黄车就已经看不到了,大批用户要求退押金,而ofo也因为资金问题,押金都退还不了。

今天忽然想到,打开ofo的APP一看,发现还有145的余额,其中还可以给我退45,如果包含押金99的还,还应该给我退144元。

但是今天申请退余额,电话提示客服只在工作日上班,退押金提示要排队,而且排队的人已经有15102153位,真是让人头大啊。

希望能够早日把押金和余额全部推掉,下周再打客服电话试一下能不能退余额。

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: ofo退余额退押金事 (http://blog.lxx1.com/3363)

如果博客对您有帮助,请给我 打赏


ofo退余额退押金事,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3363/feed 1
大家新年好,做个博客的2018年度总结 http://blog.lxx1.com/3361 http://blog.lxx1.com/3361#comments Tue, 01 Jan 2019 14:21:03 +0000 http://blog.lxx1.com/?p=3361 大家新年好,做个博客的2018年度总结,首发于科技爱好者博客

110,579 访问次数 1 分 36 秒 平均停留时间 77% 跳出次数 (查看一个页面 […]

大家新年好,做个博客的2018年度总结,首发于科技爱好者博客

]]>
大家新年好,做个博客的2018年度总结,首发于科技爱好者博客

110,579 访问次数

1 分 36 秒 平均停留时间

77% 跳出次数 (查看一个页面后就离开)

1.7 每个访客行为数 (查看页面、下载、离站链接和内部搜索)

0.62秒 平均生成时间

171,497 页面访问次数, 144,003 唯一页面浏览量

2,278 站内搜索数, 491 关键词数量

6,390 下载次数, 5,350 唯一下载次数

7,090 离站链接数量, 5,898 唯一离站链接数量

249 单次访问的最大活动量

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 大家新年好,做个博客的2018年度总结 (http://blog.lxx1.com/3361)

如果博客对您有帮助,请给我 打赏


大家新年好,做个博客的2018年度总结,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3361/feed 1
WordPress 5.0发布 http://blog.lxx1.com/3349 http://blog.lxx1.com/3349#respond Sat, 08 Dec 2018 03:16:50 +0000 http://blog.lxx1.com/?p=3349 WordPress 5.0发布,首发于科技爱好者博客

12月6日,WordpPress5.0版本正式发布,版本命名为 jazz musician Bebo,主要更新 […]

WordPress 5.0发布,首发于科技爱好者博客

]]>
WordPress 5.0发布,首发于科技爱好者博客

12月6日,WordpPress5.0版本正式发布,版本命名为 jazz musician Bebo,主要更新有两个地方,一个是编辑器更新,发布了新的块编辑器,第二个是发布了全新的主题Twenty Nineteen。

科技爱好者博客第一时间更新了,说下体验。

一是编辑器方面,和上一个版本变化还好,总体更加舒适,在撰写文章的时候可以将精力放在文字上,侧边栏可以收回去大大的减少了干扰。

第二个是发布了全新的主题,这个还没更新,大家可以看看官方的效果图。

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: WordPress 5.0发布 (http://blog.lxx1.com/3349)

如果博客对您有帮助,请给我 打赏


WordPress 5.0发布,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3349/feed 0
好用的DNS服务器分享 http://blog.lxx1.com/3332 http://blog.lxx1.com/3332#comments Sun, 28 Oct 2018 06:32:23 +0000 http://blog.lxx1.com/?p=3332 好用的DNS服务器分享,首发于科技爱好者博客

DNS服务器担任网址解析功能,这里给大家分享一些比较好用的DNS服务器,以加快上网的速度。 阿里DNS: 22 […]

好用的DNS服务器分享,首发于科技爱好者博客

]]>
好用的DNS服务器分享,首发于科技爱好者博客

DNS服务器担任网址解析功能,这里给大家分享一些比较好用的DNS服务器,以加快上网的速度。

阿里DNS:

223.5.5.5

223.6.6.6

速度比较快,毕竟是阿里巴巴大厂的产品,稳定性和速度都有保证

Google DNS:

8.8.8.8

8.8.4.4

几乎从知道这个DNS之后就一直在用,延迟在50ms左右,速度还可以,就是由于众所周知的原因,掉包比较严重。

114 DNS:

114.114.114.114

114.114.114.115

速度很快,节点也比较多

清华大学TUNA DNS666

101.6.6.6

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 好用的DNS服务器分享 (http://blog.lxx1.com/3332)

如果博客对您有帮助,请给我 打赏


好用的DNS服务器分享,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3332/feed 4
树莓派安装 OpenWrt 打造超级路由器 http://blog.lxx1.com/3294 http://blog.lxx1.com/3294#respond Sun, 14 Oct 2018 05:58:15 +0000 http://blog.lxx1.com/?p=3294 树莓派安装 OpenWrt 打造超级路由器,首发于科技爱好者博客

一直在树莓派上安装Pi-hole当作DNS服务器来使用,最近发现了 OpenWrt 这一项目,可以把树莓派变成 […]

树莓派安装 OpenWrt 打造超级路由器,首发于科技爱好者博客

]]>
树莓派安装 OpenWrt 打造超级路由器,首发于科技爱好者博客

一直在树莓派上安装Pi-hole当作DNS服务器来使用,最近发现了 OpenWrt 这一项目,可以把树莓派变成一个超级路由器,可以安装上千的插件,实现非常多的功能,例如将树莓派变成无线路由器,实现Nas 、网站服务器、远程监控甚至智能家居,同时还可以让所有设备快速上网(你懂的),同时它又基于Linux系统,可以在做路由器的同时当作一个服务器来使用,扩展性非常强。

本文教大家如何在树莓派上安装 OpenWrt 打造超级路由器。

OpenWrt官方介绍:

OpenWrt项目是针对嵌入式设备的Linux操作系统。OpenWrt不是一个单一且不可更改的固件,而是提供了一个完全可写的文件系统及软件包管理。这使您可以不使用供应商提供的应用程序选择和配置,而是通过使用软件包来定制设备以适应任何应用程序。对于开发人员来说,OpenWrt是一个构建应用程序的框架,无需在其周围构建完整的固件; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。


OpenWrt/LEDE是一个为嵌入式设备(通常是无线路由器)开发的高扩展度的GNU/Linux发行版。与许多其他路由器的发行版不同,OpenWrt/LEDE是一个完全为嵌入式设备构建的功能全面、易于修改的由现代Linux内核驱动的操作系统。在实践中,这意味着您可以得到您需要的所有功能,却仍能避免臃肿。

〇、设备信息

所用到的设备:

Raspberry Pi 2B

无线网卡: EDUP EP-N8508GS

成品就是这货,树莓派无线路由器:

一、安装 OpenWrt

(一)支持的设备

OpenWrt 支持的设备比较多,可以从 OpenWrt 支持的设备列表查看,同时要求设备内至少大于4M,在内存小于4M或内存小于32M的设备在可用性、扩展性及操作的稳定性上将有所局限。

OpenWrt 支持的设备列表来看,各版本的树莓派都可以安装最新版本的OpenWrt,截止到2018年10月14日,最新版本是 18.06.1

OpenWrt 支持的树莓派版本
OpenWrt 支持的树莓派版本

Raspberry Pi 2B18.06.1raspberry_piView/Edit data
Raspberry Pi 3B18.06.1raspberry_piView/Edit data
Raspberry Pi 3B+18.06.1raspberry_piView/Edit data
Raspberry PiA18.06.1raspberry_piView/Edit data
Raspberry PiB18.06.1raspberry_piView/Edit data
Raspberry PiB+18.06.1raspberry_piView/Edit data
Raspberry Pi Zero W18.06.1raspberry_piView/Edit data

(二)下载 OpenWrt 镜像

在设备上面的表格中选择自己的树莓派型号,点击 View/Edit data ,然后进入 详情页面,选择“ Firmware OpenWrt Install URL ”,这个就是要下载的镜像,我们把它保存到本地。

树莓派2的下载下载地址:http://downloads.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2709/openwrt-18.06.1-brcm2708-bcm2709-rpi-2-ext4-factory.img.gz

国内中科大的镜像地址:
http://mirrors.ustc.edu.cn/lede/releases/18.06.1/targets/brcm2708/bcm2709/openwrt-18.06.1-brcm2708-bcm2709-rpi-2-ext4-factory.img.gz

从科技爱好者博客的CDN下载:

http://cdn.lxx1.com/openwrt-18.06.1-brcm2708-bcm2709-rpi-2-ext4-factory.img.gz

(三)烧录镜像

将 OpenWrt 镜像烧录到树莓派中,windows下可以使用 Etcher 软件烧录。同样
OpenWrt 镜像支持树莓派从U盘启动,详见U盘安装树莓派系统,利用U盘启动Raspberry

(四)启动树莓派

这样 OpenWrt 就已经在树莓派上运行起来了。

二、树莓派上的 OpenWrt 配置

我打算将树莓派连接到已经在家中工作的无线路由器上,计划用树莓派自带的网卡通过网线连接到家中的路由器,用树莓派的无线网卡发射WIFI,然后其他设备通过树莓派的无线接入。

以下是我的树莓派无线路由器配置过程。

(一)登陆 OpenWrt

用网线将树莓派和电脑相连接,然后在浏览器中输入192.168.1.1,即可打开登陆页面。

OpenWrt 登陆页面
OpenWrt 登陆页面

自己设置一个密码,点击login登陆

(二)配置 OpenWrt 联网

下一步就是要配置树莓派OpenWrt的网络连接设置,使得 树莓派OpenWrt 连接到互联网,选择 network/Interfaces 选项卡。

1.新建 WAN 口

这里新建WAN口的原因是 Wide Area Network代表广域网,即路由器上接到互联网中的网口称为WAN口,为了方便使用新建了这个WAN 口,其实不新建直接在LAN口中配置也行,只是不符合规范。

点击 “Add new Interface”

点击 “Add new Interface”
点击 “Add new Interface”

2.在“ Name of the new interface”中输入WAN,其他保持不动,点击”submit”(提交)

3.配置WAN口。

配置WAN口为静态IP地址,因为我家中的路由器IP地址是192.168.0.1,掩码为255.255.255.255.0,故我的WAN 口配置成IP为
192.168.0.3, 掩码同样为255.255.255.255.0 ,DNS地址手动填写即可。如下图所示。

树莓派OpenWrt WAN口配置
树莓派OpenWrt WAN口配置

这里要注意的是,配置完成后,OpenWrt会验证接口配置中的IP是否能获取到,如果在点击保存后的30S内,该接口没有获取拿到预期的IP地址,则OpenWrt会取消这项配置,所以在要保证点击配置后,立即将树莓派和家中的路由器用网线连接起来,然后连接家中路由器上,访问http://192.168.0.3/,如果成功打开OpenWrt配置页面,则说明配置成功了,如果不行的话,将树莓派重新连接到电脑中,在30结束后选择强制保存。

4.将树莓派连接到家中的路由器上。

WAN口成功配置后,将树莓派与家中的路由器相连接,同时电脑也连接到家中的路由器,打开页面http://192.168.0.3/,就可以看到树莓派OpenWrt的配置页面了

这样树莓派 OpenWrt就已经成功连接到互联网了。

下面继续配置无线路由。

三、配置树莓派 OpenWrt 无线路由功能

(一)安装无线驱动

1.进入OpenWrt的“system/Software”选项卡,选择“Configuration”

进入OpenWrt的“system/Software”选项卡,选择“Configuration”
进入OpenWrt的“system/Software”选项卡,选择“Configuration”

2.更换镜像源

将“Distribution feeds”中的源全部换成中科大的 OpenWrt 镜像源,加快更新及安装软件的速度,否则会有错误。这里再次感谢中科大的 OpenWrt 镜像源,速度快了很多,好像只有他才有OpenWrt 镜像源。

全部换成如下:

src/gz openwrt_core http://mirrors.ustc.edu.cn/lede/releases/18.06.1/targets/brcm2708/bcm2709/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/base
src/gz openwrt_luci http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/packages src/gz openwrt_routing http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/routing src/gz openwrt_telephony http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/telephony
更换 OpenWrt 镜像源
更换 OpenWrt 镜像源

3.更新OpenWrt软件包

点击“Update List”

更新OpenWrt软件包
更新OpenWrt软件包

4.安装无线驱动

我的树莓派USB网卡是 EDUP EP-N8508GS 的,亲测其支持的驱动是 kmod-rtl8192cu ,然后再安装无线工具 wireless-tools ,完成后重启树莓派。

5、重启

重启树莓派后就能看到“NetWorks/Wireless”选项了,点击“Enable”就可以启用无线了,这时手机上就可以搜到名为OpenaWrt的无线了,连上之后就可以上网了。

树莓派 成为OpenaWrt无线路由器
手机连接OpenWrt即可上网了

6.无线配置

点击“Edit”即可配置OpenWrt无线路由器,包括设置无线的名称、密码、是否隐藏、MAC地址过滤等等。

终于完成了!

四、相关故障及解决办法

OpenWrt的绝大部分故障都是由于源速度太慢导致的错误,这是由于众所周知的原因,我们可以通过更换中科大的镜像源来解决,有能力的还可以搭建反代来解决。

以下是常见的故障

(一)更新中提示 “Could not lock /var/lock/opkg.lock”

  • opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavailable.

解决办法:

rm -f /var/lock/opkg.lock
opkg update

(二)更新速度慢或者有以下提示

Failed to establish connection
Collected errors:
 * opkg_download: Failed to download http://downloads.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2709/packages/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download http://downloads.openwrt.org/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/base/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download http://downloads.openwrt.org/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/luci/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

这是由于源站速度太慢造成的

解决办法:用中科大的镜像替换,将源地址更换为以下地址:

src/gz openwrt_core http://mirrors.ustc.edu.cn/lede/releases/18.06.1/targets/brcm2708/bcm2709/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/base
src/gz openwrt_luci http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/lede/releases/18.06.1/packages/arm_cortex-a7_neon-vfpv4/telephony

这就是树莓派安装OpenWrt搭建无线路由器的全过程,如果你在安装的时候有问题,可以在文章下面的讨论部分和我交流。

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 树莓派安装 OpenWrt 打造超级路由器 (http://blog.lxx1.com/3294)

如果博客对您有帮助,请给我 打赏


树莓派安装 OpenWrt 打造超级路由器,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3294/feed 0
修改树莓派交换分区 SWAP 的大小 http://blog.lxx1.com/3289 http://blog.lxx1.com/3289#respond Sat, 13 Oct 2018 14:28:22 +0000 http://blog.lxx1.com/?p=3289 修改树莓派交换分区 SWAP 的大小,首发于科技爱好者博客

如果觉得树莓派的内存不够用了,可以修改交换分区的大小。以下是方法:

修改树莓派交换分区 SWAP 的大小,首发于科技爱好者博客

]]>
修改树莓派交换分区 SWAP 的大小,首发于科技爱好者博客

SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。如果觉得树莓派的内存不够用了,可以修改交换分区的大小。以下是方法

一、修改配置文件 dphys-swapfile

sudo nano /etc/dphys-swapfile 

二、设置交换分区大小

将 CONF_SWAPSIZE 的值修改成你想要的大小,如1024,其他信息不用改。

三、 重启 dphys-swapfile 文件服务并且重启树莓派:

sudo/etc/init.d/dphys-swapfile restart
sudo reboot

四、使用free -h查看大小:

free-h

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 修改树莓派交换分区 SWAP 的大小 (http://blog.lxx1.com/3289)

如果博客对您有帮助,请给我 打赏


修改树莓派交换分区 SWAP 的大小,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3289/feed 0
解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障 http://blog.lxx1.com/3262 http://blog.lxx1.com/3262#comments Sat, 13 Oct 2018 10:00:08 +0000 http://blog.lxx1.com/?p=3262 解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障,首发于科技爱好者博客

在树莓派上安装python-imaging软件时出现了以下错误: 最后经过比较长时间的摸索,终于解决了这个问题 […]

解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障,首发于科技爱好者博客

]]>
解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障,首发于科技爱好者博客

在树莓派上安装python-imaging软件时出现了以下错误:

Errors were encountered while processing:
 python-imaging
E: Sub-process /usr/bin/dpkg returned an error code (1)

最后经过比较长时间的摸索,终于解决了这个问题,解决过程如下:

一、故障代码

我将详细的故障代码放在这儿:

pi@raspberrypi:/var/lib/dpkg $ sudo apt-get install python-imaging --reinstall
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 12 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for python-imaging:armhf

pi@raspberrypi:/var/lib/dpkg $ sudo apt-get install python-imaging
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python-imaging is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Traceback (most recent call last):
  File "/usr/bin/apt-listchanges", line 28, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Setting up python-imaging (2.6.1-2+deb8u3) ...

二、解决办法

cd /var/lib/dpkg 
sudo mv info info.bak #做备份 
sudo mkdir info
sudo apt-get install python-imaging --reinstall #重新安装cmake包
sudo rm -rf info
sudo mv info.bak info #还原info
然后再sudo apt-get install python-imaging就不会出现上面的错误了

三、故障解决



故障终于解决,树莓派系统也可以正常升级了。



pi@raspberrypi:/var/lib/dpkg $ sudo apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
gstreamer1.0-plugins-bad libgl1-mesa-dri libgstreamer-plugins-bad1.0-0 lxpanel lxpanel-data
plymouth python-gpiozero python-openssl python3-gpiozero raspberrypi-ui-mods sonic-pi
xserver-xorg-input-all
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障 (http://blog.lxx1.com/3262)

如果博客对您有帮助,请给我 打赏


解决树莓派“Sub-process /usr/bin/dpkg returned an error code (1)”故障,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3262/feed 1
树莓派(raspberry)启用root账户 http://blog.lxx1.com/3264 http://blog.lxx1.com/3264#respond Sat, 13 Oct 2018 08:32:47 +0000 http://blog.lxx1.com/?p=3264 树莓派(raspberry)启用root账户,首发于科技爱好者博客

树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。debian里root […]

树莓派(raspberry)启用root账户,首发于科技爱好者博客

]]>
树莓派(raspberry)启用root账户,首发于科技爱好者博客

树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。debian里root账户默认没有密码,但账户锁定,如果要切换到root用户,必须先解锁root账户。

当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian,默认用户是pi 密码为raspberry

开启root账号,可以pi用户登录后,执行以下命令:

sudo passwd root

执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可。

这样就可以解锁root账户了,可以在树莓派上使用su root命令切换到root用户。

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 树莓派(raspberry)启用root账户 (http://blog.lxx1.com/3264)

如果博客对您有帮助,请给我 打赏


树莓派(raspberry)启用root账户,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3264/feed 0
树莓派安装Gitlab打造私人Git服务 http://blog.lxx1.com/3266 http://blog.lxx1.com/3266#respond Sat, 13 Oct 2018 07:03:03 +0000 http://blog.lxx1.com/?p=3266 树莓派安装Gitlab打造私人Git服务,首发于科技爱好者博客

Gitlab是一款开源的Git版本管理系统,可以通过WEB界面访问公开或者私人的Git项目。gitlab的we […]

树莓派安装Gitlab打造私人Git服务,首发于科技爱好者博客

]]>
树莓派安装Gitlab打造私人Git服务,首发于科技爱好者博客

Gitlab是一款开源的Git版本管理系统,可以通过WEB界面访问公开或者私人的Git项目。gitlab的web框架使用了Ruby on Rails,可以轻松的浏览版本以及查看提交过的文件。具有一个代码片段收集功能,可以实现零散代码的收集、复用,还具有wiki、聊天、进度管理等功能。科技爱好者博客曾经介绍过如何 在ubuntu上快速安装Gitlib开源Git版本管理系统 ,本文章使用了价格低廉应用广泛的树莓派,来安装最新版本的gilab-ce,以下是安装过程以及遇到的各种问题。

gitlab安装指示页面,有官方的树莓派2上安装Gitlab的指示,说明在树莓派2上可以放心的安装了。选择”Raspberry 2″,打开安装步骤,一步一步来。

支持多个操作系统的gitlab安装包
支持多个操作系统的gitlab安装包
选择树莓派2的安装方法
选择树莓派2的安装方法

一、安装配置必要的依赖

sudo apt-get install curl openssh-server ca-certificates apt-transport-https
curl https://packages.gitlab.com/gpg.key | sudo apt-key add -

接下来如果想配置 Postfix 软件,以在树莓派上发邮件的话,可以安装,当然也可以跳过,在配置完gitlab后选择SMTP服务发送邮件。

sudo apt-get install -y postfix

二、添加Gitlab源并安装

(一)添加软件包:

sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash

结果这一步发生了错误,显示错误信息如下:

pi@raspberrypi:~ $ sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh |sudo bash
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 28, in
import lsb_release
ModuleNotFoundError: No module named 'lsb_release'
Unfortunately, your operating system distribution and version are not supported by this script.
You can override the OS detection by setting os= and dist= prior to running this script.
You can find a list of supported OSes and distributions on our website: https://packages.gitlab.com/docs#os_distro_version
For example, to force Ubuntu Trusty: os=ubuntu dist=trusty ./script.sh
Please email support@packagecloud.io and let us know if you run into any issues.

根据错误信息提示,是找不到lsb_release了,果然在树莓派上执行 lsb_release 命令也都提示错误。

pi@raspberrypi:~ lsb_release -v
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 28, in
import lsb_release
ModuleNotFoundError: No module named 'lsb_release'

root@raspberrypi:/home/pi# lsb_release -a
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 28, in
import lsb_release
ModuleNotFoundError: No module named 'lsb_release'

想到我原来把树莓派上的python版本升级到3.6了,可能是因为这个发生了错误,果然,将python版本换回原来的pyton2.7后恢复正常

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
lsb_release -a
lsb_release -a

终于解决了lsb_relea的故障

(二)继续安装Gitlab:

pi@raspberrypi:~ $ sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash
Detected operating system as raspbian/jessie.
Checking for curl…
Detected curl…
Checking for gpg…
Detected gpg…
Running apt-get update… done.
Installing apt-transport-https… done.
Installing /etc/apt/sources.list.d/gitlab_raspberry-pi2.list…done.
Importing packagecloud gpg key… done.
Running apt-get update… done.
The repository is setup! You can now install packages.

好,没有报错,终于提示可以继续安装了。

按照官网上的说明,进行下一步,安装gitlab-ce程序,这里要把EXTERNAL_URL=”http://gitos.net”中的http://gitos.net改成你自己的域名 :

sudo EXTERNAL_URL="http://gitos.net" apt-get install gitlab-ce

好家伙,这速度感人啊, 显示得近10小时才能下载完:

让树莓派下载了一晚上,第二天早上起来一看,竟然下载失败

Get:1 https://packages.gitlab.com/gitlab/raspberry-pi2/raspbian/ jessie/main gitlab-ce armhf 11.4.0-rc3.ce.0 [410 MB]
10% [1 gitlab-ce 39.6 MB/410 MB 10%] 16.Err https://packages.gitlab.com/gitlab/raspberry-pi2/raspbian/ jessie/main gitlab-ce armhf 11.4.0-rc3.ce.0
transfer closed with 362319539 bytes remaining to read
E: Failed to fetch https://packages.gitlab.com/gitlab/raspberry-pi2/raspbian/pool/jessie/main/g/gitlab-ce/gitlab-ce_11.4.0-rc3.ce.0_armhf.deb transfer closed with 362319539 bytes remaining to read
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

再次选择下载,发现速度快了很多,基本在400KB/s,估计是晚上时间镜像源在同步,造成速度比较慢。

(三)另一种方法安装

当然可以选择直接下载安装包,然后再安装,这样速度快了很多。

这个页面选择最新的gitlab镜像,并选择合适的版本,如我的操作系统是jessie,通 lsb_release -a 命令可以查看。之后在镜像页面选择 “Download the package”,复制到树莓派中下载即可,速度非常快。

如下载gitlab-ce_11.4.0-rc3版本:

pi@raspberrypi:~ $  wget --content-disposition https://packages.gitlab.com/gitlab/raspberry-pi2/packages/raspbian/jessie/gitlab-ce_11.4.0-rc3.ce.0_armhf.deb/download.deb
gitlab镜像
gitlab镜像
直接下载安装包的速度很快
直接下载安装包的速度很快

离线安装包下载完成后,使用dkpg命令安装:

sudo dpkg -i gitlab-ce_8.13.0-ce.0_armhf.deb

gitlab-ce这个软件包有12000多个文件,所以在树莓派上安装时间很长,下载这个软件包大约用了半小时,安装大约用了,,经过漫长的等待,终于安装成功。

三、进入gitlab登陆页面

在浏览器中输入树莓派的域名,即可打开gitlab登陆页面,使用root用户名登陆,密码在安装结束后有提示。

四、安装成功

root是管理员用户,只用它来添加普通用户,在普通用户里新建仓库来托管代码。

这样树莓派上就成功安装了Gitlab服务,可以打造自己的代码托管服务了。

树莓派上成功安装Gitlab
树莓派上成功安装Gitlab

五、gitlab实用命令附录

  1. 修改任何配置文件后都要输入如下命令使配置生效:
    sudo gitlab-ctl reconfigure
  2. 页面缓存清除:
    sudo gitlab-rake cache:clear RAILS_ENV=production
  3. Gitlab各组件启动:sudo gitlab-ctl star
  4. Gitlab各组件停止:
    sudo gitlab-ctl stop
  5. Gitlab各组件重启:
    sudo gitlab-ctl restart
  6. 禁用Gitlab开机自启动:
    sudo systemctl disable gitlab-runsvdir
  7. 启用Gitlab开机自启动:
    sudo systemctl enable gitlab-runsvdir

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 树莓派安装Gitlab打造私人Git服务 (http://blog.lxx1.com/3266)

如果博客对您有帮助,请给我 打赏


树莓派安装Gitlab打造私人Git服务,首发于科技爱好者博客

]]>
http://blog.lxx1.com/3266/feed 0
编写豆瓣相册下载器(python爬虫) http://blog.lxx1.com/3243 http://blog.lxx1.com/3243#respond Wed, 10 Oct 2018 10:01:17 +0000 http://blog.lxx1.com/?p=3243 编写豆瓣相册下载器(python爬虫),首发于科技爱好者博客

最近在慕课网上学习了一门python爬虫课程《Python开发简单爬虫》,并利用课程中学到的知识自己编写了一个 […]

编写豆瓣相册下载器(python爬虫),首发于科技爱好者博客

]]>
编写豆瓣相册下载器(python爬虫),首发于科技爱好者博客

最近在慕课网上学习了一门python爬虫课程《Python开发简单爬虫》,并利用课程中学到的知识自己编写了一个豆瓣相册爬虫,可以一键快速下载豆瓣相册中的图片,并且会自动下载大图。

在这里将这个爬虫分享出来,因为网络上的豆瓣相册下载器基本上都不能使用了,所以才想到自己开发一个,方便大家使用。

一、程序代码

github: https://github.com/xinxingli/douban_spider

本地下载:

二、爬虫运行截图

程序运行结果
程序运行结果

三、主要程序代码

调度程序 spider_main.py

from douban_spider import url_manger
from douban_spider import html_downloader
from douban_spider import html_parser
from douban_spider import html_outputer

class SpiderMain(object):
def __init__(self):
self.urls = url_manger.UrlManager()
self.downloader = html_downloader.HtmlDownloader()
self.parser = html_parser.HtmlParser()
self.outputer = html_outputer.HtmlOutputer()

def craw(self, root_url):
count = 1
self.urls.add_new_url(root_url)
while self.urls.has_new_url():
try:
new_url = self.urls.get_new_url()
print('爬取第 %d : %s' %(count, new_url))
html_cont = self.downloader.download(new_url)
new_urls, new_data = self.parser.parse(new_url, html_cont)
self.urls.add_new_urls(new_urls)
self.outputer.collect_data(new_data)

if count == 10:
break
count = count + 1
except:
print('craw failed')
self.outputer.output_html()


if __name__ == '__main__':
str = input("请输入要下载的豆瓣相册ID(例如1639309626): ")
root_url = 'https://www.douban.com/photos/album/'+str+'/'
print('即将开始下载相册: %s ' % root_url)
obj_spider = SpiderMain()
obj_spider.craw(root_url)

网址管理程序 url_manger.py :

class UrlManager(object):
def __init__(self):
self.new_urls = set()
self.old_urls = set()

def add_new_url(self, url):
if url is None:
return
if url not in self.new_urls and url not in self.old_urls:
self.new_urls.add(url)

def add_new_urls(self, urls):
if urls is None or len(urls) == 0:
return
for url in urls:
self.add_new_url(url)

def has_new_url(self):
return len(self.new_urls) != 0

def get_new_url(self):
new_url = self.new_urls.pop()
self.old_urls.add(new_url)
return new_url

网页下载程序 html_downloader.py

#from urllib import request
import urllib.request

class HtmlDownloader(object):
def download(self,url):
if url is None:
return None
response = urllib.request.urlopen(url)

if response.getcode() != 200:
return None
return response.read()

解析程序html_parser.py

from bs4 import BeautifulSoup
import re
import urllib.parse
import urllib.request

class HtmlParser(object):
def _get_new_urls(self,page_url,soup):

new_urls = set()

links = soup.find_all('img',width="201")
for link in links:
photo_url = link['src']
photo_url_list = list(photo_url)
photo_url_list[37] = 'l'
photo_url = ''.join(photo_url_list)

photo_name = photo_url[46:57] #取出连接中的图片名称
print('正在下载图片:%s.jpg'% photo_name)

urllib.request.urlretrieve(photo_url, 'photo/%s.jpg' % photo_name)


pages = soup.find_all('a', href=re.compile(r'https://www.douban.com/photos/album/\w*/\?start'))
for link in pages:
new_url = link['href']
new_full_url = urllib.parse.urljoin(page_url, new_url)
new_urls.add(new_full_url)
return new_urls

def _get_new_data(self,page_url,soup):
res_data={}
res_data['url'] = page_url
return res_data

def parse(self,page_url,html_cont):
if page_url is None or len(html_cont)==0 :
return None
soup = BeautifulSoup(html_cont,'html.parser',from_encoding='iso-8859-1')
#from_encoding='iso-8859-1'
new_urls = self._get_new_urls(page_url,soup)
new_data = self._get_new_data(page_url,soup)
return new_urls,new_data

输出程序 html_outputer.py

class HtmlOutputer(object):
def __init__(self):
self.datas = []

def collect_data(self, data):
if data is None:
return
self.datas.append(data)

def output_html(self):
fout = open('output.html', 'w', encoding="utf-8")

fout.write("<html>")
fout.write("<head><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"></head>")
fout.write("<body>")
fout.write("<table>")

for data in self.datas:
fout.write("<tr>")
fout.write("<img ")
fout.write("width=\"201\" src=%s />"% data['url'] )
fout.write("</tr>")

fout.write("</table>")
fout.write("</body>")
fout.write("</html>")
fout.close()

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 编写豆瓣相册下载器(python爬虫) (http://blog.lxx1.com/3243)

如果博客对您有帮助,请给我 打赏


编写豆瓣相册下载器(python爬虫),首发于科技爱好者博客

]]>
http://blog.lxx1.com/3243/feed 0