2016年3月

我的开源生涯从我还是一名高中生开始,我总想着自己能成为一名黑客,没有什么恶意的,只是喜欢钻研代码和硬件那种。我第一次接触开源是2001年,我安装了我的第一个Linux发行版Lindows。当然,我也是Mozilla Firefox的早期用户。

由于我很早使用Linux,我用的第一个版本是 Lindows 1.0.4(如果我没记错的话),我就立即爱上了它。我没在Lindows上呆太久,而是活跃于多个发行版(Debian, Puppy Linux, SUSE, Slackware, Ubuntu),多年来我一直每天使用着开源软件,从青少年时候直到我成年。

最后,我坚持使用Ubuntu。大概是在Hardy Heron(LCTT 译注:Ubuntu8.04 LTS)发布时候,我开始第一次为Ubuntu做些贡献,在IRC频道和当地社区帮助那些需要帮助的用户。我是通过Ubuntu认识开源的,它在我心里总有着特殊的意义。Ubuntu背后的社区的是非常多样化的、热情的、友好的,每个人都做些共享,是他们共同的目标也是个人目标,这成为他们为开源贡献的动力。

在为Ubuntu贡献一段时间后,我开始了为一些上游项目作贡献,比如Debian、GNOMEGaneti,还有许多其他的开源项目。在过去的几年里,我为超过40个开源项目贡献过,有些小的,也有很大的。

在Ubuntu项目方向上有些变化之后,我最终觉得,这不仅对于我是一个尝试新东西的机遇,而且也是我给一些新东西贡献的时候。所以我在2009年参与了Mozilla项目,在IRC帮忙,最终通过参与Mozilla WebFWD program,成为一名团队成员,然后是Mozilla Reps ProgramMozilla DevRel Program,刚过两年时间,我成为了火狐社区的发布经理,负责监督Firefox Nightly和Firefox ESR的发布。相比其他开源项目,在为Mozilla贡献中会获得更多有益的经验。在所有我参与过的开源社区中,Mozilla是最不同的,最大的也是最友好的。

这些年来,关于开源我觉得,我越来越遵循自由软件价值观、捍卫隐私和许可协议合规,以及在开放的氛围下工作。我相信这三个主题对于开源来说是非常重要的,虽然许多人并没在意到提倡它们是很重要的。

今天在这,我已不再是别人的开源项目的全职贡献者。最近我被诊断出患有糖尿病,我看到了开源软件中健康软件不是很丰富这一缺口。确实,它不像其它开源软件应用如Linux发行版或浏览器那样活跃。

我最近创立了自己的开源项目Glucosio,带给人们糖尿病管理和研究的开源软件。经过几年来对开源项目的贡献,和见识过的多种组织结构,使得我作为项目领导能够得心应手。我对于Glucosio的未来很兴奋,但最重要的是未来的开源将在医疗健康领域发展的如何。

医疗保健软件的创新具有很大潜力,我想我们很快就会看到用于改善医疗卫生保健的开源新方案。


via: https://opensource.com/life/15/11/my-open-source-story-ben-kerensa

作者:Benjamin Kerensa 译者:ynmlml 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Web 代理软件转发 HTTP 请求时并不会改变数据流量。它们可以配置成透明代理,而无需客户端配置。它们还可以作为反向代理放在网站的前端;这样缓存服务器可以为一台或多台 web 服务器提供无限量的用户服务。

网站代理功能多样,有着宽泛的用途:从缓存页面、DNS 和其他查询,到加速 web 服务器响应、降低带宽消耗。代理软件广泛用于大型高访问量的网站,比如纽约时报、卫报, 以及社交媒体网站如 Twitter、Facebook 和 Wikipedia。

页面缓存已经成为优化单位时间内所能吞吐的数据量的至关重要的机制。好的 Web 缓存还能降低延迟,尽可能快地响应页面,让终端用户不至于因等待内容的时间过久而失去耐心。它们还能将频繁访问的内容缓存起来以节省带宽。如果你需要降低服务器负载并改善网站内容响应速度,那缓存软件能带来的好处就绝对值得探索一番。

为深入探查 Linux 下可用的相关软件的质量,我列出了下边5个优秀的开源 web 代理工具。它们中有些功能完备强大,也有几个只需很低的资源就能运行。

