分类 技术 下的文章

导言

定时任务 cron job 被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。cron 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/目录。它同样也会检查 /var/spool/cron/ 目录。

crontab 命令

crontab 是用来安装、卸载或者列出定时任务列表的命令。cron 配置文件则用于驱动 Vixie Croncron(8) 守护进程。每个用户都可以拥有自己的 crontab 文件,虽然这些文件都位于 /var/spool/cron/crontabs 目录中,但并不意味着你可以直接编辑它们。你需要通过 crontab 命令来编辑或者配置你自己的定时任务。

定时配置文件的类型

配置文件分为以下不同的类型:

  • UNIX 或 Linux 的系统级 crontab : 此类型通常由那些需要 root 或类似权限的系统服务和重要任务使用。第六个字段(见下方的字段介绍)为用户名,用来指定此命令以哪个用户身份来执行。如此一来,系统的 crontab 就能够以任意用户的身份来执行操作。
  • 用户的 crontab: 用户可以使用 crontab 命令来安装属于他们自己的定时任务。 第六个字段为需要运行的命令, 所有的命令都会以创建该 crontab 任务的用户的身份运行。

注意: 这种问答形式的 Cron 实现由 Paul Vixie 编写而成,并且被包含在许多 Linux 发行版本和类 Unix 系统(如广受欢迎的第四版 BSD)中。它的语法被各种 crond 的实现所兼容

那么我该如何安装、创建或者编辑我自己的定时任务呢?

要编辑你的 crontab 文件,需要在 Linux 或 Unix 的 shell 提示符后键入以下命令:

$ crontab -e

crontab 语法(字段介绍)

语法为:

1 2 3 4 5 /path/to/command arg1 arg2

或者

1 2 3 4 5 /root/ntp_sync.sh

其中:

  • 第1个字段:分钟 (0-59)
  • 第2个字段:小时 (0-23)
  • 第3个字段:日期 (1-31)
  • 第4个字段:月份 (1-12 [12 代表 December])
  • 第5个字段:一周当中的某天 (0-7 [7 或 0 代表星期天])
  • /path/to/command - 计划执行的脚本或命令的名称

便于记忆的格式:

* * * * * 要执行的命令
----------------
| | | | |
| | | | ---- 周当中的某天 (0 - 7) (周日为 0 或 7)
| | | ------ 月份 (1 - 12)
| | -------- 一月当中的某天 (1 - 31)
| ---------- 小时 (0 - 23)
------------ 分钟 (0 - 59)

简单的 crontab 示例:

### 每隔 5 分钟运行一次 backupscript 脚本 ##
*/5 * * * * /root/backupscript.sh

### 每天的凌晨 1 点运行 backupscript 脚本 ##
0 1 * * * /root/backupscript.sh

### 每月的第一个凌晨 3:15 运行 backupscript 脚本 ##
15 3 1 * * /root/backupscript.sh

如何使用操作符

操作符允许你为一个字段指定多个值,这里有三个操作符可供使用:

  • 星号 (*) : 此操作符为字段指定所有可用的值。举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。
  • 逗号 (,) : 这个操作符指定了一个包含多个值的列表,例如:1,5,10,15,20,25.
  • 横杠 (-) : 此操作符指定了一个值的范围,例如:5-15 ,等同于使用逗号操作符键入的 5,6,7,8,9,...,13,14,15
  • 分隔符 (/) : 此操作符指定了一个步进值,例如: 0-23/ 可以用于小时字段来指定某个命令每小时被执行一次。步进值也可以跟在星号操作符后边,如果你希望命令行每 2 小时执行一次,则可以使用 */2

如何禁用邮件输出

默认情况下,某个命令或者脚本的输出内容(如果有的话)会发送到你的本地邮箱账户中。若想停止接收 crontab 发送的邮件,需要添加 >/dev/null 2>&1 这段内容到执行的命令的后面,例如:

0 3 * * * /root/backup.sh >/dev/null 2>&1

