如何在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器
Lighttpd 是一款开源 Web 服务器软件。Lighttpd 安全快速，符合行业标准，适配性强并且针对高配置环境进行了优化。相对于其它的 Web 服务器而言，Lighttpd 占用内存更少；因其对 CPU 占用小和对处理速度的优化而在效率和速度方面从众多 Web 服务器中脱颖而出。而 Lighttpd 诸如 FastCGI、CGI、认证、输出压缩、URL 重写等高级功能更是那些面临性能压力的服务器的福音。以下便是我们在运行 Ubuntu 15.04 或 CentOS 7 Linux 发行版的机器上安装 Lighttpd Web 服务器的简要流程。安装Lighttpd使用包管理器安装这里我们通过使用包管理器这种最简单的方法来安装 Lighttpd。只需以 sudo 模式在终端或控制台中输入下面的指令即可。CentOS 7由于 CentOS 7.0 官方仓库中并没有提供 Lighttpd，所以我们需要在系统中安装额外的软件源 epel 仓库。使用下面的 yum 指令来安装 epel。# yum install epel-release 然后，我们需要更新系统及为 Lighttpd 的安装做前置准备。# yum update # yum install lighttpd Ubuntu 15.04Ubuntu 15.04 官方仓库中包含了 Lighttpd，所以只需更新本地仓库索引并使用 apt-get 指令即可安装 Lighttpd。# apt-get update # apt-get install lighttpd 从源代码安装 Lighttpd如果想从 Lighttpd 源码安装最新版本（例如 1.4.39），我们需要在本地编译源码并进行安装。首先我们要安装编译源码所需的依赖包。# cd /tmp/ # wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.39.tar.gz 下载完成后，执行下面的指令解压缩。# tar -zxvf lighttpd-1.4.39.tar.gz 然后使用下面的指令进行编译。# cd lighttpd-1.4.39 # ./configure # make 注：在这份教程中，我们安装的是默认配置的 Lighttpd。其他拓展功能，如对 SSL 的支持，modrewrite，modredirect 等，需自行配置。当编译完成后，我们就可以把它安装到系统中了。# make install 设置 Lighttpd如果有更高的需求，我们可以通过修改默认设置文件，如/etc/lighttpd/lighttpd.conf，来对 Lighttpd 进行进一步设置。 而在这份教程中我们将使用默认设置，不对设置文件进行修改。如果你曾做过修改并想检查设置文件是否出错，可以执行下面的指令。# lighttpd -t -f /etc/lighttpd/lighttpd.conf 使用 CentOS 7在 CentOS 7 中，我们需创建一个在 Lighttpd 默认配置文件中设置的 webroot 文件夹，例如/src/www/htdocs。# mkdir -p /srv/www/htdocs/ 而后将默认欢迎页面从/var/www/lighttpd复制至刚刚新建的目录中：# cp -r /var/www/lighttpd/* /srv/www/htdocs/ 开启服务现在，通过执行 systemctl 指令来重启 Web 服务。# systemctl start lighttpd 然后我们将它设置为伴随系统启动自动运行。# systemctl enable lighttpd 设置防火墙如要让我们运行在 Lighttpd 上的网页或网站能在 Internet 或同一个网络内被访问，我们需要在防火墙程序中设置打开 80 端口。由于 CentOS 7 和 Ubuntu15.04 都附带 Systemd 作为默认初始化系统，所以我们默认用的都是 firewalld。如果要打开 80 端口或 http 服务，我们只需执行下面的命令：# firewall-cmd --permanent --add-service=http success # firewall-cmd --reload success 连接至 Web 服务器在将 80 端口设置为默认端口后，我们就可以直接访问 Lighttpd 的默认欢迎页了。我们需要根据运行 Lighttpd 的设备来设置浏览器的 IP 地址和域名。在本教程中，我们令浏览器访问 http://lighttpd.linoxide.com/ ，同时将该子域名指向上述 IP 地址。如此一来，我们就可以在浏览器中看到如下的欢迎页面了。此外，我们可以将网站的文件添加到 webroot 目录下，并删除 Lighttpd 的默认索引文件，使我们的静态网站可以在互联网上访问。如果想在 Lighttpd Web 服务器中运行 PHP 应用，请参考下面的步骤：安装 PHP5 模块在 Lighttpd 成功安装后，我们需要安装 PHP 及相关模块，以在 Lighttpd 中运行 PHP5 脚本。使用 Ubuntu 15.04# apt-get install php5 php5-cgi php5-fpm php5-mysql php5-curl php5-gd php5-intl php5-imagick php5-mcrypt php5-memcache php-pear 使用 CentOS 7# yum install php php-cgi php-fpm php-mysql php-curl php-gd php-intl php-pecl-imagick php-mcrypt php-memcache php-pear lighttpd-fastcgi 设置 Lighttpd 的 PHP 服务如要让 PHP 与 Lighttpd 协同工作，我们只要根据所使用的发行版执行如下对应的指令即可。使用 CentOS 7首先要做的便是使用文件编辑器编辑 php 设置文件（例如/etc/php.ini）并取消掉对cgi.fix_pathinfo=1这一行的注释。# nano /etc/php.ini 完成上面的步骤之后，我们需要把 PHP-FPM 进程的所有权从 Apache 转移至 Lighttpd。要完成这些，首先用文件编辑器打开/etc/php-fpm.d/www.conf文件。# nano /etc/php-fpm.d/www.conf 然后在文件中增加下面的语句：user = lighttpd group = lighttpd 做完这些，我们保存并退出文本编辑器。然后从/etc/lighttpd/modules.conf设置文件中添加 FastCGI 模块。# nano /etc/lighttpd/modules.conf 然后，去掉下面语句前面的#来取消对它的注释。include "conf.d/fastcgi.conf" 最后我们还需在文本编辑器设置 FastCGI 的设置文件。# nano /etc/lighttpd/conf.d/fastcgi.conf 在文件尾部添加以下代码：fastcgi.server += ( ".php" => (( "host" => "127.0.0.1", "port" => "9000", "broken-scriptfilename" => "enable" )) ) 在编辑完成后保存并退出文本编辑器即可。使用 Ubuntu 15.04如需启用 Lighttpd 的 FastCGI，只需执行下列代码：# lighttpd-enable-mod fastcgi Enabling fastcgi: ok Run /etc/init.d/lighttpd force-reload to enable changes # lighttpd-enable-mod fastcgi-php Enabling fastcgi-php: ok Run `/etc/init.d/lighttpd` force-reload to enable changes 然后，执行下列命令来重启 Lighttpd。# systemctl force-reload lighttpd 检测 PHP 工作状态如需检测 PHP 是否按预期工作，我们需在 Lighttpd 的 webroot 目录下新建一个 php 文件。本教程中，在 Ubuntu 下 /var/www/html 目录，CentOS 下 /src/www/htdocs 目录下使用文本编辑器创建并打开 info.php。使用 CentOS 7# nano /var/www/info.php 使用 Ubuntu 15.04# nano /srv/www/htdocs/info.php 然后只需将下面的语句添加到文件里即可。<?php phpinfo(); ?> 在编辑完成后保存并推出文本编辑器即可。现在，我们需根据路径 http://lighttpd.linoxide.com/info.php 下的 info.php 文件的 IP 地址或域名，来让我们的网页浏览器指向系统上运行的 Lighttpd。如果一切都按照以上说明进行，我们将看到如下图所示的 PHP 页面信息。总结至此，我们已经在 CentOS 7 和 Ubuntu 15.04 Linux 发行版上成功安装了轻巧快捷并且安全的 Lighttpd Web 服务器。现在，我们已经可以上传网站文件到网站根目录、配置虚拟主机、启用 SSL、连接数据库，在我们的 Lighttpd Web 服务器上运行 Web 应用等功能了。 如果你有任何疑问，建议或反馈请在下面的评论区中写下来以让我们更好的改良 Lighttpd。谢谢！via: http://linoxide.com/linux-how-to/setup-lighttpd-web-server-ubuntu-15-04-centos-7/作者：Arun Pyasi 译者：HaohongWANG 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如果你对一次又一次的克隆、构建、测试和部署代码感到厌倦了，可以考虑一下持续集成。持续集成简称 CI，是一种像我们一样的频繁提交的代码库，构建、测试和部署的软件工程实践。CI 可以帮助我们快速的集成新代码到已有的代码库。如果这个过程是自动化进行的，那么就会提高开发的速度，因为这可以减少开发人员手工构建和测试的时间。Drone 是一个自由开源项目，用来提供一个非常棒的持续集成服务的环境，采用 Apache 2.0 协议发布。它已经集成近很多代码库提供商，比如 Github、Bitbucket 以及 Google Code，它可以从代码库提取代码，使我们可以对包括 PHP, Node, Ruby, Go, Dart, Python, C/C++, JAVA 等等在内的各种语言编译构建。它是如此一个强大的平台，它使用了容器和 docker 技术，这让用户每次构建都可以在保证隔离的条件下完全控制他们自己的构建环境。1. 安装 Docker首先，我们要安装 docker，因为这是 Drone 的工作流的最关键的元素。Drone 合理的利用了 docker 来构建和测试应用。容器技术提高了应用部署的效率。要安装 docker ，我们需要在不同的 linux 发行版本运行下面对应的命令，我们这里会说明 Ubuntu 14.04 和 CentOS 7 两个版本。Ubuntu要在 Ubuntu 上安装 Docker ，我们只需要运行下面的命令。# apt-get update # apt-get install docker.io 安装之后我们需要使用service 命令重启 docker 引擎。# service docker restart 然后我们让 docker 在系统启动时自动启动。# update-rc.d docker defaults Adding system startup for /etc/init.d/docker ... /etc/rc0.d/K20docker -> ../init.d/docker /etc/rc1.d/K20docker -> ../init.d/docker /etc/rc6.d/K20docker -> ../init.d/docker /etc/rc2.d/S20docker -> ../init.d/docker /etc/rc3.d/S20docker -> ../init.d/docker /etc/rc4.d/S20docker -> ../init.d/docker /etc/rc5.d/S20docker -> ../init.d/docker CentOS第一，我们要更新机器上已经安装的软件包。我们可以使用下面的命令。# sudo yum update 要在 centos 上安装 docker，我们可以简单的运行下面的命令。# curl -sSL https://get.docker.com/ | sh 安装好 docker 引擎之后我么只需要简单使用下面的systemd 命令启动 docker，因为 centos 7 的默认初始化系统是 systemd。# systemctl start docker 然后我们要让 docker 在系统启动时自动启动。# systemctl enable docker ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' 2. 安装 SQlite 驱动Drone 默认使用 SQlite3 数据库服务器来保存数据和信息。它会在 /var/lib/drone/ 自动创建名为 drone.sqlite 的数据库来处理数据库模式的创建和迁移。要安装 SQlite3 我们要完成以下几步。Ubuntu 14.04因为 SQlite3 存在于 Ubuntu 14.04 的默认软件库，我们只需要简单的使用 apt 命令安装它。# apt-get install libsqlite3-dev CentOS 7要在 Centos 7 上安装需要使用下面的 yum 命令。# yum install sqlite-devel 3. 安装 Drone最后，我们安装好依赖的软件，我们现在更进一步的接近安装 Drone。在这一步里我们只简单的从官方链接下载对应的二进制软件包，然后使用默认软件包管理器安装 Drone。Ubuntu我们将使用 wget 从官方的 Debian 文件下载链接下载 drone 的 debian 软件包。下面就是下载命令。# wget downloads.drone.io/master/drone.deb Resolving downloads.drone.io (downloads.drone.io)... 54.231.48.98 Connecting to downloads.drone.io (downloads.drone.io)|54.231.48.98|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 7722384 (7.4M) [application/x-debian-package] Saving to: 'drone.deb' 100%[======================================>] 7,722,384 1.38MB/s in 17s 2015-11-06 14:09:28 (456 KB/s) - 'drone.deb' saved [7722384/7722384] 下载好之后，我们将使用 dpkg 软件包管理器安装它。# dpkg -i drone.deb Selecting previously unselected package drone. (Reading database ... 28077 files and directories currently installed.) Preparing to unpack drone.deb ... Unpacking drone (0.3.0-alpha-1442513246) ... Setting up drone (0.3.0-alpha-1442513246) ... Your system ubuntu 14: using upstart to control Drone drone start/running, process 9512 CentOS在 CentOS 机器上我们要使用 wget 命令从下载链接下载 RPM 包。# wget downloads.drone.io/master/drone.rpm --2015-11-06 11:06:45-- http://downloads.drone.io/master/drone.rpm Resolving downloads.drone.io (downloads.drone.io)... 54.231.114.18 Connecting to downloads.drone.io (downloads.drone.io)|54.231.114.18|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 7763311 (7.4M) [application/x-redhat-package-manager] Saving to: ‘drone.rpm’ 100%[======================================>] 7,763,311 1.18MB/s in 20s 2015-11-06 11:07:06 (374 KB/s) - ‘drone.rpm’ saved [7763311/7763311] 然后我们使用 yum 安装 rpm 包。# yum localinstall drone.rpm 4. 配置端口安装完成之后，我们要先进行配置才能工作起来。drone 的配置文件在/etc/drone/drone.toml 。默认情况下 drone 的 web 接口使用的是80，而这也是 http 默认的端口，如果我们修改它，请按下面所示的修改配置文件里 server 块对应的值。[server] port=":80" 5. 集成 Github为了运行 Drone 我们必须设置最少一个和 GitHub、GitHub 企业版，Gitlab，Gogs，Bitbucket 关联的集成点。在本文里我们只集成了 github，但是如果我们要集成其他的服务，我们可以在配置文件做修改。为了集成 github 我们需要在github 的设置里创建一个新的应用：https://github.com/settings/developers 。要创建一个应用，我们需要在 New Application 页面点击 Register，然后如下所示填表。我们应该保证在应用的配置项里设置了授权回调链接，链接看起来类似 http://drone.linoxide.com/api/auth/github.com。然后我们点击注册应用。所有都做好之后我们会看到我们需要在我们的 Drone 配置文件里配置的客户端 ID 和客户端密钥。在这些都完成之后我们需要使用文本编辑器编辑 drone 配置文件，比如使用下面的命令。# nano /etc/drone/drone.toml 然后我们会在 drone 的配置文件里面找到[github] 部分，紧接着的是下面所示的配置内容[github] client="3dd44b969709c518603c" secret="4ee261abdb431bdc5e96b19cc3c498403853632a" # orgs=[] # open=false 6. 配置 SMTP 服务器如果我们想让 drone 使用 email 发送通知，那么我们需要在 SMTP 配置里面设置我们的 SMTP 服务器。如果我们已经有了一个 SMTP 服务，那就只需要简单的使用它的配置文件就行了，但是因为我们没有一个 SMTP 服务器，我们需要安装一个 MTA 比如 Postfix，然后在 drone 配置文件里配置好 SMTP。Ubuntu在 ubuntu 里使用下面的 apt 命令安装 postfix。# apt-get install postfix CentOS在 CentOS 里使用下面的 yum 命令安装 postfix。# yum install postfix 安装好之后，我们需要编辑我们的 postfix 配置文件。# nano /etc/postfix/main.cf 然后我们要把 myhostname 的值替换为我们自己的 FQDN，比如 drone.linoxide.com。myhostname = drone.linoxide.com 现在开始配置 drone 配置文件里的 SMTP 部分。# nano /etc/drone/drone.toml 找到[smtp] 部分补充上下面的内容。[smtp] host = "drone.linoxide.com" port = "587" from = "root@drone.linoxide.com" user = "root" pass = "password" 注意：这里的 user 和 pass 参数强烈推荐一定要改成某个具体用户的配置。7. 配置 Worker如我们所知的 drone 利用了 docker 完成构建、测试任务，我们需要把 docker 配置为 drone 的 worker。要完成这些需要修改 drone 配置文件里的[worker] 部分。# nano /etc/drone/drone.toml 然后取消底下几行的注释并且补充上下面的内容。[worker] nodes=[ "unix:///var/run/docker.sock", "unix:///var/run/docker.sock" ] 这里我们只设置了两个节点，这意味着上面的配置文件只能同时执行2 个构建操作。要提高并发性可以增大节点的值。[worker] nodes=[ "unix:///var/run/docker.sock", "unix:///var/run/docker.sock", "unix:///var/run/docker.sock", "unix:///var/run/docker.sock" ] 使用上面的配置文件 drone 被配置为使用本地的 docker 守护程序可以同时构建4个任务。8. 重启 Drone最后，当所有的安装和配置都准备好之后，我们现在要在本地的 linux 机器上启动 drone 服务器。Ubuntu因为 ubuntu 14.04 使用了 sysvinit 作为默认的初始化系统，所以只需要简单执行下面的 service 命令就可以启动 drone 了。# service drone restart 要让 drone 在系统启动时也自动运行，需要运行下面的命令。# update-rc.d drone defaults CentOS因为 CentOS 7使用 systemd 作为初始化系统，所以只需要运行下面的 systemd 命令就可以重启 drone。# systemctl restart drone 要让 drone 自动运行只需要运行下面的命令。# systemctl enable drone 9. 添加防火墙例外规则众所周知 drone 默认使用了80 端口而我们又没有修改它，所以我们需要配置防火墙程序允许80 端口（http）开放并允许其他机器可以通过网络连接。Ubuntu 14.04iptables 是最流行的防火墙程序，并且 ubuntu 默认安装了它。我们需要修改 iptable 以暴露端口80，这样我们才能让 drone 的 web 界面在网络上被大家访问。# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # /etc/init.d/iptables save CentOS 7因为 CentOS 7 默认安装了 systemd，它使用 firewalld 作为防火墙程序。为了在 firewalld 上打开80端口（http 服务），我们需要执行下面的命令。# firewall-cmd --permanent --add-service=http success # firewall-cmd --reload success 10. 访问 web 界面现在我们将在我们最喜欢的浏览器上通过 web 界面打开 drone。要完成这些我们要把浏览器指向运行 drone 的服务器。因为 drone 默认使用80 端口而我们有没有修改过，所以我们只需要在浏览器里根据我们的配置输入http://ip-address/ 或 http://drone.linoxide.com 就行了。在我们正确的完成了上述操作后，我们就可以看到登录界面了。因为在上面的步骤里配置了 Github，我们现在只需要简单的选择 github 然后进入应用授权步骤，这些完成后我们就可以进入工作台了。这里它会同步我们在 github 上的代码库，然后询问我们要在 drone 上构建那个代码库。这一步完成后，它会询问我们在代码库里添加.drone.yml 文件的新名称，并且在这个文件里定义构建的过程和配置项，比如使用那个 docker 镜像，执行那些命令和脚本来编译，等等。我们按照下面的内容来配置我们的.drone.yml。image: python script: - python helloworld.py - echo "Build has been completed." 这一步完成后我们就可以使用 drone 应用里的 YAML 格式的配置文件来构建我们的应用了。所有对代码库的提交和改变此时都会同步到这个仓库。一旦提交完成了，drone 就会自动开始构建。所有操作都完成后，我们就能在终端看到构建的结果了。总结在本文中我们学习了如何安装一个可以工作的使用 drone 的持续集成平台。如果我们愿意我们甚至可以从 drone.io 官方提供的服务开始工作。我们可以根据自己的需求从免费的服务或者收费服务开始。它通过漂亮的 web 界面和强大的功能改变了持续集成的世界。它可以集成很多第三方应用和部署平台。如果你有任何问题、建议可以直接反馈给我们，谢谢。via: http://linoxide.com/linux-how-to/setup-drone-continuous-integration-linux/作者：Arun Pyasi 译者：ezio 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Cockpit 是一个自由开源的服务器管理软件，它使得我们可以通过它好看的 web 前端界面轻松地管理我们的 GNU/Linux 服务器。Cockpit 使得 linux 系统管理员、系统维护员和开发者能轻松地管理他们的服务器并执行一些简单的任务，例如管理存储、检测日志、启动或停止服务以及一些其它任务。它的报告界面添加了一些很好的功能使得可以轻松地在终端和 web 界面之间切换。另外，它不仅使得管理一台服务器变得简单，更重要的是只需要一个单击就可以在一个地方同时管理多个通过网络连接的服务器。它非常轻量级，web 界面也非常简单易用。在这篇博文中，我们会学习如何安装 Cockpit 并用它管理我们的运行着 Fedora、CentOS、Arch Linux 以及 RHEL 发行版操作系统的服务器。下面是 Cockpit 在我们的 GNU/Linux 服务器中一些非常棒的功能：它包含 systemd 服务管理器。有一个用于故障排除和日志分析的 Journal 日志查看器。包括 LVM 在内的存储配置比以前任何时候都要简单。用 Cockpit 可以进行基本的网络配置。可以轻松地添加和删除用户以及管理多台服务器。1. 安装 Cockpit首先，我们需要在我们基于 linux 的服务器上安装 Cockpit。大部分发行版的官方软件仓库中都有可用的 cockpit 安装包。这篇博文中，我们会在 Fedora 22、CentOS 7、Arch Linux 和 RHEL 7 中通过它们的官方软件仓库安装 Cockpit。CentOS / RHELCentOS 和 RHEL 官方软件库中有可用的 Cockpit。我们只需要用 yum 管理器就可以安装。只需要以 sudo/root 权限运行下面的命令就可以安装它。# yum install cockpit Fedora 22/21和 CentOS 一样， Fedora 的官方软件库默认也有可用的 Cockpit。我们只需要用 dnf 软件包管理器就可以安装 Cockpit。# dnf install cockpit Arch Linux现在 Arch Linux 官方软件库中还没有可用的 Cockpit，但 Arch 用户库（Arch User Repository，AUR）有。只需要运行下面的 yaourt 命令就可以安装。# yaourt cockpit 2. 启动并启用 Cockpit成功安装完 Cockpit，我们就要用服务/守护进程管理器启动 Cockpit 服务。到了 2015 年，尽管一些 linux 发行版仍然运行 SysVinit 管理守护进程，但大部分 linux 发行版都采用了 Systemd，Cockpit 使用 systemd 完成从运行守护进程到服务几乎所有的功能。因此，我们只能在运行着 Systemd 的最新的 linux 发行版中安装 Cockpit。要启动 Cockpit 并让它在每次系统重启时自动启动，我们需要在终端或控制台中运行下面的命令。# systemctl start cockpit # systemctl enable cockpit.socket Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket. 3. 允许通过防火墙启动 Cockpit 并使得它能在每次系统重启时自动启动后，我们现在要给它配置防火墙。由于我们的服务器上运行着防火墙程序，我们需要允许它通过某些端口使得从服务器外面可以访问 Cockpit。Firewalld# firewall-cmd --add-service=cockpit --permanent success # firewall-cmd --reload success Iptables# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # service iptables save 4. 访问 Cockpit Web 界面下面，我们终于要通过 web 浏览器访问 Cockpit web 界面了。根据配置，我们只需要用浏览器打开 https://ip-address:9090 或 https://server.domain.com:9090。在我们这篇博文中，我们用浏览器打开 https://128.199.114.17:9090，正如下图所示。此时会出现一个 SSL 认证警告，因为我们正在使用一个自签名认证。我们只需要忽略这个警告并进入到登录页面，在 chrome/chromium 中，我们需要点击 Show Advanced 然后点击 Proceed to 128.199.114.17 (unsafe)。现在，要进入仪表盘，我们需要输入详细的登录信息。这里，用户名和密码和用于登录我们的 linux 服务器的用户名和密码相同。当我们输入登录信息并点击 Log In 按钮后，我们就会进入到 Cockpit 仪表盘。这里我们可以看到所有的菜单以及 CPU、磁盘、网络、存储使用情况的可视化结果。仪表盘正如上图所示。服务要管理服务，我们需要点击 web 页面右边菜单中的 Services 按钮。然后，我们会看到服务被分成了 5 个类别，目标、系统服务、套接字、计时器和路径。Docker 容器我们甚至可以用 Cockpit 管理 docker 容器。用 Cockpit 监控和管理 Docker 容器非常简单。由于我们的服务器中没有安装运行 docker，我们需要点击 Start Docker。Cockpit 会自动在我们的服务器上安装和运行 docker。启动之后，我们就会看到下面的截图。然后我们就可以按照需求管理 docker 镜像、容器。Journal 日志查看器Cockpit 有个日志查看器，它把错误、警告、注意分到不同的标签页。我们也有一个 All 标签页，在这里可以看到所有的日志信息。网络在网络部分，我们可以看到两个可视化发送和接收速度的图。我们可以看到这里有一个可用网卡的列表，还有 Add Bond、Bridge、VLAN 的选项。如果我们需要配置一个网卡，我们只需要点击网卡名称。在下面，我们可以看到网络的 Journal 日志信息。存储现在，用 Cockpit 可以方便地查看硬盘的读写速度。我们可以查看存储的 Journal 日志以便进行故障排除和修复。在页面中还有一个已用空间的可视化图。我们甚至可以卸载、格式化、删除一块硬盘的某个分区。它还有类似创建 RAID 设备、卷组等攻能。用户管理通过 Cockpit Web 界面我们可以方便地创建新用户。在这里创建的账户会应用到系统用户账户。我们可以用它更改密码、指定角色、以及删除用户账户。实时终端Cockpit 还有一个很棒的特性。是的，我们可以执行命令，用 Cockpit 界面提供的实时终端执行任务。这使得我们可以根据我们的需求在 web 界面和终端之间自由切换。总结Cockpit 是由 Red Hat 开发的使得管理服务器变得轻松简单的自由开源软件。它非常适合于进行简单的系统管理任务和新手系统管理员。它仍然处于开发阶段，还没有稳定版发行。因此不适合于生产环境。它是针对最新的默认安装了 systemd 的 Fedora、CentOS、Arch Linux、RHEL 系统开发的。如果你想在 Ubuntu 上安装 Cockpit，你可以通过 PPA 访问，但现在已经过期了。如果你有任何疑问、建议，请在下面的评论框中反馈给我们，这样我们可以改进和更新我们的内容。非常感谢 ！via: http://linoxide.com/linux-how-to/install-cockpit-fedora-centos-rhel-arch-linux/作者：Arun Pyasi 译者：ictlyh 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
意法半导体为 32 位微控制器发布了一款自由的 Linux 集成开发环境
32 位微控制器世界向 Linux 敞开大门。前一段时间，领先的 ARM Cortex-M 供应商意法半导体（ST）发布了 一款自由的 Linux 桌面版开发程序，该软件面向其旗下的 STM32 微控制单元（MCU）。包含了 ST 的 STM32CubeMX 配置器和初始化工具，以及其 STM32 系统工作台（SW4STM32） ，这个基于 Eclipse 的 IDE 由工具 Ac6 创建。支撑 SW4STM32 的工具链，论坛，博客以及技术会由 openSTM32.org 开发社区提供。“Linux 社区以吸引富有创意的自由思想者而闻名，他们善于交流心得、高效地克服挑战。” Laurent Desseignes，意法半导体微控制器产品部，微控制器生态系统市场经理这么说道：“我们正着手做的是让他们能极端简单的借力 STM32 系列的特性和性能施展自己的才能，运用到富有想象力的新产品的创造中去。Linux 是物联网（IoT）网关和枢纽，及高端 IoT 终端的领先平台。但是，大部分 IoT 革命，以及可穿戴设备市场基于小型的低功耗微控制器，对 Cortex-M 芯片的运用越来越多。虽然其中的一小部分可以运行精简的 uCLinux （见下文），却没能支持更全面的 Linux 发行版。取而代之的是实时操作系统（RTOS）们或者有时干脆不用 OS 来控制。固件的开发工作一般会在基于 Windows 的集成开发环境（IDE）上完成。通过 ST 的自由工具，Linux 开发者们可以更容易的开疆拓土。ST 工具中的一些技术在第二季度应该会登录 Mac OS/X 平台，与 STM32 Nucleo 、开发套件、以及评估板同时面世。Nucleo 支持 32 针、64 针、和 144 针的版本，并且提供类似 Arduino 连接器这样的插件。STM32CubeMX 配置器和 IDE SW4STM32 使 Linux 开发者能够配置微控制器并开发调试代码。SW4STM32 支持在 Linux 下通过社区更改版的 OpenOCD 使用调试工具 ST-LINK/V2。据 ST 称，软件兼容 STM32Cube 软件包及标准外设库中的微控制器固件。目标是囊括 ST 的全系列 MCU，从入门级的 Cortex-M0 内核到高性能的 M7 芯片，包括 M0+，M3 和 DSP 扩展的 M4 内核。ST 并非首个为 Linux 准备 Cortex-M 芯片 IDE 的 32 位 MCU 供应商，但似乎是第一大自由的 Linux 平台。例如 NXP，MCU 的市场份额随着近期收购了 Freescale （Kinetis 系列 MCU，等）而增加，提供了一款 IDE LPCXpresso IDE，支持 Linux 、Windows 和 Mac。然而，LPCXpresso 每份售价 $450。在其 SmartFusion FPGA 系统级芯片（SoC）上集成了 Cortex-M3 芯片的 Microsemi，拥有一款 IDE Libero IDE，适用于 RHEL 和 Windows。然而，Libero 需要许可证才行，并且 RHEL 版缺乏如 FlashPro 和 SoftConsole 的插件。为什么要学习 MCU?即便 Linux 开发者并没有计划在 Cortex-M 上使用 uClinux，但是 MCU 的知识总会派上用场。特别是牵扯到复杂的 IoT 工程，需要扩展 MCU 终端至云端。对于原型和业余爱好者的项目，Arduino 板为其访问 MCU 提供了非常便利的接口。然而原型之外，开发者常常就会用更快的 32 位 Cortex-M 芯片以及所带来的附加功能来替代 Arduino 板和板上的那块 8 位 MCU ATmega32u4。这些附加功能包括改进的存储器寻址，用于芯片和各种总线的独立时钟设置，以及芯片 Cortex-M7 自带的入门级显示芯片。还有些可能需求 MCU 开发技术的地方包括可穿戴设备，低功耗、低成本和小尺寸给了 MCU 一席之地，还有机器人和无人机这些使用实时处理和电机控制的地方更为受用。在机器人上，你更是有可能看看 Cortex-A 与 Cortex-M 集成在同一个产品中的样子。对于 SoC 芯片还有这样的一种温和的局势，即将 MCU 加入到 Linux 驱动的 Cortex-A 核心中，就如同 NXP i.MX6 SoloX。虽然大多数的嵌入式项目并不使用这种混合型 SoC 或者说将应用处理器和 MCU 结合在同一产品中，但开发者会渐渐地发现自己工作的生产线、设计所基于的芯片正渐渐的从低端的 MCU 模块发展到 Linux 或安卓驱动的 Cortex-A。uClinux 是 Linux 在 MCU 领域的筹码随着物联网的兴起，我们见到越来越多的 SBC 和模块计算机，它们在 32 位的 MCU 上运行着 uClinux。不同于其他的 Linux 发行版，uClinux 并不需要内存管理单元（MMU）。然而，uClinux 对市面上可见 MCU 有更高的内存需求。需求更高端的 Cortex-M4 和 Cortex-M4 微控制器内置内存控制器来支持外部 DRAM 芯片。Amptek SBC 在 NXP LPC Cortex-M3 和 -M4 芯片上运行 uClinux，以提供常用的功能类似 WiFi、蓝牙、USB 等众多接口。Arrow 的 SF2+ 物联网开发套件将 uClinux 运行于 SmartFusion2 模块计算机的 Emcraft 系统上，该模块计算机是 Microsemi 的 166MHz Cortex-M3/FPGA SmartFusion2 混合 SoC。Emcraft 销售基于 uClinux 的模块计算机，有 ST 和 NXP 的，也有 Microsemi 的 MCU，是 32 位 MCU 上积极推进 uClinux 的重要角色。日益频繁的 uClinux 开始了与 ARM 本身 Mbed OS的对抗，至少在高端的 MCU 工程中需要无线通信和更为复杂的操作规则。Mbed 和 modern 的支持者，开源的 RTOS 们，类似 FreeRTOS 认为 uClinux 需要对 RAM 的需求太高以至于难以压低 IoT 终端的价格，然而 Emcraft 与其他 uCLinux 拥趸表示价格并没有如此夸张，而且扩展 Linux 的无线和接口也是相当值得的，即使只是在像 uClinux 这样的精简版上。当被问及对于这次 ST 发布的看法，Emcraft 的主任工程师 Vladimir Khusainov 表示：“ST决定将这款开发工具 移植至 Linux 对于 Emcraft 是个好消息，它使得 Linux 用户能轻易的在嵌入式 STM MCU 上展开工作。我们希望那些有机会熟悉 STM 设备，使用 ST 配置器和嵌入式库的用户可能对在目标机上使用嵌入式 Linux （以 uClinux 的形式）感兴趣。”最近关于 Cortex-M4 上运行 uClinux 的概述，可以查看去年 Jim Huang 与 Jeff Liaws 在嵌入式 Linux 大会上使用的幻灯片。更多关于 Cortex-M 处理器可以查看这里过的 AnandTech 总结。via: http://www.linux.com/news/embedded-mobile/mobile-linux/884961-st-releases-free-linux-ide-for-32-bit-mcus作者：Arun Pyasi 译者：martin2011qi 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
在 Ubuntu 15.04 / CentOS 7 上安装广告服务器 Revive Adserver
Revive Adserver是一个自由开源的广告管理系统，能使出版商，广告平台和广告商在网页、应用、视频上投放并管理广告的系统。Revive Adserver以前叫做OpenX Source，遵循GNU通用公共授权协议。它集广告管理、网站定位、地理定位和一个用于数据收集的跟踪系统于一体。能使网站站长管理内部的、付费的以及第三方来源的广告，如谷歌的AdSense。本教程中，将会教会你在Ubuntu 15.04或CentOS 7安装并运行Revive Adserver。1. 安装LAMP首先，Revive Adserver需要完整的LAMP环境才能运行，所以我们先安装LAMP。LAMP是Apache网页服务器，MySQL/MariaDB数据库和PHP模块的集合。要使Revive正常运行，需要安装PHP的众多模块，如apc, zlib, xml, pcre, mysql和mbstring。在不同的Linux发行版中，我们可以用下列命令进行LAMP的配置:在Ubuntu 15.04下# apt-get install apache2 mariadb-server php5 php5-gd php5-mysql php5-curl php-apc zlibc zlib1g zlib1g-dev libpcre3 libpcre3-dev libapache2-mod-php5 zip 在CentOS 7下# yum install httpd mariadb php php-gd php-mysql php-curl php-mbstring php-xml php-apc zlibc zlib1g zlib1g-dev libpcre3 libpcre3-dev zip 2. 启动Apache Web和MariaDB服务可以用下列命令启动刚刚安装好的Apache Web服务和MariaDB数据库服务。在Ubuntu 15.04下Ubuntu15.04使用Systemd作为默认初始系统，所以用下列命令启动Apache和MariaDB进程：# systemctl start apache2 mysql 可以用下列命令使其开机自动运行：# systemctl enable apache2 mysql Synchronizing state for apache2.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d apache2 defaults Executing /usr/sbin/update-rc.d apache2 enable Synchronizing state for mysql.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d mysql defaults Executing /usr/sbin/update-rc.d mysql enable 在CentOS 7下CentOS 7同样是以Systemd作为默认初始系统，可以用下列命令启动:# systemctl start httpd mariadb ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service' ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' 3. 配置MariaDB在CentOS 7/Ubuntu 15.04下当我们第一次启动MariaDB时，MariaDB是没有分配密码的，所以要先设置一个root密码。之后再创建一个新的数据库用来储存Revive Adserver的数据。使用以下命令配置MariaDB并设置其root密码：# mysql_secure_installation 这时会要我们输入root密码，但我们之前什么密码都没设置，所以按回车下一步。之后，要求设置root密码，这时我们输入Y，然后输入自己想要的密码。回车继续下一步。 … so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on… Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. … Success! … installation should now be secure. Thanks for using MariaDB! 4. 创建新的数据库为MariaDB的root用户设置了密码之后，就可以创建用来储存Revive Adserver应用数据的数据库。首先通过以下命令登录MariaDB控制台：# mysql -u root -p 这时要求输入root用户的密码，我们只要输入上一步设置好的密码。然后进入MariaDB控制台创建新的数据库，数据库用户及其密码，并且授予其创建、删除、编辑和存储表与数据的全部权限。> CREATE DATABASE revivedb; > CREATE USER 'reviveuser'@'localhost' IDENTIFIED BY 'Pa$$worD123'; > GRANT ALL PRIVILEGES ON revivedb.* TO 'reviveuser'@'localhost'; > FLUSH PRIVILEGES; > EXIT; 5. 下载Revive Adserver接下来下载Revive Adserver的最新版本Revive Adserver.3.2.2（写本文时）。可以使用wget命令从Revive Adserverde 官方网站下载压缩包，网址是：http://www.revive-adserver.com/download/ 。命令如下：# cd /tmp/ # wget http://download.revive-adserver.com/revive-adserver-3.2.2.zip --2015-11-09 17:03:48-- http://download.revive-adserver.com/revive-adserver-3.2.2.zip Resolving download.revive-adserver.com (download.revive-adserver.com)... 54.230.119.219, 54.239.132.177, 54.230.116.214, ... Connecting to download.revive-adserver.com (download.revive-adserver.com)|54.230.119.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 11663620 (11M) [application/zip] Saving to: 'revive-adserver-3.2.2.zip' revive-adserver-3.2 100%[=====================>] 11.12M 1.80MB/s in 13s 2015-11-09 17:04:02 (906 KB/s) - 'revive-adserver-3.2.2.zip' saved [11663620/11663620] 解压到临时目录下：# unzip revive-adserver-3.2.2.zip 把解压后的整个文件夹移动到Apache Web服务器的默认根目录/var/www/html/下：# mv revive-adserver-3.2.2 /var/www/html/reviveads 6. 配置Apache Web服务现在配置Apache服务使Revive正常运行。通过创建配置文件reviveads.conf来创建一个新的虚拟主机。这个目录在不同的Linux发行版上有所不同。在Ubuntu 15.04下# touch /etc/apache2/sites-available/reviveads.conf # ln -s /etc/apache2/sites-available/reviveads.conf /etc/apache2/sites-enabled/reviveads.conf # nano /etc/apache2/sites-available/reviveads.conf 在这个文件中添加下列几行文本：<VirtualHost *:80> ServerAdmin info@reviveads.linoxide.com DocumentRoot /var/www/html/reviveads/ ServerName reviveads.linoxide.com ServerAlias www.reviveads.linoxide.com <Directory /var/www/html/reviveads/> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/apache2/reviveads.linoxide.com-error_log CustomLog /var/log/apache2/reviveads.linoxide.com-access_log common </VirtualHost> 保存并退出，重启Apache Web服务：# systemctl restart apache2 在CentOS 7下在CentOS下，我们直接在/etc/httpd/conf.d/ 目录下创建reviveads.conf :# nano /etc/httpd/conf.d/reviveads.conf 在这个文件中添加下列几行文本：<VirtualHost *:80> ServerAdmin info@reviveads.linoxide.com DocumentRoot /var/www/html/reviveads/ ServerName reviveads.linoxide.com ServerAlias www.reviveads.linoxide.com <Directory /var/www/html/reviveads/> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/httpd/reviveads.linoxide.com-error_log CustomLog /var/log/httpd/reviveads.linoxide.com-access_log common </VirtualHost> 保存并退出，重启Apache Web服务：# systemctl restart httpd 7. 修复权限和所有权现在我们修改安装路径下文件的权限和所有权。把安装目录的所有权改成Apache进程所有，以便Apache Web服务有文件和目录的编辑、创建和删除的完全权限。在Ubuntu 15.04下# chown www-data: -R /var/www/html/reviveads 在CentOS 7下# chown apache: -R /var/www/html/reviveads 8. 设置防火墙现在要配置防火墙，打开80端口使Apache Web服务运行的Revive Adserver能够被网络上的其他机器所访问。在Ubuntu 15.04/CentOS 7下Ubuntu15.04/CentOS 7都使用Systemd作为默认初始系统，使用firewalld作为其防火墙。要打开80端口（http服务端口），执行以下命令：# firewall-cmd --permanent --add-service=http success # firewall-cmd --reload success 9. 网站的安装顺利的话我们能够使用浏览器进行交互，并可以将浏览器指向正在运行的网络服务器。只要在浏览器输入http://ip-address/ 或者 http://domain.com。这里我们要访问http://reviveads.linoxide.com/打开后可以看到Revive Adserver的欢迎页面，上面还有作为它发行许可证的GNU通用公共许可证V2。点击 I agree 继续下一步安装。在下一页中，我们要输入数据库信息以便把Revive Adserver和MariaDB数据库服务连接起来。要输入之前设置的数据库名称，用户名以及密码。在本教程中，我们分别输入数据库名称为revivedb，用户名为reviveuser，密码为Pa$$worD123,并且令主机名为localhost，点击continue继续。输入要填的信息，如：管理员用户名，密码和邮箱。可以以这些信息登录Adserver的控制界面。然后跳到最后一页，可以看到Revive Adserver已经安装成功了。接着，转到Adverstiser页面，添加新的广告管理。在控制界面添加新用户到adserver，为广告库户添加标题，网页，视频 广告。总结本文中，我们学习了如何在Ubuntu 15.04和CentOS 7上安装并配置Revive Adserver。尽管Revive Adserver的原始代码是从OpenX那买的，但现在OpenX Enterprise和Revive Adserver已经完全分开了。可以从http://www.adserverplugins.com/ 获得更多插件来扩展新特性。讲真，这个软件确实让网页，应用，视频上的广告管理变得容易了许多。via: http://linoxide.com/linux-how-to/install-revive-adserver-ubuntu-15-04-centos-7/作者：Arun Pyasi 译者：chisper 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在 Git 问世之前，分布式版本控制从来都不是一件简单的事。Git 是一个自由开源的软件，旨在轻松且快速地对从小规模到非常巨大的项目进行管理。Git 最开始由 Linus Torvalds 开发，他同时也是著名的 Linux 内核的创建者。在 git 和分布式版本控制系统领域中，GitLab 是一个极棒的新产品。它是一个基于 web 的 Git 仓库管理应用，包含代码审查、wiki、问题跟踪等诸多功能。使用 GitLab 可以很方便、快速地创建、审查、部署及托管代码。尽管它在其官方的服务器提供了与 Github 类似的免费托管的代码仓库，但它也可以运行在我们自己的服务器上。GitLab 有两个不同的版本： 社区版 （ Community Edition ） 和 企业版 （ Enterprise Edition ） 。社区版本完全免费且开源，遵循 MIT 协议；而企业版则遵循一个专有的协议，包含一些社区版中没有的功能。下面介绍的是有关如何在我们自己的运行着 Ubuntu、Fedora 或 Debian 操作系统的机器上安装 GitLab 社区版的简单步骤。1. 安装先决条件首先，我们需要安装 GitLab 所依赖的软件包。我们将安装 curl，用以下载我们所需的文件；安装openssh-server ，以此来通过 ssh 协议登录到我们的机器上；安装ca-certificates，用它来添加 CA 认证；以及 postfix，把它作为一个 MTA(Mail Transfer Agent，邮件传输代理)。注： 若要安装 GitLab 社区版，我们需要一个至少包含 2 GB 内存和 2 核 CPU 的 linux 机器。在 Ubuntu 14 .04/Debian 8.x 中鉴于这些依赖包都可以在 Ubuntu 14.04 和 Debian 8.x 的官方软件仓库中获取到，我们只需通过使用 apt-get 包管理器来安装它们。为此，我们需要在一个终端或控制台中执行下面的命令：# apt-get install curl openssh-server ca-certificates postfix 在 Fedora 22 中在 Fedora 22 中，由于 yum 已经被弃用了，默认的包管理器是 dnf。为了安装上面那些需要的软件包，我们只需运行下面的 dnf 命令：# dnf install curl openssh-server postfix 2. 打开并开启服务现在，我们将使用我们默认的初始化系统来打开 sshd 和 postfix 服务。并且我们将使得它们在每次系统启动时被自动开启。在 Ubuntu 14.04 中由于在 Ubuntu 14.04 中安装的是 SysVinit 初始化系统，我们将使用 service 命令来开启 sshd 和 postfix 守护进程：# service sshd start # service postfix start 现在，为了使得它们在每次开机启动时被自动开启，我们需要运行下面的 update-rc.d 命令：# update-rc.d sshd enable # update-rc.d postfix enable 在 Fedora 22/Debian 8.x 中鉴于 Fedora 22 和 Debian 8.x 已经用 Systemd 代替了 SysVinit 来作为默认的初始化系统，我们只需运行下面的命令来开启 sshd 和 postfix 服务：# systemctl start sshd postfix 现在，为了使得它们在每次开机启动时可以自动运行，我们需要运行下面的 systemctl 命令：# systemctl enable sshd postfix Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service. Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service. 3. 下载 GitLab现在，我们将使用 curl 从官方的 GitLab 社区版仓库下载二进制安装文件。首先，为了得到所需文件的下载链接，我们需要浏览到该软件仓库的页面。为此，我们需要在运行着相应操作系统的 linux 机器上运行下面的命令。在 Ubuntu 14.04 中由于 Ubuntu 和 Debian 使用相同的 debian 格式的安装包，我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 下搜索所需版本的 GitLab，然后点击有着 ubuntu/trusty 标签的链接，即我们运行着的 Ubuntu 14.04。接着一个新的页面将会出现，我们将看到一个下载按钮，然后我们在它的上面右击，得到文件的链接，然后像下面这样使用 curl 来下载它。# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.1.2-ce.0_amd64.deb 在 Debian 8.x 中与 Ubuntu 类似，我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 页面中搜索所需版本的 GitLab，然后点击带有 debian/jessie 标签的链接，即我们运行着的 Debian 8.x。接着，一个新的页面将会出现，然后我们在下载按钮上右击，得到文件的下载链接。最后我们像下面这样使用 curl 来下载该文件。# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_8.1.2-ce.0_amd64.deb/download 在 Fedora 22 中由于 Fedora 使用 rpm 文件来作为软件包，我们将在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms 页面下搜索所需版本的 GitLab，然后点击所需发行包的链接，这里由于我们运行的是 Fedora 22，所以我们将选择带有 el/7 标签的发行包。一个新的页面将会出现，在其中我们可以看到一个下载按钮，我们将右击它，得到所需文件的链接，然后像下面这样使用 curl 来下载它。# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm/download 4. 安装 GitLab在相应的软件源被添加到我们的 linux 机器上之后，现在我们将使用相应 linux 发行版本中的默认包管理器来安装 GitLab 社区版。在 Ubuntu 14.04/Debian 8.x 中要在运行着 Ubuntu 14.04 或 Debian 8.x linux 发行版本的机器上安装 GitLab 社区版，我们只需运行如下的命令：# dpkg -i gitlab-ce_8.1.2-ce.0_amd64.deb 在 Fedora 22 中我们只需执行下面的 dnf 命令来在我们的 Fedora 22 机器上安装 GitLab。# dnf install gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm 5. 配置和开启 GitLabGitLab 社区版已经成功地安装在我们的 linux 系统中了，接下来我们将要配置和开启它了。为此，我们需要运行下面的命令，这在 Ubuntu、Debian 和 Fedora 发行版本上都一样：# gitlab-ctl reconfigure 6. 允许通过防火墙假如在我们的 linux 机器中已经启用了防火墙程序，为了使得 GitLab 社区版的 web 界面可以通过网络进行访问，我们需要允许 80 端口通过防火墙，这个端口是 GitLab 社区版的默认端口。为此，我们需要运行下面的命令。在 iptables 中Ubuntu 14.04 默认安装和使用的是 iptables。所以，我们将运行下面的 iptables 命令来打开 80 端口：# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # /etc/init.d/iptables save 在 firewalld 中由于 Fedora 22 和 Debian 8.x 默认安装了 systemd，它包含了作为防火墙程序的 firewalld。为了使得 80 端口（http 服务） 能够通过 firewalld，我们需要执行下面的命令。# firewall-cmd --permanent --add-service=http success # firewall-cmd --reload success 7. 访问 GitLab Web 界面最后，我们将访问 GitLab 社区版的 web 界面。为此，我们需要将我们的 web 浏览器指向 GitLab 服务器的网址，根据我们的配置，可能是 http://ip-address/ 或 http://domain.com/ 的格式。在我们成功指向该网址后，我们将会看到下面的页面。现在，为了登录进面板，我们需要点击登录按钮，它将询问我们的用户名和密码。然后我们将输入默认的用户名和密码，即 root 和 5iveL!fe 。在登录进控制面板后，我们将被强制要求为我们的 GitLab root 用户输入新的密码。8. 创建仓库在我们成功地更改密码并登录到我们的控制面板之后，现在，我们将为我们的新项目创建一个新的仓库。为此，我们需要来到项目栏，然后点击 新项目 绿色按钮。接着，我们将被询问给我们的项目输入所需的信息和设定，正如下面展示的那样。我们甚至可以从其他的 git 仓库提供商和仓库中导入我们的项目。做完这些后，我们将能够使用任何包含基本 git 命令行的 Git 客户端来访问我们的 Git 仓库。我们可以看到在仓库中进行的任何活动，例如创建一个里程碑，管理问题，合并请求，管理成员，便签，Wiki 等。总结GitLab 是一个用来管理 git 仓库的很棒的开源 web 应用。它有着漂亮的带有诸多酷炫功能的响应式界面。它还打包有许多酷炫功能，例如管理群组，分发密钥，持续集成，查看日志，广播消息，钩子，系统 OAuth 应用，模板等。（注：OAuth 是一个开放标准，允许用户让第三方应用访问该用户在某一网站上存储的私密的资源（如照片，视频，联系人列表），而无需将用户名和密码提供给第三方应用。--- 摘取自 维基百科上的 OAuth 词条） 它还可以和大量的工具进行交互如 Slack，Hipchat，LDAP，JIRA，Jenkins，有很多类型的钩子和完整的 API。它至少需要 2 GB 的内存和 2 核 CPU 来流畅运行，支持多达 500 个用户，但它也可以被扩展到多个工作服务器上。假如你有任何的问题，建议，回馈，请将它们写在下面的评论框中，以便我们可以提升或更新我们的内容。谢谢！via: http://linoxide.com/linux-how-to/install-gitlab-on-ubuntu-fedora-debian/作者：Arun Pyasi 译者：FSSlc 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
大家好，本教程将学习如何在 ubuntu 15.04 上面安装 puppet，它可以用来管理你的服务器基础环境。puppet 是由 puppet 实验室 （ Puppet Labs ） 开发并维护的一款开源的配置管理软件，它能够帮我们自动化供给、配置和管理服务器的基础环境。不管我们管理的是几个服务器还是数以千计的计算机组成的业务报表体系，puppet 都能够使管理员从繁琐的手动配置调整中解放出来，腾出时间和精力去提系统的升整体效率。它能够确保所有自动化流程作业的一致性、可靠性以及稳定性。它让管理员和开发者更紧密的联系在一起，使开发者更容易产出付出设计良好、简洁清晰的代码。puppet 提供了配置管理和数据中心自动化的两个解决方案。这两个解决方案分别是 puppet 开源版 和 puppet 企业版。puppet 开源版以 Apache 2.0 许可证发布，它是一个非常灵活、可定制的解决方案，设置初衷是帮助管理员去完成那些重复性操作工作。pupprt 企业版是一个全平台复杂 IT 环境下的成熟解决方案，它除了拥有开源版本所有优势以外还有移动端 apps、只有商业版才有的加强支持，以及模块化和集成管理等。Puppet 使用 SSL 证书来认证主控服务器与代理节点之间的通信。本教程将要介绍如何在运行 ubuntu 15.04 的主控服务器和代理节点上面安装开源版的 puppet。在这里，我们用一台服务器做 主控服务器 （ master ） ，管理和控制剩余的当作 puppet 代理节点 （ agent node ） 的服务器，这些代理节点将依据主控服务器来进行配置。在 ubuntu 15.04 只需要简单的几步就能安装配置好 puppet，用它来管理我们的服务器基础环境非常的方便。（LCTT 译注：puppet 采用 C/S 架构，所以必须有至少有一台作为服务器，其他作为客户端处理）1.设置主机文件在本教程里，我们将使用2台运行 ubuntu 15.04 “Vivid Vervet" 的主机，一台作为主控服务器，另一台作为 puppet 的代理节点。下面是我们将用到的服务器的基础信息。puupet 主控服务器 IP：44.55.88.6 ，主机名： puppetmasterpuppet 代理节点 IP： 45.55.86.39 ，主机名： puppetnode我们要在代理节点和服务器这两台机器的 hosts 文件里面都添加上相应的条目，使用 root 或是 sudo 访问权限来编辑 /etc/hosts 文件，命令如下：# nano /etc/hosts 45.55.88.6 puppetmaster.example.com puppetmaster 45.55.86.39 puppetnode.example.com puppetnode 注意，puppet 主控服务器必使用 8140 端口来运行，所以请务必保证开启8140端口。2. 用 NTP 更新时间puppet 代理节点所使用系统时间必须要准确，这样可以避免代理证书出现问题。如果有时间差异，那么证书将过期失效，所以服务器与代理节点的系统时间必须互相同步。我们使用 NTP（ Network Time Protocol （ 网络时间协议 ） ）来同步时间。在服务器与代理节点上面分别运行以下命令来同步时间。# ntpdate pool.ntp.org 17 Jun 00:17:08 ntpdate[882]: adjust time server 66.175.209.17 offset -0.001938 sec （LCTT 译注：显示类似的输出结果表示运行正常）如果没有安装 ntp，请使用下面的命令更新你的软件仓库，安装并运行ntp服务# apt-get update && sudo apt-get -y install ntp ; service ntp restart 3. 安装主控服务器软件安装开源版本的 puppet 有很多的方法。在本教程中我们在 puppet 实验室官网下载一个名为 puppetlabs-release 的软件包的软件源，安装后它将为我们在软件源里面添加 puppetmaster-passenger。puppetmaster-passenger 包括带有 apache 的 puppet 主控服务器。我们开始下载这个软件包：# cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb --2015-06-17 00:19:26-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 7384 (7.2K) [application/x-debian-package] Saving to: ‘puppetlabs-release-trusty.deb’ puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.06s 2015-06-17 00:19:26 (130 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384] 下载完成，我们来安装它：# dpkg -i puppetlabs-release-trusty.deb Selecting previously unselected package puppetlabs-release. (Reading database ... 85899 files and directories currently installed.) Preparing to unpack puppetlabs-release-trusty.deb ... Unpacking puppetlabs-release (1.0-11) ... Setting up puppetlabs-release (1.0-11) ... 使用 apt 包管理命令更新一下本地的软件源：# apt-get update 现在我们就可以安装 puppetmaster-passenger 了# apt-get install puppetmaster-passenger 提示: 在安装的时候可能会报错：Warning: Setting templatedir is deprecated.see http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning') 不过不用担心，忽略掉它就好，我们只需要在设置配置文件的时候把这一项禁用就行了。如何来查看 puppet 主控服务器是否已经安装成功了呢？非常简单，只需要使用下面的命令查看它的版本就可以了。# puppet --version 3.8.1 现在我们已经安装好了 puppet 主控服务器。因为我们使用的是配合 apache 的 passenger，由 apache 来控制 puppet 主控服务器，当 apache 运行时 puppet 主控服务器才运行。在开始之前，我们需要通过停止 apache 服务来让 puppet 主控服务器停止运行。# systemctl stop apache2 4. 使用 Apt 工具锁定主控服务器的版本现在已经安装了 3.8.1 版的 puppet，我们锁定这个版本不让它随意升级，因为升级会造成配置文件混乱。 使用 apt 工具来锁定它，这里我们需要使用文本编辑器来创建一个新的文件 /etc/apt/preferences.d/00-puppet.pref：# nano /etc/apt/preferences.d/00-puppet.pref 在新创建的文件里面添加以下内容：# /etc/apt/preferences.d/00-puppet.pref Package: puppet puppet-common puppetmaster-passenger Pin: version 3.8* Pin-Priority: 501 这样在以后的系统软件升级中， puppet 主控服务器将不会跟随系统软件一起升级。5. 配置 Puppet 主控服务器Puppet 主控服务器作为一个证书发行机构，需要生成它自己的证书，用于签署所有代理的证书的请求。首先我们要删除所有在该软件包安装过程中创建出来的 ssl 证书。本地默认的 puppet 证书放在 /var/lib/puppet/ssl。因此我们只需要使用 rm 命令来整个移除这些证书就可以了。# rm -rf /var/lib/puppet/ssl 现在来配置该证书，在创建 puppet 主控服务器证书时，我们需要包括代理节点与主控服务器沟通所用的每个 DNS 名称。使用文本编辑器来修改服务器的配置文件 puppet.conf：# nano /etc/puppet/puppet.conf 输出的结果像下面这样[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter templatedir=$confdir/templates [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY 在这我们需要注释掉 templatedir 这行使它失效。然后在文件的 [main] 小节的结尾添加下面的信息。server = puppetmaster environment = production runinterval = 1h strict_variables = true certname = puppetmaster dns_alt_names = puppetmaster, puppetmaster.example.com 还有很多你可能用的到的配置选项。 如果你有需要，在 Puppet 实验室有一份详细的描述文件供你阅读： Main Config File (puppet.conf)。编辑完成后保存退出。使用下面的命令来生成一个新的证书。# puppet master --verbose --no-daemonize Info: Creating a new SSL key for ca Info: Creating a new SSL certificate request for ca Info: Certificate Request fingerprint (SHA256): F6:2F:69:89:BA:A5:5E:FF:7F:94:15:6B:A7:C4:20:CE:23:C7:E3:C9:63:53:E0:F2:76:D7:2E:E0:BF:BD:A6:78 ... Notice: puppetmaster has a waiting certificate request Notice: Signed certificate request for puppetmaster Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/ca/requests/puppetmaster.pem' Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/certificate_requests/puppetmaster.pem' Notice: Starting Puppet master version 3.8.1 ^CNotice: Caught INT; storing stop Notice: Processing stop 至此，证书已经生成。一旦我们看到 Notice: Starting Puppet master version 3.8.1，就表明证书就已经制作好了。我们按下 CTRL-C 回到 shell 命令行。查看新生成证书的信息，可以使用下面的命令。# puppet cert list -all + "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com") 6. 创建一个 Puppet 清单默认的主 清单 （ Manifest ） 是 /etc/puppet/manifests/site.pp。 这个主要清单文件包括了用于在代理节点执行的配置定义。现在我们来创建一个清单文件：# nano /etc/puppet/manifests/site.pp 在刚打开的文件里面添加下面这几行：# execute 'apt-get update' exec { 'apt-update': # exec resource named 'apt-update' command => '/usr/bin/apt-get update' # command this resource will run } # install apache2 package package { 'apache2': require => Exec['apt-update'], # require 'apt-update' before installing ensure => installed, } # ensure apache2 service is running service { 'apache2': ensure => running, } 以上这几行的意思是给代理节点部署 apache web 服务。7. 运行 puppet 主控服务已经准备好运行 puppet 主控服务器 了，那么开启 apache 服务来让它启动# systemctl start apache2 我们 puppet 主控服务器已经运行，不过它还不能管理任何代理节点。现在我们给 puppet 主控服务器添加代理节点.提示: 如果报错Job for apache2.service failed. see "systemctl status apache2.service" and "journalctl -xe" for details. 肯定是 apache 服务器有一些问题，我们可以使用 root 或是 sudo 访问权限来运行 apachectl start查看它输出的日志。在本教程执行过程中, 我们发现一个 /etc/apache2/sites-enabled/puppetmaster.conf 的证书配置问题。修改其中的 SSLCertificateFile /var/lib/puppet/ssl/certs/server.pem 为 SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.pem，然后注释掉后面这行 SSLCertificateKeyFile 。然后在命令行重新启动 apache。8. 安装 Puppet 代理节点的软件包我们已经准备好了 puppet 的服务器，现在需要一个可以管理的代理节点，我们将安装 puppet 代理软件到节点上去。这里我们要给每一个需要管理的节点安装代理软件，并且确保这些节点能够通过 DNS 查询到服务器主机。下面将 安装最新的代理软件到 节点 puppetnode.example.com 上。在代理节点上使用下面的命令下载 puppet 实验室提供的软件包：# cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb\ --2015-06-17 00:54:42-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 7384 (7.2K) [application/x-debian-package] Saving to: ‘puppetlabs-release-trusty.deb’ puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.04s 2015-06-17 00:54:42 (162 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384] 在 ubuntu 15.04 上我们使用 debian 包管理系统来安装它，命令如下：# dpkg -i puppetlabs-release-trusty.deb 使用 apt 包管理命令更新一下本地的软件源：# apt-get update 通过远程仓库安装：# apt-get install puppet Puppet 代理默认是不启动的。这里我们需要使用文本编辑器修改 /etc/default/puppet 文件，使它正常工作：# nano /etc/default/puppet 更改 START 的值改成 "yes" 。START=yes 最后保存并退出。9. 使用 Apt 工具锁定代理软件的版本和上面的步骤一样为防止随意升级造成的配置文件混乱，我们要使用 apt 工具来把它锁定。具体做法是使用文本编辑器创建一个文件 /etc/apt/preferences.d/00-puppet.pref：# nano /etc/apt/preferences.d/00-puppet.pref 在新建的文件里面加入如下内容# /etc/apt/preferences.d/00-puppet.pref Package: puppet puppet-common Pin: version 3.8* Pin-Priority: 501 这样 puppet 就不会随着系统软件升级而随意升级了。10. 配置 puppet 代理节点我们需要编辑一下代理节点的 puppet.conf 文件，来使它运行。# nano /etc/puppet/puppet.conf 它看起来和服务器的配置文件完全一样。同样注释掉 templatedir这行。不同的是在这里我们需要删除掉所有关于[master] 的部分。假定主控服务器可以通过名字“puppet-master”访问，我们的客户端应该可以和它相互连接通信。如果不行的话，我们需要使用完整的主机域名 puppetmaster.example.com[agent] server = puppetmaster.example.com certname = puppetnode.example.com 在文件的结尾增加上面3行，增加之后文件内容像下面这样：[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #templatedir=$confdir/templates [agent] server = puppetmaster.example.com certname = puppetnode.example.com 最后保存并退出。使用下面的命令来启动客户端软件：# systemctl start puppet 如果一切顺利的话，我们不会看到命令行有任何输出。 第一次运行的时候，代理节点会生成一个 ssl 证书并且给服务器发送一个请求，经过签名确认后，两台机器就可以互相通信了。提示： 如果这是你添加的第一个代理节点，建议你在添加其他节点前先给这个证书签名。一旦能够通过并正常运行，回过头来再添加其他代理节点。11. 在主控服务器上对证书请求进行签名第一次运行的时候，代理节点会生成一个 ssl 证书并且给服务器发送一个签名请求。在主控服务器给代理节点服务器证书签名之后，主服务器才能和代理服务器通信并且控制代理服务器。在主控服务器上使用下面的命令来列出当前的证书请求：# puppet cert list "puppetnode.example.com" (SHA256) 31:A1:7E:23:6B:CD:7B:7D:83:98:33:8B:21:01:A6:C4:01:D5:53:3D:A0:0E:77:9A:77:AE:8F:05:4A:9A:50:B2 因为只设置了一台代理节点服务器，所以我们将只看到一个请求。看起来类似如上，代理节点的完整域名即其主机名。注意有没有“+”号在前面，代表这个证书有没有被签名。使用带有主机名的 puppet cert sign这个命令来签署这个签名请求，如下：# puppet cert sign puppetnode.example.com Notice: Signed certificate request for puppetnode.example.com Notice: Removing file Puppet::SSL::CertificateRequest puppetnode.example.com at '/var/lib/puppet/ssl/ca/requests/puppetnode.example.com.pem' 主控服务器现在可以通讯和控制它签名过的代理节点了。如果想签署所有的当前请求，可以使用 -all 选项，如下所示：# puppet cert sign --all 12. 删除一个 Puppet 证书如果我们想移除一个主机，或者想重建一个主机然后再添加它。下面的例子里我们将展示如何删除 puppet 主控服务器上面的一个证书。使用的命令如下：# puppet cert clean hostname Notice: Revoked certificate with serial 5 Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/ca/signed/puppetnode.example.com.pem' Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/certs/puppetnode.example.com.pem' 如果我们想查看所有的签署和未签署的请求，使用下面这条命令：# puppet cert list --all + "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com") 13. 部署 Puppet 清单当配置并完成 puppet 清单后，现在我们需要部署清单到代理节点服务器上。要应用并加载主 puppet 清单，我们可以在代理节点服务器上面使用下面的命令：# puppet agent --test Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for puppetnode.example.com Info: Applying configuration version '1434563858' Notice: /Stage[main]/Main/Exec[apt-update]/returns: executed successfully Notice: Finished catalog run in 10.53 seconds 这里向我们展示了主清单如何立即影响到了一个单一的服务器。如果我们打算运行的 puppet 清单与主清单没有什么关联，我们可以简单使用 puppet apply 带上相应的清单文件的路径即可。它仅将清单应用到我们运行该清单的代理节点上。# puppet apply /etc/puppet/manifest/test.pp 14. 为特定节点配置清单如果我们想部署一个清单到某个特定的节点，我们需要如下配置清单。在主控服务器上面使用文本编辑器编辑 /etc/puppet/manifest/site.pp：# nano /etc/puppet/manifest/site.pp 添加下面的内容进去node 'puppetnode', 'puppetnode1' { # execute 'apt-get update' exec { 'apt-update': # exec resource named 'apt-update' command => '/usr/bin/apt-get update' # command this resource will run } # install apache2 package package { 'apache2': require => Exec['apt-update'], # require 'apt-update' before installing ensure => installed, } # ensure apache2 service is running service { 'apache2': ensure => running, } } 这里的配置显示我们将在名为 puppetnode 和 puppetnode1 的2个指定的节点上面安装 apache 服务。这里可以添加其他我们需要安装部署的具体节点进去。15. 配置清单模块模块对于组合任务是非常有用的，在 Puppet 社区有很多人贡献了自己的模块组件。在主控服务器上, 我们将使用 puppet module 命令来安装 puppetlabs-apache 模块。# puppet module install puppetlabs-apache 警告: 千万不要在一个已经部署 apache 环境的机器上面使用这个模块，否则它将清空你没有被 puppet 管理的 apache 配置。现在用文本编辑器来修改 site.pp ：# nano /etc/puppet/manifest/site.pp 添加下面的内容进去，在 puppetnode 上面安装 apache 服务。node 'puppet-node' { class { 'apache': } # use apache module apache::vhost { 'example.com': # define vhost resource port => '80', docroot => '/var/www/html' } } 保存退出。然后重新运行该清单来为我们的代理节点部署 apache 配置。总结现在我们已经成功的在 ubuntu 15.04 上面部署并运行 puppet 来管理代理节点服务器的基础运行环境。我们学习了 puppet 是如何工作的，编写清单文件，节点与主机间使用 ssl 证书认证的认证过程。使用 puppet 开源软件配置管理工具在众多的代理节点上来控制、管理和配置重复性任务是非常容易的。如果你有任何的问题，建议，反馈，与我们取得联系，我们将第一时间完善更新，谢谢。via: http://linoxide.com/linux-how-to/install-puppet-ubuntu-15-04/作者：Arun Pyasi 译者：ivo-wang 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Docker 越来越流行了。在一个容器里面而不是虚拟机里运行一个完整的操作系统是一种非常棒的技术和想法。docker 已经通过节省工作时间来拯救了成千上万的系统管理员和开发人员。这是一个开源技术，提供一个平台来把应用程序当作容器来打包、分发、共享和运行，而不用关注主机上运行的操作系统是什么。它没有开发语言、框架或打包系统的限制，并且可以在任何时间、任何地点运行，从小型计算机到高端服务器都可以。运行 docker 容器和管理它们可能会花费一点点努力和时间，所以现在有一款基于 web 的应用程序－DockerUI，可以让管理和运行容器变得很简单。DockerUI 是一个对那些不熟悉 Linux 命令行，但又很想运行容器化程序的人很有帮助的工具。DockerUI 是一个开源的基于 web 的应用程序，它最值得称道的是它华丽的设计和用来运行和管理 docker 的简洁的操作界面。下面会介绍如何在 Linux 上安装配置 DockerUI。1. 安装 docker首先，我们需要安装 docker。我们得感谢 docker 的开发者，让我们可以简单的在主流 linux 发行版上安装 docker。为了安装 docker，我们得在对应的发行版上使用下面的命令。Ubuntu/Fedora/CentOS/RHEL/Debiandocker 维护者已经写了一个非常棒的脚本，用它可以在 Ubuntu 15.04/14.10/14.04、 CentOS 6.x/7、 Fedora 22、 RHEL 7 和 Debian 8.x 这几个 linux 发行版上安装 docker。这个脚本可以识别出我们的机器上运行的 linux 的发行版本，然后将需要的源库添加到文件系统、并更新本地的安装源目录，最后安装 docker 及其依赖库。要使用这个脚本安装docker，我们需要在 root 用户或者 sudo 权限下运行如下的命令，# curl -sSL https://get.docker.com/ | sh OpenSuse/SUSE Linux 企业版要在运行了 OpenSuse 13.1/13.2 或者 SUSE Linux Enterprise Server 12 的机器上安装 docker，我们只需要简单的执行zypper 命令。运行下面的命令就可以安装最新版本的docker：# zypper in docker ArchLinuxdocker 在 ArchLinux 的官方源和社区维护的 AUR 库中可以找到。所以在 ArchLinux 上我们有两种方式来安装 docker。使用官方源安装，需要执行下面的 pacman 命令：# pacman -S docker 如果要从社区源 AUR 安装 docker，需要执行下面的命令：# yaourt -S docker-git 2. 启动安装好 docker 之后，我们需要运行 docker 守护进程，然后才能运行并管理 docker 容器。我们需要使用下列命令来确认 docker 守护进程已经安装并运行了。在 SysVinit 上# service docker start 在Systemd 上# systemctl start docker 3. 安装 DockerUI安装 DockerUI 比安装 docker 要简单很多。我们仅仅需要从 docker 注册库上拉取 dockerui ，然后在容器里面运行。要完成这些，我们只需要简单的执行下面的命令：# docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui 在上面的命令里，dockerui 使用的默认端口是9000，我们需要使用-p 命令映射默认端口。使用-v 标志我们可以指定docker 的 socket。如果主机使用了 SELinux 那么就得使用--privileged 标志。执行完上面的命令后，我们要检查 DockerUI 容器是否运行了，或者使用下面的命令检查：# docker ps 4. 拉取 docker 镜像现在我们还不能直接使用 DockerUI 拉取镜像，所以我们需要在命令行下拉取 docker 镜像。要完成这些我们需要执行下面的命令。# docker pull ubuntu 上面的命令将会从 docker 官方源 Docker Hub拉取一个标志为 ubuntu 的镜像。类似的我们可以从 Hub 拉取需要的其它镜像。4. 管理启动了 DockerUI 容器之后，我们可以用它来执行启动、暂停、终止、删除以及 DockerUI 提供的其它操作 docker 容器的命令。首先，我们需要在 web 浏览器里面打开 dockerui：在浏览器里面输入 http://ip-address:9000 或者 http://mydomain.com:9000，具体要根据你的系统配置。默认情况下登录不需要认证，但是可以配置我们的 web 服务器来要求登录认证。要启动一个容器，我们需要有包含我们要运行的程序的镜像。创建创建容器我们需要在 Images 页面里，点击我们想创建的容器的镜像 id。然后点击 Create 按钮，接下来我们就会被要求输入创建容器所需要的属性。这些都完成之后，我们需要点击按钮Create 完成最终的创建。停止要停止一个容器，我们只需要跳转到Containers 页面，然后选取要停止的容器。然后在 Action 的子菜单里面按下 Stop 就行了。暂停与恢复要暂停一个容器，只需要简单的选取目标容器，然后点击 Pause 就行了。恢复一个容器只需要在 Actions 的子菜单里面点击 Unpause 就行了。删除类似于我们上面完成的任务，杀掉或者删除一个容器或镜像也是很简单的。只需要检查、选择容器或镜像，然后点击 Kill 或者 Remove 就行了。结论DockerUI 使用了 docker 远程 API 提供了一个很棒的管理 docker 容器的 web 界面。它的开发者们完全使用 HTML 和 JS 设计、开发了这个应用。目前这个程序还处于开发中，并且还有大量的工作要完成，所以我们并不推荐将它应用在生产环境。它可以帮助用户简单的完成管理容器和镜像，而且只需要一点点工作。如果想要为 DockerUI 做贡献，可以访问它们的 Github 仓库。如果有问题、建议、反馈，请写在下面的评论框，这样我们就可以修改或者更新我们的内容。谢谢。via: http://linoxide.com/linux-how-to/setup-dockerui-web-interface-docker/作者：Arun Pyasi 译者：oska874 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
QGit是一款由Marco Costalba用Qt和C++写的开源的图形界面 Git 客户端。它是一款可以在图形界面环境下更好地提供浏览版本历史、查看提交记录和文件补丁的客户端。它利用git命令行来执行并显示输出。它有一些常规的功能像浏览版本历史、比较、文件历史、文件标注、归档树。我们可以格式化并用选中的提交应用补丁，在两个或多个实例之间拖拽并提交等等。它允许我们用它内置的生成器来创建自定义的按钮去执行特定的命令。这里有简单的几步在Ubuntu 14.04 LTS "Trusty"中编译并安装QGit客户端。1. 安装 QT4 库首先在ubuntu中运行QGit需要先安装QT4库。由于apt是ubuntu默认的包管理器，同时qt4也在官方的仓库中，因此我们直接用下面的apt-get命令来安装qt4。$ sudo apt-get install qt4-default 2. 下载QGit压缩包安装完Qt4之后，我们要安装git，这样我们才能在QGit中克隆git仓库。运行下面的apt-get命令。$ sudo apt-get install git 现在，我们要使用下面的git命令来克隆QGit客户端的仓库。$ git clone git://repo.or.cz/qgit4/redivivus.git Cloning into 'redivivus'... remote: Counting objects: 7128, done. remote: Compressing objects: 100% (2671/2671), done. remote: Total 7128 (delta 5464), reused 5711 (delta 4438) Receiving objects: 100% (7128/7128), 2.39 MiB | 470.00 KiB/s, done. Resolving deltas: 100% (5464/5464), done. Checking connectivity... done. 3. 编译 QGit克隆之后，我们现在进入redivivus的目录，并创建我们编译需要的makefile文件。进入目录，运行下面的命令。$ cd redivivus 接下来，我们运行下面的命令从qmake项目文件（qgit.pro）来生成新的Makefile。$ qmake qgit.pro 生成Makefile之后，我们现在终于可以编译qgit的源代码并生成二进制。首先我们要安装make和g++包用于编译，因为这是一个用C++写的程序。$ sudo apt-get install make g++ 现在，我们要用make命令来编译代码了。$ make 4. 安装 QGit成功编译QGit的源码之后，我们就要在Ubuntu 14.04中安装它了，这样就可以在系统中执行它。因此我们将运行下面的命令。$ sudo make install cd src/ && make -f Makefile install make[1]: Entering directory `/home/arun/redivivus/src' make -f Makefile.Release install make[2]: Entering directory `/home/arun/redivivus/src' install -m 755 -p "../bin/qgit" "/usr/lib/x86_64-linux-gnu/qt4/bin/qgit" strip "/usr/lib/x86_64-linux-gnu/qt4/bin/qgit" make[2]: Leaving directory `/home/arun/redivivus/src' make[1]: Leaving directory `/home/arun/redivivus/src' 接下来，我们需要从bin目录下复制qgit的二进制文件到/usr/bin/，这样我们就可以全局运行它了。$ sudo cp bin/qgit /usr/bin/ 5. 创建桌面文件既然我们已经在ubuntu中成功安装了qgit，我们来创建一个桌面文件，这样QGit就可以在我们桌面环境中的菜单或者启动器中找到了。要做到这点，我们要在/usr/share/applications/创建一个新文件叫qgit.desktop。$ sudo nano /usr/share/applications/qgit.desktop 接下来复制下面的行到文件中。[Desktop Entry] Name=qgit GenericName=git 图形界面 viewer Exec=qgit Icon=qgit Type=Application Comment=git 图形界面 viewer Terminal=false MimeType=inode/directory; Categories=Qt;Development;RevisionControl; 完成之后，保存并退出。6. 运行 QGit 客户端QGit安装完成之后，我们现在就可以从任何启动器或者程序菜单中启动它了。要在终端下面运行QGit，我们可以像下面那样。$ qgit 这会打开基于Qt4框架图形界面模式的QGit。总结QGit是一个很棒的基于QT的git客户端。它可以在Linux、MAC OSX和 Microsoft Windows所有这三个平台中运行。它帮助我们很容易地浏览历史、版本、分支等等git仓库提供的信息。它减少了使用命令行的方式去执行诸如浏览版本、历史、比较功能的需求，并用图形化的方式来简化了这些任务。最新的qgit版本也在默认仓库中，你可以使用 apt-get install qgit 命令来安装。因此，QGit用它简单的图形界面使得我们的工作更加简单和快速。via: http://linoxide.com/ubuntu-how-to/install-qgit-viewer-ubuntu-14-04/作者：Arun Pyasi 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在 Docker 容器中运行支持 OData 的 JBoss 数据虚拟化 GA
大家好，我们今天来学习如何在一个 Docker 容器中运行支持 OData（译者注：Open Data Protocol，开放数据协议） 的 JBoss 数据虚拟化 6.0.0 GA（译者注：GA，General Availability，具体定义可以查看WIKI）。JBoss 数据虚拟化是数据提供和集成解决方案平台，将多种分散的数据源转换为一种数据源统一对待，在正确的时间将所需数据传递给任意的应用或者用户。JBoss 数据虚拟化可以帮助我们将数据快速组合和转换为可重用的商业友好的数据模型，通过开放标准接口简单可用。它提供全面的数据抽取、联合、集成、转换，以及传输功能，将来自一个或多个源的数据组合为可重复使用和共享的灵活数据。要了解更多关于 JBoss 数据虚拟化的信息，可以查看它的官方文档。Docker 是一个提供开放平台用于打包，装载和以轻量级容器运行任何应用的开源平台。使用 Docker 容器我们可以轻松处理和启用支持 OData 的 JBoss 数据虚拟化。下面是该指南中在 Docker 容器中运行支持 OData 的 JBoss 数据虚拟化的简单步骤。1. 克隆仓库首先，我们要用 git 命令从 https://github.com/jbossdemocentral/dv-odata-docker-integration-demo 克隆带数据虚拟化的 OData 仓库。假设我们的机器上运行着 Ubuntu 15.04 linux 发行版。我们要使用 apt-get 命令安装 git。# apt-get install git 安装完 git 之后，我们运行下面的命令克隆仓库。# git clone https://github.com/jbossdemocentral/dv-odata-docker-integration-demo Cloning into 'dv-odata-docker-integration-demo'... remote: Counting objects: 96, done. remote: Total 96 (delta 0), reused 0 (delta 0), pack-reused 96 Unpacking objects: 100% (96/96), done. Checking connectivity... done. 2. 下载 JBoss 数据虚拟化安装器现在，我们需要从下载页 http://www.jboss.org/products/datavirt/download/ 下载 JBoss 数据虚拟化安装器。下载了 jboss-dv-installer-6.0.0.GA-redhat-4.jar 后，我们把它保存在名为 software 的目录下。3. 创建 Docker 镜像下一步，下载了 JBoss 数据虚拟化安装器之后，我们打算使用 Dockerfile 和刚从仓库中克隆的资源创建 docker 镜像。# cd dv-odata-docker-integration-demo/ # docker build -t jbossdv600 . ... Step 22 : USER jboss ---> Running in 129f701febd0 ---> 342941381e37 Removing intermediate container 129f701febd0 Step 23 : EXPOSE 8080 9990 31000 ---> Running in 61e6d2c26081 ---> 351159bb6280 Removing intermediate container 61e6d2c26081 Step 24 : CMD $JBOSS_HOME/bin/standalone.sh -c standalone.xml -b 0.0.0.0 -bmanagement 0.0.0.0 ---> Running in a9fed69b3000 ---> 407053dc470e Removing intermediate container a9fed69b3000 Successfully built 407053dc470e 注意：在这里我们假设你已经安装了 docker 并正在运行。4. 启动 Docker 容器创建了支持 oData 的 JBoss 数据虚拟化 Docker 镜像之后，我们打算运行 docker 容器并用 -P 标签指定端口。我们运行下面的命令来实现。# docker run -p 8080:8080 -d -t jbossdv600 7765dee9cd59c49ca26850e88f97c21f46859d2dc1d74166353d898773214c9c 5. 获取容器 IP启动了 Docker 容器之后，我们想要获取正在运行的 docker 容器的 IP 地址。要做到这点，我们运行后面添加了正在运行容器 id 号的 docker inspect 命令。# docker inspect <$containerID> ... "NetworkSettings": { "Bridge": "", "EndpointID": "3e94c5900ac5954354a89591a8740ce2c653efde9232876bc94878e891564b39", "Gateway": "172.17.42.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "HairpinMode": false, "IPAddress": "172.17.0.8", "IPPrefixLen": 16, "IPv6Gateway": "", "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, 6. Web 界面现在，如果一切如期望的那样进行，当我们用浏览器打开 http://container-ip:8080/ 和 http://container-ip:9990 时会看到支持 oData 的 JBoss 数据虚拟化登录界面和 JBoss 管理界面。管理验证的用户名和密码分别是 admin 和 redhat1！数据虚拟化验证的用户名和密码都是 user。之后，我们可以通过 web 界面在内容间导航。注意： 强烈建议在第一次登录后尽快修改密码。总结终于我们成功地运行了跑着支持 OData 多源虚拟数据库的 JBoss 数据虚拟化 的 Docker 容器。JBoss 数据虚拟化真的是一个很棒的平台，它为多种不同来源的数据进行虚拟化，并将它们转换为商业友好的数据模型，产生通过开放标准接口简单可用的数据。使用 Docker 技术可以简单、安全、快速地部署支持 OData 多源虚拟数据库的 JBoss 数据虚拟化。如果你有任何疑问、建议或者反馈，请在下面的评论框中写下来，以便我们可以改进和更新内容。非常感谢！Enjoy:-)via: http://linoxide.com/linux-how-to/run-jboss-data-virtualization-ga-odata-docker-container/作者：Arun Pyasi 译者：ictlyh 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出