Squid

Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。

Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。

Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。

其特性包括:

  • Web 代理:

    • 通过缓存来降低访问时间和带宽使用
    • 将元数据和访问特别频繁的对象缓存到内存中
    • 缓存 DNS 查询
    • 支持非阻塞的 DNS 查询
    • 实现了失败请求的未果缓存
  • Squid 缓存可架设为层次结构,或网状结构以节省额外的带宽
  • 通过广泛的访问控制来执行网站访问策略
  • 隐匿请求,如禁用或修改客户端 HTTP 请求头特定属性
  • 反向代理
  • 媒体范围 media-range 限制
  • 支持 SSL
  • 支持 IPv6
  • 错误页面的本地化 - Squid 可以根据访问者的语言选项对每个请求展示本地化的错误页面
  • 连接固定 Connection Pinning (用于 NTLM Auth Passthrough) - 一种允许 Web 服务器通过 Web 代理使用Microsoft NTLM 安全认证替代 HTTP 标准认证的方案
  • 支持 服务质量 QoS, Quality of Service

    • 选择一个 TOS/Diffserv 值来标记本地命中
    • 选择一个 TOS/Diffserv 值来标记对端命中
    • 选择性地仅标记同级或上级请求
    • 允许任意发往客户端的 HTTP 响应保持由远程服务器处响应的 TOS 值
    • 对收到的远程服务器的 TOS 值,在复制之前对指定位进行掩码操作,再发送到客户端
  • SSL Bump (用于 HTTPS 过滤和适配) - Squid-in-the-middle,在 CONNECT 方式的 SSL 隧道中,用配置化的客户端和服务器端证书,对流量进行解密和加密
  • 支持适配模块
  • ICAP 旁路和重试增强 - 通过完全的旁路和动态链式路由扩展 ICAP,来处理多多个适应性服务。
  • 支持 ICY 流式协议 - 俗称 SHOUTcast 多媒体流
  • 动态 SSL 证书生成
  • 支持 ICAP 协议 (Internet Content Adaptation Protocol)
  • 完整的请求日志记录
  • 匿名连接

  • 网站: www.squid-cache.org
  • 开发: 美国国家应用网络研究实验室(NLANR)和网络志愿者
  • 授权: GNU GPL v2
  • 版本号: 4.0.1

Privoxy

Privoxy (Privacy Enhancing Proxy) 是一个非缓存类 Web 代理软件,它自带的高级过滤功能可以用来增强隐私保护、修改页面内容和 HTTP 头部信息、访问控制,以及去除广告和其它招人反感的互联网垃圾。Privoxy 的配置非常灵活,能充分定制已满足各种各样的需求和偏好。它支持单机和多用户网络两种模式。

Privoxy 使用 action 规则来处理浏览器和远程站点间的数据流。

其特性包括:

  • 高度配置化——可以完全定制你的配置
  • 广告拦截
  • Cookie 管理
  • 支持“Connection: keep-alive”。可以无视客户端配置而保持外发的持久连接
  • 支持 IPv6
  • 标签化 Tagging ,允许按照客户端和服务器的请求头进行处理
  • 作为 拦截 intercepting 代理器运行
  • 巧妙的 动作 action 和过滤机制用来处理服务器和客户端的 HTTP 头部
  • 可以与其他代理软件链式使用
  • 整合了基于浏览器的配置和控制工具,能在线跟踪规则和过滤效果,可远程开关
  • 页面过滤(文本替换、根据尺寸大小删除广告栏, 隐藏的“web-bugs”元素和 HTML 容错等)
  • 模块化的配置使得标准配置和用户配置可以存放于不同文件中,这样安装更新就不会覆盖用户的个性化设置
  • 配置文件支持 Perl 兼容的正则表达式,以及更为精妙和灵活的配置语法
  • GIF 去动画
  • 旁路处理大量 点击跟踪 click-tracking 脚本(避免脚本重定向)
  • 大多数代理生成的页面(例如 "访问受限" 页面)可由用户自定义HTML模板
  • 自动监测配置文件的修改并重新读取
  • 大多数功能可以基于每个站点或每个 URL 位置来进行控制
  • 网站: www.privoxy.org
  • 开发: Fabian Keil(开发领导者), David Schmidt, 和众多其他贡献者
  • 授权: GNU GPL v2
  • 版本号: 3.4.2