如果想将输出内容发送到特定的邮件账户中,比如说 [email protected] 这个邮箱, 则你需要像下面这样定义一个 MAILTO 变量:

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

访问 “禁用 Crontab 命令的邮件提示” 查看更多信息。

任务:列出你所有的定时任务

键入以下命令:

# crontab -l
# crontab -u username -l

要删除所有的定时任务,可以使用如下命令:

### 删除当前定时任务
crontab -r
### 删除某用户名下的定时任务,此命令需以 root 用户身份执行
crontab -r -u username

使用特殊字符串来节省时间

你可以使用以下 8 个特殊字符串中的其中一个替代头五个字段,这样不但可以节省你的时间,还可以提高可读性。

特殊字符含义
@reboot在每次启动时运行一次
@yearly每年运行一次,等同于 “0 0 1 1 *”.
@annually(同 @yearly)
@monthly每月运行一次, 等同于 “0 0 1 * *”.
@weekly每周运行一次, 等同于 “0 0 * * 0”.
@daily每天运行一次, 等同于 “0 0 * * *”.
@midnight(同 @daily)
@hourly每小时运行一次, 等同于 “0 * * * *”.

示例:

每小时运行一次 ntpdate 命令

@hourly /path/to/ntpdate

关于 /etc/crontab 文件和 /etc/cron.d/* 目录的更多内容

/etc/crontab 是系统的 crontab 文件。通常只被 root 用户或守护进程用于配置系统级别的任务。每个单独的用户必须像上面介绍的那样使用 crontab 命令来安装和编辑自己的任务。/var/spool/cron/ 或者 /var/cron/tabs/ 目录存放了个人用户的 crontab 文件,它应该备份在用户的家目录当中。

理解默认的 /etc/crontab 文件

典型的 /etc/crontab 文件内容是这样的:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

首先,环境变量必须被定义。如果 SHELL 行被忽略,cron 会使用默认的 sh shell。如果 PATH 变量被忽略,就没有默认的搜索路径,所有的文件都需要使用绝对路径来定位。如果 HOME 变量被忽略,cron 会使用调用者(用户)的家目录替代。

另外,cron 会读取 /etc/cron.d/目录中的文件。通常情况下,像 sa-update 或者 sysstat 这样的系统守护进程会将他们的定时任务存放在此处。作为 root 用户或者超级用户,你可以使用以下目录来配置你的定时任务。你可以直接将脚本放到这里。run-parts命令会通过 /etc/crontab 文件来运行位于某个目录中的脚本或者程序。

目录描述
/etc/cron.d/将所有的脚本文件放在此处,并从 /etc/crontab 文件中调用它们。
/etc/cron.daily/运行需要 每天 运行一次的脚本
/etc/cron.hourly/运行需要 每小时 运行一次的脚本
/etc/cron.monthly/运行需要 每月 运行一次的脚本
/etc/cron.weekly/运行需要 每周 运行一次的脚本

备份定时任务

# crontab -l > /path/to/file

# crontab -u user -l > /path/to/file

via: https://www.unixmen.com/add-cron-jobs-linux-unix/

作者:Duy NguyenViet 译者:mr-ping 校对:FSSlc

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

2014 年的时候,Fedora.next 促进会开始制定一个 Fedora Linux 未来十年的发展计划。这个计划,从本质上将 Fedora 与那些将各种不同的开源产品堆积在一个公共的软件仓库中的发行版区分开来了(看看 Debian 你就知道了)。

说的更清楚些,Fedora 根据不同的用途,分成了 工作站版 Workstation 服务器版 Server 和针对各个 云服务商的分发版 Cloud distributions 。对于工作站版,其主要的关注点是让它面对最终用户而言更加直观易用,无论他是老鸟还是菜鸟;给用户提供一个经过精心打磨的桌面系统,比如消除运行在 GNOME 环境下的 Qt 程序的违和感等等。

这不是一个突然的转身,也不是一蹴而就的变化,这种调整是逐步演进的,在新版本发布时它一定是稳定的,而不是堆在那里就可以发步了(LCTT 译注:这也是导致 Fedora 拖延症传统的原因)。原计划在 Fedora 24 中会选择 Wayland 作为默认的显示服务器,即在 GNOME 桌面、驱动程序和全部应用中支持 Wayland,而且事实上在过去六个月当中也取得了极大进展,但是最终 Fedora 24 仍旧默认采用了 X.org ,而留给 Wayland 更多时间进行精雕细琢。

1. 视觉改进

系统默认字体 Cantarell 是一个主要的变化,对于使用过之前版本的 Fedora 用户来说,这是第一眼就能看到的变化了。这包括重新打造的字体渲染引擎,特别是字体微调数据会影响到字体在不同的大小和 DPI 时如何显示。在本次更新前,Cantarell 的字体微调数据在音调符号之间有些不一致,此外还改进了 Cyrillic 字符的支持。从之前版本升级的用户,如果手工修改过字体渲染设置或使用过 GNOME 调整工具调整的,需要将那些设置重置回默认设置,以便可以使字体设置正确升级。

你可以使用 GNOME 调整工具恢复默认设置,或使用如下命令:

gsettings reset org.gnome.desktop.interface font-name
gsettings reset org.gnome.settings-daemon.plugins.xsettings antialiasing
gsettings reset org.gnome.settings-daemon.plugins.xsettings hinting
gsettings reset org.gnome.settings-daemon.plugins.xsettings rgba-order

在 Fedora 24 的软件库中新增了一个 QGnomePlatform 软件包,它可以将 GNOME/GTK 显示设置转换到 Qt 5 应用上。对于高清分辨率的显示器来说——它越来越多地出现在笔记本电脑上了——这是一个可喜的变化,它显著地改善了 Qt 5 程序的显示效果,可用性会更好。

在 Nautilus 文件管理器中的搜索功能现在也更加地健壮,现在可以在搜索中按文件使用或修改时间进行过滤,也可以限制只搜索一类或几类文件,比如只搜索“文档”。

2. 支持 openh264

Fedora 24 现在正式地支持了 openh264 ,它属于思科专利授权的一部分,现在可以免费使用这个专有的编解码器了。不过,还有一点限制,这个编解码器需要去思科下载。想要播放这种视频的用户会得到一个下载该编解码器的提示,而 GNOME 之外的用户必须手动启用该功能才行。

此外,这个插件目前仅支持基本性能编码,而许多视频采用了高性能编码方式进行编码,预期还会不断增加更多的性能编码支持

3. 图形化升级

之前版本的 Fedora 需要使用命令行来进行重大版本升级,比如从 22 升级到 23 时就是这样的。从现在开始(这个功能也会移植回 Fedora 23),用户可以使用“软件”应用来进行重大版本升级

升级系统有一个明确标为“安装”的按钮,只有在直接得到用户指令的情况下才进行升级,而不会像 Windows 10 那样,令用户吃惊地通过那种不透明的、频繁更新的方式进行更新

4. 引擎盖之下的改进

可以用汽车来类比,很多内部的细节只有那种专门去找寻它们的人才会注意到(这么干的一般都是程序员)。这其中包括 glibc 2.23,它带来了 Unicode 8.0 支持,以及一些安全修复。C 编译器也升级到了 GCC 6;类似的,Mono 升级到了 4.2 ,改进了 .NET 支持;Ruby 升级到了 2.3Python 升级到了 3.5Node.js 升级到了 5.10Ping 现在支持 IPv6 地址了,也就是我们不再需要一个 IPv6 特定的版本了。

我应该使用它吗?

如果你已经在使用 Linux 桌面了,那么答案是肯定的。GNOME 3 从其首次发布以来已经经过很长时间的打磨,可以很轻松地像一个“传统的”桌面一样定制,虽然在一些细节上有所不同。Fedora 也有各种已经预先配置好的其它桌面环境,比如 KDE、MATE、LXDE、Xfce 和来自 Linux Mint 的 Cinnamon。

如果你是刚刚从 Windows 转移过来,那么还需要一点点适应过程。如上所述,“软件”应用里面还不包括专属软件,所以一些常见的专属软件,比如 Google Chrome 和 TeamViewer 在“软件”里面还找不到。当然,解决办法很容易,Fedy 提供了一键安装这些常见专属软件的途径,以及各种常用的优化功能。

现在,你可以去 getfedora.com 下载 Fedora 24 了!

安全就是一切。我们生活的当今世界,数据具有令人难以置信的价值,而你也一直处于数据丢失的风险之中。因此,你必须想尽办法保证你桌面系统和服务器中数据的安全。结果,管理员和用户就会创建极其复杂的密码、使用密码管理器甚至其它更复杂的东西。但是,如果我告诉你你可以只需要一步,至多两步就能登录到你的 Linux 服务器或桌面系统中呢?多亏了 Google 身份验证器,现在你可以做到了。并且,配置也极其简单。

我会给你简要介绍为登录和 sudo 设置双因子认证的步骤。我基于 Ubuntu 16.04 桌面系统进行介绍,但这些步骤也适用于其它服务器。为了实现双因子认证,我会使用 Google 身份验证器。

这里有个非常重要的警告:一旦你设置了认证,没有一个从认证器中获得的由 6 个数字组成的验证码你就不可能登录账户(或者执行 sudo 命令)。这也给你增加了一步额外的操作,因此如果你不想每次登录到 Linux 服务器(或者使用 sudo)的时候都要拿出你的智能手机,这个方案就不适合你。但你也要记住,这额外的一个步骤也给你带来一层其它方法无法给予的保护。

话不多说,开始吧。

安装必要的组件

安装 Google 身份验证器 Google Authenticator ,首先要解决两个问题。一是安装智能机应用。下面是如何从 Google 应用商店安装的方法:

  1. 在你的安卓设备中打开 Google 应用商店
  2. 搜索 google 身份验证器 Google Authenticator
  3. 找到并点击有 Google Inc. 标识的应用
  4. 点击安装
  5. 点击“接受”
  6. 等待安装完成

接下来,我们继续在你的 Linux 机器上安装这个认证器。步骤如下:

  1. 打开一个终端窗口
  2. 输入命令 sudo apt-get install google-authenticator
  3. 输入你的 sudo 密码并敲击回车
  4. 如果有弹窗提示,输入 y 并敲击回车
  5. 等待安装完成

接下来配置使用 google-authenticator 进行登录。

配置

要为登录和 sudo 添加双因子认证只需要编辑一个文件,即 /etc/pam.d/common-auth。打开并找到如下一行:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

在这行上面添加:

auth required pam_google_authenticator.so

保存并关闭文件。

下一步就是为系统中的每个用户设置 google-authenticator(否则他们就不能登录了)。为了简单起见,我们假设你的系统中有两个用户:jack 和 olivia。首先为 jack 设置(我们假设这是我们一直使用的账户)。

打开一个终端窗口并输入命令 google-authenticator。之后会问你一系列的问题(每个问题你都应该用 y 回答)。问题包括:

  • 是否允许更新你的 "/home/jlwallen/.google\_authenticator" 文件 (y/n) y
  • 是否禁止多个用户使用同一个认证令牌?这会限制你每 30 秒内只能登录一次,但能增加你注意到甚至防止中间人攻击的可能 (y/n)
  • 默认情况下令牌时长为 30 秒即可,为了补偿客户端和服务器之间可能出现的时间偏差,我们允许使用当前时间之前或之后的其它令牌。如果你无法进行时间同步,你可以把这个时间窗口由默认的 1:30 分钟增加到 4 分钟。是否希望如此 (y/n)
  • 如果你尝试登录的计算机没有针对暴力破解进行加固,你可以为验证模块启用速率限制。默认情况下,限制攻击者每 30 秒不能尝试登陆超过 3 次。是否启用速率限制 (y/n)

一旦完成了问题回答,你就会看到你的密钥、验证码以及 5 个 紧急刮码 emergency scratch code 。把这些刮码打印出来并保存。你可以在无法使用手机的时候使用它们(每个刮码仅限使用一次)。密钥用于你在 Google 身份验证器上设置账户,验证码是你能当下就能够立即使用(如果需要)的一次性验证码。

设置应用

现在你已经配置好了用户 jack。在设置用户 olivia 之前,你需要在 Google 身份验证器应用上为 jack 添加账户(LCTT 译注:实际操作情形中,是为 jack 的手机上安装的该应用创建一个账户)。在打开应用,点击“菜单”按钮(右上角三个竖排点)。点击“添加账户”然后点击“输入提供的密钥”。在下一个窗口(图1),你需要输入你运行 google-authenticator 应用时提供的 16 个数字的密钥。给账户取个名字(以便你记住这用于哪个账户),然后点击“添加”。

图1: 在 Google Authenticator 应用上新建账户

(LCTT 译注:Google 身份验证器也可以扫描你在服务器上设置时显示的二维码,而不用手工输入密钥)

添加完账户之后,你就会看到一个 6 个数字的密码,你每次登录或者使用 sudo 的时候都会需要这个密码。

最后,在系统上设置其它账户。正如之前提到的,我们会设置一个叫 olivia 的账户。步骤如下:

  1. 打开一个终端窗口
  2. 输入命令 sudo su olivia
  3. 在智能机上打开 Google 身份验证器
  4. 在终端窗口(图2)中输入(应用提供的) 6 位数字验证码并敲击回车
  5. 输入你的 sudo 密码并敲击回车
  6. 以新用户输入命令 google-authenticator,回答问题并记录生成的密钥和验证码。

成功为 olivia 用户设置好之后,用 google-authenticator 命令,在 Google 身份验证器应用上根据用户信息(和之前为第一个用户添加账户相同)添加一个新的账户。现在你在 Google 身份验证器应用上就会有 jack 和 olivia 两个账户了。(LCTT 译注:在实际操作情形中,通常是为 jack 和 olivia 两个人的手机分别设置。)

图2: 为 sudo 输入 6位数字验证码

好了,就是这些。每次你尝试登录系统(或者使用 sudo) 的时候,在你输入用户密码之前,都会要求你输入提供的 6 位数字验证码。现在你的 Linux 机器就比添加双因子认证之前安全多了。虽然有些人会认为这非常麻烦,我仍然推荐使用,尤其是那些保存了敏感数据的机器。


via: https://www.linux.com/learn/how-set-2-factor-authentication-login-and-sudo

作者:JACK WALLEN 译者:ictlyh 校对:wxy

算法复杂度这件事

这篇文章覆盖了计算机科学里面常见算法的时间和空间的 大 O Big-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢!

--- Eric

图例

绝佳不错一般不佳糟糕

数据结构操作

数据结构时间复杂度空间复杂度
平均最差最差
访问搜索插入删除访问搜索插入删除
ArrayO(1)O(n)O(n)O(n)O(1)O(n)O(n)O(n)O(n)
Stack)O(n)O(n)O(1)O(1)O(n)O(n)O(1)O(1)O(n)
Singly-Linked ListO(n)O(n)O(1)O(1)O(n)O(n)O(1)O(1)O(n)
Doubly-Linked ListO(n)O(n)O(1)O(1)O(n)O(n)O(1)O(1)O(n)
Skip ListO(log(n))O(log(n))O(log(n))O(log(n))O(n)O(n)O(n)O(n)O(n log(n))
Hash Table-O(1)O(1)O(1)-O(n)O(n)O(n)O(n)
Binary Search TreeO(log(n))O(log(n))O(log(n))O(log(n))O(n)O(n)O(n)O(n)O(n)
Cartesian Tree-O(log(n))O(log(n))O(log(n))-O(n)O(n)O(n)O(n)
B-TreeO(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
Red-Black TreeO(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
Splay Tree-O(log(n))O(log(n))O(log(n))-O(log(n))O(log(n))O(log(n))O(n)
AVL TreeO(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)

数组排序算法

算法时间复杂度空间复杂度
最佳平均最差最差
QuicksortO(n log(n))O(n log(n))O(n^2)O(log(n))
MergesortO(n log(n))O(n log(n))O(n log(n))O(n)
TimsortO(n)O(n log(n))O(n log(n))O(n)
HeapsortO(n log(n))O(n log(n))O(n log(n))O(1)
Bubble SortO(n)O(n^2)O(n^2)O(1)
Insertion SortO(n)O(n^2)O(n^2)O(1)
Selection SortO(n^2)O(n^2)O(n^2)O(1)
Shell SortO(n)O((nlog(n))^2)O((nlog(n))^2)O(1)
Bucket SortO(n+k)O(n+k)O(n^2)O(n)
Radix SortO(nk)O(nk)O(nk)O(n+k)

图操作

节点 / 边界管理存储增加顶点增加边界移除顶点移除边界查询
Adjacency listO(V+E)O(1)O(1)O(V+E)O(E)O(V)
Incidence listO(V+E)O(1)O(1)O(E)O(E)O(E)
Adjacency matrixO(V^2)O(V^2)O(1)O(V^2)O(1)O(1)
Incidence matrixO(VE)O(VE)O(VE)O(VE)O(VE)O(E)

堆操作

类型时间复杂度
Heapify查找最大值分离最大值提升键插入删除合并
Linked List (sorted)-O(1)O(1)O(n)O(n)O(1)O(m+n)
Linked List (unsorted)-O(n)O(n)O(1)O(1)O(1)O(1)
Binary HeapO(n)O(1)O(log(n))O(log(n))O(log(n))O(log(n))O(m+n)
Binomial Heap-O(1)O(log(n))O(log(n))O(1)O(log(n))O(log(n))
Fibonacci Heap-O(1)O(log(n))O(1)O(1)O(log(n))O(1)

大 O 复杂度图表

 title=

推荐阅读

贡献者

  1. Eric Rowell, creator of Concrete.js, an HTML5 Canvas Framework
  2. Quentin Pleple
  3. Michael Abed
  4. Nick Dizazzo
  5. Adam Forsyth
  6. David Dorfman
  7. Jay Engineer
  8. Jennifer Hamon
  9. Josh Davis
  10. Nodir Turakulov
  11. Bart Massey
  12. Vinnie Magro
  13. Miguel Amigot
  14. Drew Bailey
  15. Aneel Nazareth
  16. Rahul Chowdhury
  17. Robert Burke
  18. steven41292
  19. Brandon Amos
  20. Mike Davis
  21. Casper Van Gheluwe
  22. Joel Friedly
  23. Oleg
  24. Renfred Harper
  25. Piper Chester
  26. Eric Lefevre-Ardant
  27. Jonathan McElroy
  28. Si Pham
  29. mcverry
  30. Max Hoffmann
  31. Alejandro Ramirez
  32. Damon Davison
  33. Alvin Wan
  34. Alan Briolat
  35. Drew Hannay
  36. Andrew Rasmussen
  37. Dennis Tsang
  38. Bahador Saket

虽然离 Fedora 24 还有几周,你现在可以就测试Fedora 24 Beta了。这是一个窥探新特性的好机会,并且可以帮助他们找出仍需要修复的 bug。

Fedora Cloud 镜像可以从你常用的本地镜像或者 Fedora 的服务器中下载。本篇文章我将向你展示如何将这个镜像导入 OpenStack 环境并且测试 Fedora 24 Beta。

最后说一下:这还是 beta 软件。目前对我来说是可靠的,但是你的体验可能会不同。我建议你等到正式版发布再在上面部署关键的应用。

导入镜像

旧版(版本1)的 glance 客户端允许你在 OpenStack 环境中导入一个可通过 URL 访问的镜像。由于我 OpenStack 云的连接速度(1 Gbps)比我家 (大约 20 mbps 上传速度)快,这个功能对我很有用。然而,从 URL 导入的功能[在 glance v2 中被移除了]。OpenStackClient 也不支持这个功能。

现在由两个选择:

  • 安装旧版的 glance 客户端
  • 使用 Horizon (网页面板)

获取旧版本的 glance 是有挑战性的。OpenStack liberty 版本的需求文件对 glance 客户端没有最高版本上限,并且很难找到让旧版客户端工作的依赖文件。

让我们使用 Horizon,这就是写这篇文章的原因。

在 Horizon 中添加一个镜像

登录 Horizon 面板,点击 Compute->Image。点击页面右上方的“+ Create Image”,一个新的窗口会显示出来。并且窗口中有这些信息:

完成后,你会看到这个:

点击“ 创建镜像 Creat Image ”,接着镜像列表会显示一段时间的 正在保存 Saving 信息。一旦切换到 活动 Active ,你就可以构建一个实例了。

构建实例

既然我们在使用 Horizon,我们可以在此完成构建过程。

在镜像列表页面,找出我们上传的镜像并且点击右边的 启动实例 Launch Instance 。一个新的窗口会显示出来。镜像名(Image Name)下拉框中应该已经选择了 Fedora 24 Beta 的镜像。在这里,选择一个实例名,选择一个安全组和密钥对(在 Access & Security 标签中)和网络(在 Networking 标签)。确保选择有足够容量的存储(m1.tiny 不太够)。

点击 启动 Launch 并且等待实例启动。

一旦实例构建完成,你能以用户 fedora 通过 ssh 连接到实例。如果你的安全组允许连接并且你的密钥对正确配置了,你应该进入到 Fedora 24 Beta 中了!

还不确定接下来做什么?有下面几点建议:

  • 升级所有的包并且重启(确保你测试的是最新的更新)
  • 安装一些熟悉的应用并且验证它们可以正常工作
  • 测试你已有的自动化或者配置管理工具
  • 打开 bug 报告

via: https://major.io/2016/05/24/test-fedora-24-beta-openstack-cloud/

作者:major.io 译者:geekpi 校对:wxy

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

LAMP 方案是一系列自由和开源软件的集合,包含了 Linux、Web 服务器 (Apache)、 数据库服务器 (MySQL / MariaDB) 和 PHP (脚本语言)。LAMP 是那些需要安装和构建动态网页应用的基础平台,比如WordPress、Joomla、OpenCart 和 Drupal。

在这篇文章中,我将描述如何在 Ubuntu Server 16.04 LTS 上安装 LAMP,众所周知 Ubuntu 是一个基于 Linux 的操作系统,因此它构成了 LAMP 的第一个部分,在接下来的操作中,我将默认你已经安装了 Ubuntu Server 16.04。

Apache2 web 服务器的安装 :

在 Ubuntu linux 中,web 服务器是 Apache2,我们可以利用下面的命令来安装它:

linuxtechi@ubuntu:~$ sudo apt update
linuxtechi@ubuntu:~$ sudo apt install apache2 -y

当安装 Apache2 包之后,Apache2 相关的服务是启用的,并在重启后自动运行。在某些情况下,如果你的 Apache2 服务并没有自动运行和启用,你可以利用如下命令来启动和启用它。

linuxtechi@ubuntu:~$ sudo systemctl start apache2.service
linuxtechi@ubuntu:~$ sudo systemctl enable apache2.service
linuxtechi@ubuntu:~$ sudo systemctl status apache2.service

如果你开启了 Ubuntu 的防火墙(ufw),那么你可以使用如下的命令来解除 web 服务器的端口(80和443)限制

linuxtechi@ubuntu:~$ sudo ufw status
Status: active
linuxtechi@ubuntu:~$ sudo ufw allow in 'Apache Full'
Rule added
Rule added (v6)
linuxtechi@ubuntu:~$

现在开始访问你的 web 服务器 :

打开浏览器并输入服务器的IP地址或者主机名(http://IP\_Address\_OR\_Host\_Name),在我的例子中我的服务器 IP是‘192.168.1.13’

数据库服务器的安装 (MySQL Server 5.7) :

MySQL 和 MariaDB 都是 Ubuntu 16.04 中的数据库服务器。 MySQL Server 和 MariaDB Server的安装包都可以在Ubuntu 的默认软件源中找到,我们可以选择其中的一个来安装。通过下面的命令来在终端中安装mysql服务器。

linuxtechi@ubuntu:~$ sudo apt install mysql-server mysql-client

在安装过程中,它会要求你设置 mysql 服务器 root 帐户的密码。

确认 root 帐户的密码,并点击确定。

MySQL 服务器的安装到此已经结束了, MySQL 服务会自动启动并启用。我们可以通过如下的命令来校验 MySQL 服务的状态。

linuxtechi@ubuntu:~$ sudo systemctl status mysql.service

MariaDB Server的安装 :

在终端中使用如下的命令来安装 Mariadb 10.0 服务器。

linuxtechi@ubuntu:~$ sudo apt install mariadb-server

运行如下的命令来设置 MariaDB root 帐户的密码,还可以用来关闭某些选项,比如关闭远程登录功能。

linuxtechi@ubuntu:~$ sudo mysql_secure_installation

PHP 脚本语言的安装:

PHP 7 已经存在于 Ubuntu 的软件源中了,在终端中执行如下的命令来安装 PHP 7:

linuxtechi@ubuntu:~$ sudo apt install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0

创建一个简单的 php 页面,并且将它移动到 apache 的文档根目录下 (/var/www/html)

linuxtechi@ubuntu:~$ vi samplepage.php
<?php
phpinfo();
?>

在 vi 中编辑之后,保存并退出该文件。

linuxtechi@ubuntu:~$ sudo mv samplepage.php /var/www/html/

现在你可以从 web 浏览器中访问这个页面, 输入 : “http:///samplepage.php” ,你可以看到如下页面。

以上的页面向我们展示了 PHP 已经完全安装成功了。

phpMyAdmin 的安装:

phpMyAdmin 可以让我们通过它的 web 界面来执行所有与数据库管理和其他数据库操作相关的任务,这个安装包已经存在于 Ubuntu 的软件源中。

利用如下的命令来在 Ubuntu server 16.04 LTS 中安装 phpMyAdmin。

linuxtechi@ubuntu:~$ sudo apt install php-mbstring php7.0-mbstring php-gettext
linuxtechi@ubuntu:~$ sudo systemctl restart apache2.service
linuxtechi@ubuntu:~$ sudo apt install phpmyadmin

在以下的安装过程中,它会提示我们选择 phpMyAdmin 运行的目标服务器。

选择 Apache2 并点击确定。

点击确定来配置 phpMyAdmin 管理的数据库。

指定 phpMyAdmin 向数据库服务器注册时所用的密码。

确认 phpMyAdmin 所需的密码,并点击确认。

现在可以开始尝试访问 phpMyAdmin,打开浏览器并输入 : “http://Server\_IP\_OR\_Host\_Name/phpmyadmin”

使用我们安装时设置的 root 帐户和密码。

当我们点击“Go”的时候,将会重定向到如下所示的 ‘phpMyAdmin’ web界面。

到现在,LAMP 方案已经被成功安装并可以使用了,欢迎分享你的反馈和评论。


via: http://www.linuxtechi.com/lamp-stack-installation-on-ubuntu-server-16-04/

作者:Pradeep Kumar 译者:陆建波 校对:Caroline

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