Varnish Cache

Varnish Cache 是一个为性能和灵活性而生的 web 加速器。它新颖的架构设计能带来显著的性能提升。根据你的架构,通常情况下它能加速响应速度300-1000倍。Varnish 将页面存储到内存,这样 web 服务器就无需重复地创建相同的页面,只需要在页面发生变化后重新生成。页面内容直接从内存中访问,当然比其他方式更快。

此外 Varnish 能大大提升响应 web 页面的速度,用在任何应用服务器上都能使网站访问速度大幅度地提升。

按经验,Varnish Cache 比较经济的配置是1-16GB内存+ SSD 固态硬盘。

其特性包括:

  • 新颖的设计
  • VCL - 非常灵活的配置语言。VCL 配置会转换成 C,然后编译、加载、运行,灵活且高效
  • 能使用 round-robin 轮询和随机分发两种方式来负载均衡,两种方式下后端服务器都可以设置权重
  • 基于 DNS、随机、散列和客户端 IP 的 分发器 Director
  • 多台后端主机间的负载均衡
  • 支持 Edge Side Includes,包括拼装压缩后的 ESI 片段
  • 重度多线程并发
  • URL 重写
  • 单 Varnish 能够缓存多个虚拟主机
  • 日志数据存储在共享内存中
  • 基本的后端服务器健康检查
  • 优雅地处理后端服务器“挂掉”
  • 命令行界面的管理控制台
  • 使用内联 C 语言来扩展 Varnish
  • 可以与 Apache 用在相同的系统上
  • 单个系统可运行多个 Varnish
  • 支持 HAProxy 代理协议。该协议在每个收到的 TCP 请求——例如 SSL 终止过程中——附加一小段 http 头信息,以记录客户端的真实地址
  • 冷热 VCL 状态
  • 可以用名为 VMOD 的 Varnish 模块来提供插件扩展
  • 通过 VMOD 定义后端主机
  • Gzip 压缩及解压
  • HTTP 流的通过和获取
  • 神圣模式和优雅模式。用 Varnish 作为负载均衡器,神圣模式下可以将不稳定的后端服务器在一段时间内打入黑名单,阻止它们继续提供流量服务。优雅模式允许 Varnish 在获取不到后端服务器状态良好的响应时,提供已过期版本的页面或其它内容。
  • 实验性支持持久化存储,无需 LRU 缓存淘汰

Polipo

Polipo 是一个开源的 HTTP 缓存代理,只需要非常低的资源开销。

它监听来自浏览器的 web 页面请求,转发到 web 服务器,然后将服务器的响应转发到浏览器。在此过程中,它能优化和整形网络流量。从本质来讲 Polipo 与 WWWOFFLE 很相似,但其实现技术更接近于 Squid。

Polipo 最开始的目标是作为一个兼容 HTTP/1.1 的代理,理论它能在任何兼容 HTTP/1.1 或更早的 HTTP/1.0 的站点上运行。

其特性包括:

  • HTTP 1.1、IPv4 & IPv6、流量过滤和隐私保护增强
  • 如确认远程服务器支持的话,则无论收到的请求是管道处理过的还是在多个连接上同时收到的,都使用 HTTP/1.1 管道 pipelining
  • 下载被中断时缓存起始部分,当需要续传时用 区间 Range 请求来完成下载
  • 将 HTTP/1.0 的客户端请求升级为 HTTP/1.1,然后按照客户端支持的级别进行升级或降级后回复
  • 全面支持 IPv6 (作用域(链路本地)地址除外)
  • 作为 IPv4 和 IPv6 网络的网桥
  • 内容过滤
  • 能使用 Poor Man 多路复用技术 Poor Man's Multiplexing 降低延迟
  • 支持 SOCKS 4 和 SOCKS 5 协议
  • HTTPS 代理
  • 扮演透明代理的角色
  • 可以与 Privoxy 或 tor 一起运行

Tinyproxy

Tinyproxy 是一个轻量级的开源 web 代理守护进程,其设计目标是快而小。它适用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。

Tinyproxy 对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。Tinyproxy 的一个关键特性是其缓冲连接的理念。从效果上看, Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。

特性:

  • 易于修改
  • 隐匿模式 - 定义哪些 HTTP 头允许通过,哪些又会被拦截
  • 支持 HTTPS - Tinyproxy 允许通过 CONNECT 方法转发 HTTPS 连接,任何情况下都不会修改数据流量
  • 远程监控 - 远程访问代理统计数据,让你能清楚了解代理服务当前的忙碌状态
  • 平均负载监控 - 通过配置,当服务器的负载接近一定值后拒绝新连接
  • 访问控制 - 通过配置,仅允许指定子网或 IP 地址的访问
  • 安全 - 运行无需额外权限,减小了系统受到威胁的概率
  • 基于 URL 的过滤 - 允许基于域和URL的黑白名单
  • 透明代理 - 配置为透明代理,这样客户端就无需任何配置
  • 代理链 - 在流量出口处采用上游代理服务器,而不是直接转发到目标服务器,创建我们所说的代理链
  • 隐私特性 - 限制允许从浏览器收到的来自 HTTP 服务器的数据(例如 cookies),同时限制允许通过的从浏览器到 HTTP 服务器的数据(例如版本信息)
  • 低开销 - 使用 glibc 内存开销只有2MB,CPU 负载按并发连接数线性增长(取决于网络连接速度)。 Tinyproxy 可以运行在老旧的机器上而无需担心性能问题。
  • 网站: banu.com/tinyproxy
  • 开发: Robert James Kaes和其他贡献者
  • 授权: GNU GPL v2
  • 版本号: 1.8.3

via: http://www.linuxlinks.com/article/20151101020309690/WebDelivery.html

译者:fw8899 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

问题: 我的电脑通过 HTTP 代理连接到公司网络。当我尝试从 CD-ROM 在计算机上安装 Ubuntu 桌面时,在检索文件时安装程序会被挂起,检索则不会完成,这可能是由于代理造成的。然而问题是,Ubuntu 的安装程序从不要求我在安装过程中配置代理。那我该怎么使用代理来安装 Ubuntu 桌面?

与 Ubuntu 服务器不太一样,安装 Ubuntu 桌面几乎都是自动安装,没有留下太多自定义的空间,如自定义磁盘分区,手动网络设置,包选择等等。尽管非常简单,一键安装被认为是用户友好的,它不需要用户寻找“高级安装模式”来定制自己的 Ubuntu 桌面。

此外,Ubuntu 默认桌面的安装程序中一个大问题是代理设置。如果你的计算机连接在一个代理上,你会发现 Ubuntu 安装时会卡在准备下载文件处。

这篇文章描述了如何解决当使用代理时 Ubuntu 安装程序的限制和安装 Ubuntu 桌面

其基本思路如下。不是直接使用 Ubuntu 的安装程序开始安装,首先进入 live Ubuntu 桌面,配置代理服务器,最后从 live 桌面手动启动 Ubuntu 的安装程序。以下是程序的安装步骤。

从 CD/DVD 或 USB 启动 Ubuntu 桌面后,点击第一个欢迎屏幕上的"Try Ubuntu"。

一旦进入 live Ubuntu 桌面,点击左侧设置图标。

进入 Network 菜单。

手动配置代理服务器。

接下来,打开一个终端。

通过输入以下命令切换到 root 用户:

$ sudo su

最后,在 root 用户下输入以下命令。

# ubiquity gtk_ui

然后将启动基于 GUI 的 Ubuntu 安装程序。

继续安装其余部分。


via: http://ask.xmodulo.com/install-ubuntu-desktop-behind-proxy.html

作者:Dan Nanni 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Light Table 在经过一年以上的开发,已经推出了新的稳定发行版本。现在它只为 Linux 提供64位的二进制包。

Light Table 0.8.0的改动:

  • 更改: 我们从 NW.js 切换到了 Electron
  • 更改: Light Table 的发行与自更新进程完全地公开在github上
  • 增加: Light Table 可以用提供的脚本在各个支持的平台上从源码构建
  • 增加: Light Table 大部分的 node 代码库将通过 npm 依赖来安装,以取代以前采用分叉库的方式
  • 增加: 有效文档。更多详情内容见下面
  • 修复: 版本号 >= OSX 10.10的系统下的主要的可用性问题
  • 更改: 官方不再提供 32位 Linux 软件包下载,不过仍然支持从源码构建
  • 修复: ClojureScript eval 支持 ClojureScript 的现代版本
  • 参阅更多 github.com/LightTable/LightTable/releases

LightTable 0.8.0

如何在 Ubuntu 中安装 Light Table 0.8.0

下面的步骤会指导你怎么样在 Ubuntu 下安装官方的二进制包,在目前的 Ubuntu 发行版本中都适用(仅仅针对64位)。

在开始之前,如果你安装了之前的版本请做好备份。

1. 从以下链接下载 LightTable Linux 下的二进制文件:

2. 从 dash 或是应用启动器,或者是 Ctrl+Alt+T 快捷键打开终端,并且在输入以下命令后敲击回车键:

gksudo file-roller ~/Downloads/lighttable-0.8.0-linux.tar.gz

open-via-fileroller

如果命令不工作的话从 Ubuntu 软件中心安装gksu

3. 之前的命令使用了 root 用户权限通过档案管理器打开了下载好的存档。

打开它后,请做以下步骤:

  • 右击文件并且将其重命名为 LightTable
  • 将其解压到 Computer -> /opt/ 目录下。

extract-lighttable

最终你应该安装好了 LightTable,可以在 /opt/ 目录下查看:

lighttable-in-opt

4. 创建一个启动器使你可以从 dash 工具或是应用启动器打开 LightTable。

打开终端,运行以下命令来创建与编辑一个 LightTable 的启动文件:

gksudo gedit /usr/share/applications/lighttable.desktop

通过 Gedit 文本编辑器打开文件后,粘贴下面的内容并保存:

[Desktop Entry]
Version=1.0
Type=Application
Name=Light Table
GenericName=Text Editor
Comment=Open source IDE that modify, from running programs to embed websites and games
Exec=/opt/LightTable/LightTable %F
Terminal=false
MimeType=text/plain;
Icon=/opt/LightTable/resources/app/core/img/lticon.png
Categories=TextEditor;Development;Utility;
StartupNotify=true
Actions=Window;Document;

Name[en_US]=Light Table

[Desktop Action Window]
Name=New Window
Exec=/opt/LightTable/LightTable -n
OnlyShowIn=Unity;

[Desktop Action Document]
Name=New File
Exec=/opt/LightTable/LightTable --command new_file
OnlyShowIn=Unity;

因此它看起来像:

lighttable-launcher

最后,从 dash 工具或者是应用启动器打开 IDE,好好享受它吧!


via: http://ubuntuhandbook.org/index.php/2015/12/install-light-table-0-8-ubuntu-14-04/

作者:Ji m 译者:zky001 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Node.js 是用于开发服务器端应用程序的开源的运行时环境。Node.js 应用使用 JavaScript 编写,能在任何有 Node.js 运行时的服务器上运行。它跨平台支持 Linux、Windows、OSX、IBM AIX,也包括 FreeBSD。Node.js 是 Ryan Dahl 以及在 Joyent 工作的其他开发者于 2009 年创建的。它的设计目标就是构建可扩展的网络应用程序。

Ghost 是使用 Node.js 编写的博客平台。它不仅开源,而且有很漂亮的界面设计、对用户友好并且免费。它允许你快速地在网络上发布内容,或者创建你的混合网站。

在这篇指南中我们会在 FreeBSD 上安装使用 Nginx 作为 web 服务器的 Ghost。我们会在 FreeBSD 10.2 上安装 Node.js、Npm、nginx 和 sqlite3。

第一步 - 安装 Node.js npm 和 Sqlite3

如果你想在你的服务器上运行 ghost,你必须安装 node.js。在这一部分,我们会从 freebsd 移植软件库中安装 node.js,请进入库目录 "/usr/ports/www/node" 并通过运行命令 "make" 安装。

cd /usr/ports/www/node
make install clean

如果你已经安装了 node.js,那就进入到 npm 目录并安装它。npm 是用于安装、发布和管理 node 程序的软件包管理器。

cd /usr/ports/www/npm/
make install clean

下一步,安装 sqlite3。默认情况下 ghost 使用 sqlite3 作为数据库系统,但它也支持 mysql/mariadb 和 postgresql。我们会使用 sqlite3 作为默认数据库。

cd /usr/ports/databases/sqlite3/
make install clean

如果安装完了所有软件,还有检查 node.js 和 npm 的版本:

node --version
v0.12.6

npm --version
2.11.3

sqlite3 --version
3.8.10.2

node 和 npm 版本

第二步 - 添加 Ghost 用户

我们会以普通用户 "ghost" 身份安装和运行 ghost。用 "adduser" 命令添加新用户:

adduser ghost
FILL With Your INFO

添加用户 Ghost

第三步 - 安装 Ghost

我们会把 ghost 安装到 "/var/www/" 目录,首先新建目录然后进入到安装目录:

mkdir -p /var/www/
cd /var/www/

用 wget 命令下载最新版本的 ghost:

wget --no-check-certificate https://ghost.org/zip/ghost-latest.zip

把它解压到 "ghost" 目录:

unzip -d ghost ghost-latest.zip

下一步,更改属主为 "ghost",我们会以这个用户安装和运行它。

chown -R ghost:ghost ghost/

都做完了的话,通过输入以下命令切换到 "ghost" 用户:

su - ghost

然后进入到安装目录"/var/www/ghost/":

cd /var/www/ghost/

在安装 ghost 之前,我们需要为 node.js 安装 sqlite3 模块,用 npm 命令安装:

setenv CXX c++ ; npm install sqlite3 --sqlite=/usr/local

注意: 以 “ghost” 用户运行,而不是 root 用户。

现在,我们准备好安装 ghost 了,用 npm 命令安装:

npm install --production

下一步,复制配置文件 "config.example.js" 为 "config.js",用 nano 编辑器编辑:

cp config.example.js config.js
nano -c config.js

更改 server 模块的第 25 行:

host: '0.0.0.0',

保存并退出。

现在用下面的命令运行 ghost:

npm start --production

通过访问服务器 ip 和 2368 号端口验证一下。

Ghost 安装完成

以 “ghost” 用户在 "/var/www/ghost" 目录安装了 ghost。

第四步 - 作为 FreeBSD 服务运行 Ghost

要在 freebsd 上以服务形式运行应用,你需要在 rc.d 目录添加脚本。我们会在 "/usr/local/etc/rc.d/" 目录为 ghost 创建新的服务脚本。

在创建服务脚本之前,为了以服务形式运行 ghost,我们需要安装一个 node.js 模块,用 npm 命令以 sudo/root 权限安装 forever 模块:

npm install forever -g

现在进入到 rc.d 目录并创建名为 ghost 的新文件:

cd /usr/local/etc/rc.d/
nano -c ghost

粘贴下面的服务脚本:

#!/bin/sh

# PROVIDE: ghost
# KEYWORD: shutdown
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"

. /etc/rc.subr

name="ghost"
rcvar="ghost_enable"
extra_commands="status"

load_rc_config ghost
: ${ghost_enable:="NO"}

status_cmd="ghost_status"
start_cmd="ghost_start"
stop_cmd="ghost_stop"
restart_cmd="ghost_restart"

ghost="/var/www/ghost"
log="/var/log/ghost/ghost.log"
ghost_start() {
sudo -u ghost sh -c "cd $ghost && NODE_ENV=production forever start -al $log index.js"
}

ghost_stop() {
sudo -u ghost sh -c "cd $ghost && NODE_ENV=production forever stop index.js"
}

ghost_status() {
sudo -u ghost sh -c "NODE_ENV=production forever list"
}

ghost_restart() {
ghost_stop;
ghost_start;
}

run_rc_command "$1"

保存并退出。

下一步,给 ghost 服务脚本添加可执行权限:

chmod +x ghost

为 ghost 日志创建新的目录和文件,并把属主修改为 ghost 用户:

mkdir -p /var/www/ghost/
touch /var/www/ghost/ghost.log
chown -R /var/www/ghost/

最后,如果你想运行 ghost 服务,你需要用 sysrc 命令添加 ghost 服务到开机启动应用程序:

sysrc ghost_enable=yes

用以下命令启动 ghost:

service ghost start

其它命令:

service ghost stop
service ghost status
service ghost restart

Ghost 服务命令

第五步 - 为 Ghost 安装和配置 Nginx

默认情况下,ghost 会以独立模式运行,你可以不用 Nginx、apache 或 IIS web 服务器直接运行它。但在这篇指南中我们会安装和配置 nginx 和 ghost 一起使用。

用 pkg 命令从 freebsd 库中安装 nginx:

pkg install nginx

下一步,进入 nginx 配置目录并为 virtualhost 配置创建新的目录。

cd /usr/local/etc/nginx/
mkdir virtualhost/

进入 virtualhost 目录,用 nano 编辑器创建名为 ghost.conf 的新文件:

cd virtualhost/
nano -c ghost.conf

粘贴下面的 virtualhost 配置:

server {
listen 80;

#Your Domain
server_name ghost.me;

location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
proxy_pass http://127.0.0.1:2368;
}

location / {
add_header X-XSS-Protection "1; mode=block";
add_header Cache-Control "public, max-age=0";
add_header Content-Security-Policy "script-src 'self' ; font-src 'self' ; connect-src 'self' ; block-all-mixed-content; reflected-xss block; referrer no-referrer";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2368;
}

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

location ~ /\.ht {
deny all;
}

}

保存并退出。

要启用 virtualhost 配置,你需要把那个文件添加到 nginx.conf。进入 nginx 配置目录并编辑 nginx.conf 文件:

cd /usr/local/etc/nginx/
nano -c nginx.conf

在最后一行的前面,包含 virtualhost 配置目录:

[......]

include virtualhost/*.conf;

}

保存并退出。

用命令 "nginx -t" 测试 nginx 配置,如果没有错误,用 sysrc 添加 nginx 到开机启动:

sysrc nginx_enable=yes

并启动 nginx:

service nginx start

现在测试所有 nginx 和 virtualhost 配置。请打开你的浏览器并输入: ghost.me

ghost.me 成功运行

Ghost.me 正在成功运行。

如果你想要检查 nginx 服务器,可以使用 "curl" 命令。

测试 ghost 和 nginx

Ghost 正在 nginx 上运行。

总结

Node.js 是 Ryan Dahl 为创建和开发可扩展服务器端应用程序创建的运行时环境。Ghost 是使用 node.js 编写的开源博客平台,它有漂亮的外观设计并且易于使用。默认情况下,ghost 是可以单独运行的 web 应用程序,并不需要类似 apache、nginx 或 IIS 之类的 web 服务器,但我们也可以和 web 服务器集成(在这篇指南中使用 Nginx)。Sqlite 是 ghost 默认使用的数据库,它还支持 msql/mariadb 和 postgresql。Ghost 能快速部署并且易于使用和配置。


via: http://linoxide.com/linux-how-to/install-ghost-nginx-freebsd-10-2/

作者:Arul 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

拉美自由软件基金会 FSFLA 在 Linux Torvalds 发布了 Linux 内核 4.5 两天后,也发布了他们的 Linux-libre 4.5 内核。

GNU Linux-libre 内核 4.5 基于上游的 Linux 内核 4.5,但是从代码中 洁化 deblobbing 了一些驱动程序,比如 Qualcomm WCNSS SOC、 qat\_c62x、 qat\_c3xxx、 goodix touchscreen 和 adf7242 等。此外,也更新了洁化版的 Nouveau、 Radeon、 Skylake sound 和 XHCI rcar 驱动。

GNU Linux-libre 内核 4.5 是给谁用的?

GNU Linux-libre 项目创建于很久之前,它致力于为那些遵循自由软件基金会的 《GNU 自由操作系统发行版指南》 GNU Free System Distribution Guidelines 的人们提供上游 Linux 内核的 100% 自由的版本。

GNU Linux-libre 内核设计上与 GNU 操作系统的兼容性有所偏差,不过你可以自由的在你的 GNU/Linux 系统上使用它,无论你是一位要创建基于 Linux 内核的操作系统的开发者,还是一位要希望得到完整的自由的用户!

如果你对 GNU Linux-libre 项目感兴趣,想要将它部署到你的操作系统中,我们建议你去读读 http://linuxlibre.org 的官方维基,并下载 GNU Linux-libre 内核 4.5 的源代码