分类 技术 下的文章

Go (也叫 "golang")是一款由Google最初开发的编程语言。它自诞生就有几个设计原则:简单性、安全性和速度。Go语言发行版拥有各种调试、测试、调优和代码审查工具。如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装。

在Ubuntu、Debian 或者 Linux Mint上安装Go语言

下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具。

$ sudo apt-get install golang

检查Go语言的版本来验证安装。

$ go version

go version go1.2.1 linux/amd64

根据你的需要,你或许想要使用apt-get安装额外的Go工具。

$ sudo apt-cache search golang

在Fedora、CentOS/RHEL中安装Go语言

下面的命令会在基于Red Hat的发行版中安装Go语言和它的工具。

$ sudo yum install golang

检查Go语言的版本来验证安装。

$ go version 

go version go1.3.3 linux/amd64

根据你的需要,你或许想要使用yum安装额外的Go工具。

$ yum search golang 

从官网安装Go语言

有时发行版中的go语言版本并不是最新的。为了避免这种情况,你可以从官网安装最新的Go语言。下面是步骤。

进入Go语言的官方源码,并下载预编译二进制代码。

对于64位Linux:

$ wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz

对于32位Linux:

$ wget https://storage.googleapis.com/golang/go1.4.1.linux-386.tar.gz

在/usr/local下安装程序

$ sudo tar -xzf go1.4.1.linux-xxx.tar.gz -C /usr/local

在/etc/profile中添加系统范围的PATH环境变量。

$ sudo vi /etc/profile 

export PATH=$PATH:/usr/local/go/bin

如果你在/usr/local之外的自定义位置中安装了Go,你同样需要设置GOROOT环境变量来指向自定义的安装位置。

$ sudo vi /etc/profile

export GOROOT=/path/to/custom/location

检查Go语言的版本

$ go version

go version go1.4.1 linux/amd64

via: http://ask.xmodulo.com/install-go-language-linux.html

译者:geekpi 校对:Caroline

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

如果你是一个享受linux终端的系统管理员,但同样需要一种方法来安排每天最重要的任务、约会和会议,你会发现calcurse是一个很有用的工具。calcurse包含了日历、一个待办事项管理、一个调度程序和一个可配置的通知系统,这些都集成进了一个软件中,基于的都是ncurse的接口。同时,它不会限制你在终端中,你可以将你的日历和笔记导出成可以打印的格式。

本篇文章我们会探索如何在Linux上安装calcurse,并且教你如何利用它的特性。

在Linux上安装Culcurse

calcurse在大多数Linux发行版的标准仓库都有。万一在你的发行版上没有(比如CentOS/RHEL),只要你安装了gcc和ncurse开发文件后就可以很简单地从源码安装。

Debian、Ubuntu或者Linux Mint

# aptitude install calcurse

Fedora

# yum install calcurse

CentOS/RHEL

# yum install gcc ncurses-devel
# wget http://calcurse.org/files/calcurse-3.2.1.tar.gz
# tar xvfvz calcurse-3.2.1.tar.gz
# cd calcurse-3.2.1
# ./configure
# make
# make install 

启动 Calcurse

安装完成后,你就可以用下面的命令启动calcurse了:

$ calcurse 

你将会看到下面的空白界面。如果这配色不吸引你,你可以以后换一个。

我们现在可以按下回车-‘q’- 再次按下回车- ‘y’来退出主界面。这个按键序列激活界面底部的主菜单,并告诉它保存当前的笔记并确认退出。

我们第一次运行 calcurse 时,会在主目录创建如下子目录:

这里是每一个子目录的简要描述:

  • apts文件包含了用户所有的约会和事项,todo文件包含了所有的待办事项 列表。
  • conf文件,如你所想的那样,包含当前用户的独立设置。
  • keys文件包含了用户定义的按键绑定(比如:q或者Q退出,x或者X导出内容等等)。
  • notes子目录你会看到包含了笔记描述的文件,这些笔记你可以附到任何一个安排事项中。

改变配色

要改变配色,按照下面的步骤:

使用最后一幅图的按键绑定来选择前景色和背景色配置,以更好地适应你的需求:

添加约会和待办任务

在前面的选项卡中浏览命令菜单时,我们看到按下‘o’可以从一个菜单跳到下一个菜单。我们可以把第二个菜单作为安排编辑菜单

那么我们用Ctrl + A 和 Ctrl + T组合键为今天添加一个新的约会和一个新的待办任务。如果我们希望为约会指定一个具体的日期而不是今天,我们可以在添加约会和待办事项前使用Ctrl + L (+1 天)、Ctrl + H (-1 天)、Ctrl + J (+1 周)和Ctrl + K (-1 周)组合键。

添加待办任务的步骤是相似的,只是用Ctrl + T,之前已经解释了:

你还会被要求输入一个优先级,这样待办任务就会显示在主页上了:

你现在可以验证待办任务和约会已经相应地添加到了.culcurse文件夹下的todo和apts文件中了:

注意你可以使用你最喜欢的编辑器或者菜单底部的calcurse屏幕来编辑这些文件。你可以按下TAB来在不同的面板间切换,并选择你想要编辑的项目:

为事项设置通知

你可以在通知菜单下配置通知。按照相同的步骤来改变配色方案,但是选择Notify而不是Colour

假设你想要设置email通知。按下数字5来编辑notify-bar\_command的值:

按照上面的设置之后,如果这个任务被标为重要,那么root@localhost会在300秒(或者5分钟)后收到邮件通知,这会发生在下一个安排的任务之前。如果你想要即使calcurse不在运行也启用这个功能,那么将notify-daemon\_enable设成yes。在本例中,dev2是本机的主机名。

请注意出于演示目的,我已经在这篇教程中改变了原始约会的开始和/或者结束时间。

总结

本篇教程中我们展示了如何设置一个多样化的调度器和提醒器来帮助你组织每日的活动和提前安排重要的事项。你或许还要看看calcurse的PDF 手册,请随意在下面的评论中提出你的疑问。欢迎你的评论,我也很高兴看到这些。


via: http://xmodulo.com/schedule-appointments-todo-tasks-linux-terminal.html

作者:Gabriel Cánepa 译者:geekpi 校对:wxy

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

任何有经验的Linux人员都认为没有任何一款控制面板可以打败纯命令行界面来管理虚拟主机(VPS)。也有人争辩说好的控制面板还是应该有一席之地,因为顺滑的操作界面让常规管理操作通过点几下鼠标就可以完成。

至于控制面板,有那种充满浮华装饰的商业控制面板,也有各种免费的但也强大多功能的免费开源面板替代品。这之中的杰出代表是Ajenti控制面板。

Ajenti可以让你很简单地配置不同的常规服务程序,如Apache/nginx、Samba、BIND、Squid、MySQL、cron、防火墙等等,对管理常规的 VPS 实例可以节省大量的时间。对于生产环境,Ajenti同样提供了插件和平台来支持虚拟 web 主机管理和自定义 web UI开发。

Ajenti有双重授权;一个是针对个人、企业内部或者教育用途免费使用的AGPLv3。然而,如果你是一家托管企业或者硬件提供商,那么你需要购买商业授权来使用Ajenti作为商业服务。

在Linux上安装Ajenti

为了简化安装,Ajenti为主流Linux发行版提供了自己的仓库。安装Ajenti要做的就是配置目标仓库,并用默认包管理器来安装。

安装前会生成用于SSL的一个RSA密钥和证书,Ajenti会在8000端口监听HTTPS的web请求。如果你正在使用防火墙,你需要在防火墙中允许8000端口访问。为了安全,最好默认禁止8000端口的公开访问,并添加你的少数IP地址到白名单中。

在Debian上安装Ajenti

$ wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -
$ sudo sh -c 'echo "deb http://repo.ajenti.org/debian main main debian" >> /etc/apt/sources.list'
$ sudo apt-get update
$ sudo apt-get install ajenti 

在Ubuntu上安装Ajenti

$ wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -
$ sudo sh -c 'echo "deb http://repo.ajenti.org/ng/debian main main ubuntu" >> /etc/apt/sources.list'
$ sudo apt-get update
$ sudo apt-get install ajenti 

在 CentOS/RHEL或者Fedora上安装Ajenti

在CentOS/RHEL上,首先配置EPEL仓库,接着运行下面的命令。在Fedora上,直接使用下面的命令。

$ wget http://repo.ajenti.org/ajenti-repo-1.0-1.noarch.rpm
$ sudo rpm -ivh ajenti-repo-1.0-1.noarch.rpm
$ sudo yum install ajenti 

接着配置防火墙。

在Fedora或者CentOS/RHEL 7上:

$ sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
$ sudo firewall-cmd --reload 

在CentOS/RHEL 6上:

$ sudo iptables -I INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
$ sudo service iptables save 

访问Ajenti web界面

在访问Ajenti的web界面前,先确保启动了ajenti服务。

$ sudo service ajenti restart 

直接在浏览器中输入https://:8000,你就会看到下面的Ajenti的登录界面。

默认的登录凭证是用户名“root”,密码“admin”。当你登录后,你会看到初始化的Ajenti菜单。

在左边面板的"SOFTWARE"选项下,你会看带一些已安装的服务。当你安装了任何Ajenti支持的服务端程序时,软件会在重启ajenti服务后被自动加入列表。

 $ sudo service ajenti restart 

通过Ajenti web界面管理VPS

Ajenti的web界面非常直观且易使用。下面是Ajenti功能的几个例子。

可插入结构

Ajenti有许多特定应用的插件,这让AJenti可高度扩展化。当你在VPS上安装一款新软件时。相关的AJenti插件(如果有的话)会自动启用来管理软件。“Plugins”菜单会展示可用/启用的插件,以及和它们关联的软件。

包管理

Ajenti提供了一个web界面来安装和升级VPS上的包。

防火墙配置

Ajenti允许你用两种方法管理防火墙规则(使用iptables或者CSF)。一种方法是使用用户友好的web面板,另一种是直接编辑原始的防火墙规则。

日志检查

你可以在Ajenti的web界面中浏览位于/var/log下的系统日志。

进程监控

你可以看见按照CPU和内存使用率排序的进程列表,如果需要的话,也可以干掉它们。

终端访问

如果需要更低层面的VPS访问,Ajenti提供了基于web的终端界面,你在这可以输入Linux命令。你也可以像下面那样在一个面板中打开多个终端。

Apache Web服务管理

你可以编辑Apache配置文件,并管理apache2服务。

MySQL/MariaDB 管理

你可以访问MySQL/MariaDB服务并直接在上面执行原始SQL命令。

Squid 配置

你可以配置Squid代理服务器的ACL、HTTP访问规则,过滤端口。

启动服务管理

你可以浏览、启动、停止、重启已安装的服务。

总结

Ajenti是一款易于使用的服务器管理控制面板,可以加入你开发的自定义插件。然而请记住,任何好的控制面板都不是阻止你学习在控制面板之后VPS里发生了什么的原因。一款好的面板会在你完全了解你正在做的事情时成会一款真正节省时间的利器,并且不依赖于控制面版来达成你所需要的目标。


via: http://xmodulo.com/free-control-panel-for-vps.html

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

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

问题:我想要监测Linux系统的内存使用状况。有哪些可用的图形界面或者命令行工具来检查当前内存使用情况?

当涉及到Linux系统性能优化的时候,物理内存是一个最重要的因素。自然的,Linux提供了丰富的选择来监测珍贵的内存资源的使用情况。不同的工具,在监测粒度(例如:全系统范围,每个进程,每个用户),接口方式(例如:图形用户界面,命令行,ncurses)或者运行模式(交互模式,批量处理模式)上都不尽相同。

下面是一个可供选择的,但并不全面的图形或命令行工具列表,这些工具用来检查Linux平台中已用和可用的内存。

1. /proc/meminfo

一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc//statm”和“/proc//status”来获取。

$ cat /proc/meminfo

2. atop

atop命令是用于终端环境的基于ncurses的交互式的系统和进程监测工具。它展示了动态更新的系统资源摘要(CPU, 内存, 网络, 输入/输出, 内核),并且用醒目的颜色把系统高负载的部分以警告信息标注出来。它同样提供了类似于top的线程(或用户)资源使用视图,因此系统管理员可以找到哪个进程或者用户导致的系统负载。内存统计报告包括了总计/闲置内存,缓存的/缓冲的内存和已提交的虚拟内存。

$ sudo atop

3. free

free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照,用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。

$ free -h

4. GNOME System Monitor

GNOME System Monitor 是一个图形界面应用,它展示了包括CPU,内存,交换区和网络在内的系统资源使用率的较近历史信息。它同时也可以提供一个带有CPU和内存使用情况的进程视图。

$ gnome-system-monitor

5. htop

htop命令是一个基于ncurses的交互式的进程视图,它实时展示了每个进程的内存使用情况。它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。

$ htop

6. KDE System Monitor

就像GNOME桌面拥有GNOME System Monitor一样,KDE桌面也有它自己的对口应用:KDE System Monitor。这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的CPU/内存消耗情况的实时历史记录。

$ ksysguard

7. memstat

memstat工具对于识别正在消耗虚拟内存的可执行部分、进程和共享库非常有用。给出一个进程识别号,memstat即可识别出与之相关联的可执行部分、数据和共享库究竟使用了多少虚拟内存。

$ memstat -p <PID>

8. nmon

nmon工具是一个基于ncurses系统基准测试工具,它能够以交互方式监测CPU、内存、磁盘I/O、内核、文件系统以及网络资源。对于内存使用状况而言,它能够展示像总计/闲置内存、交换区、缓冲的/缓存的内存,虚拟内存页面换入换出的统计,所有这些都是实时的。

$ nmon

9. ps

ps命令能够实时展示每个进程的内存使用状况。内存使用报告里包括了 %MEM (物理内存使用百分比), VSZ (虚拟内存使用总量), 和 RSS (物理内存使用总量)。你可以使用“--sort”选项来对进程列表排序。例如,按照RSS降序排序:

$ ps aux --sort -rss

10. smem

smem命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。它利用“按比例分配大小(PSS)”指标来精确量化Linux进程的有效内存使用情况。内存使用分析结果能够输出为柱状图或者饼图类的图形化图表。

$ sudo smem --pie name -c "pss"

11. top

top命令提供了一个运行中进程的实时视图,以及特定进程的各种资源使用统计信息。与内存相关的信息包括 %MEM (内存使用率), VIRT (虚拟内存使用总量), SWAP (换出的虚拟内存使用量), CODE (分配给代码执行的物理内存数量), DATA (分配给非执行的数据的物理内存数量), RES (物理内存使用总量; CODE+DATA), 和 SHR (有可能与其他进程共享的内存数量)。你能够基于内存使用情况或者大小对进程列表进行排序。

12. vmstat

vmstat命令行工具显示涵盖了CPU、内存、中断和磁盘I/O在内的各种系统活动的瞬时和平均统计数据。对于内存信息而言,命令不仅仅展示了物理内存使用情况(例如总计/已使用内存和缓冲的/缓存的内存),还同样展示了虚拟内存统计数据(例如,内存页的换入/换出,虚拟内存页的换入/换出)

$ vmstat -s


via: http://ask.xmodulo.com/check-memory-usage-linux.html

译者:Ping 校对:wxy

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

rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上。

假定你的网络中已经有一台已经配置好并启动的rsyslog服务器,本指南将为你展示如何来设置CentOS系统将其内部日志消息路由到一台远程rsyslog服务器上。这将大大改善你的系统磁盘空间的使用,尤其是当你还没有一个用于/var目录的独立的大分区。

步骤一: 安装Rsyslog守护进程

在CentOS 6和7上,rsyslog守护进程已经预先安装了。要验证rsyslog是否已经安装到你的CentOS系统上,请执行如下命令:

# rpm -qa | grep rsyslog
# rsyslogd -v 

如果处于某种原因,rsyslog守护进程没有出现在你的系统中,请使用以下命令来安装:

 # yum install rsyslog 

步骤二: 配置Rsyslog守护进程为客户端

接下来的步骤,是要将你的CentOS机器转变成rsyslog客户端,将其所有内部日志消息发送到远程中央日志服务器上。

要实现该功能,请使用你喜爱的文本编辑器打开位于/etc路径下的rsyslog主配置文件:

# nano /etc/rsyslog.conf 

开启文件用于编辑后,你需要添加以下声明到文件底部。将IP地址替换为你的远程rsyslog服务器的IP地址。

*.*  @192.168.1.25:514 

上面的声明告诉rsyslog守护进程,将系统上各个设备的各种日志消息路由到远程rsyslog服务器(192.168.1.25)的UDP端口514。

如果出于某种原因,你需要更为可靠的协议,如TCP,而rsyslog服务器也被配置为监听TCP连接,你必须在远程主机的IP地址前添加一个额外的@字符,像下面这样:

*.*  @@192.168.1.25:514 

注意,你也可以将rsyslog服务器的IP地址替换成它的主机名(FQDN)。

如果你只想要转发服务器上的指定设备的日志消息,比如说内核设备,那么你可以在rsyslog配置文件中使用以下声明。

kern.* @192.168.1.25:514 

修改配置文件后,你需要重启进程以激活修改:

CentOS 7:

# systemctl restart rsyslog.service 

CentOS 6:

# service rsyslog restart 

非 syslog 日志的转发

在另外一种环境中,让我们假定你已经在机器上安装了一个名为“foobar”的应用程序,它会在/var/log下生成foobar.log日志文件。现在,你想要将它的日志定向到rsyslog服务器,这可以通过像下面这样在rsyslog配置文件中加载imfile模块来实现。

首先,加载imfile模块,这只需做一次。

module(load="imfile" PollingInterval="5") 

然后,指定日志文件的路径以便imfile模块可以检测到:

input(type="imfile"
      File="/var/log/foobar.log"
      Tag="foobar"
      Severity="error"
      Facility="local7")

最后,定向local7设备到远程rsyslog服务器:

local7.* @192.168.1.25:514

别忘了重启rsyslog进程哦!

步骤三: 让Rsyslog进程自动启动

要让rsyslog客户端在每次系统重启后自动启动,请运行以下命令:

CentOS 7:

# systemctl enable rsyslog.service 

CentOS 6:

# chkconfig rsyslog on 

小结

在本教程中,我演示了如何将CentOS系统转变成rsyslog客户端以强制它发送日志消息到远程rsyslog服务器。这里我假定rsyslog客户端和服务器之间的连接是安全的(如,在有防火墙保护的公司网络中)。不管在任何情况下,都不要配置rsyslog客户端将日志消息通过不安全的网络转发,或者,特别是通过互联网转发,因为syslog协议是一个明文协议。要进行安全传输,可以考虑使用TLS/SSL来加密日志消息的传输。


via: http://xmodulo.com/configure-rsyslog-client-centos.html

作者:Caezsar M 译者:GOLinux 校对:wxy

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

如果你将Ubuntu从12.04升级跨越到了14.04,那么这其中包括了一个重大的升级--Apache从2.2版本升级到2.4版本。Apache的这次升级带来了许多性能提升,但是如果继续使用2.2的配置文件会导致很多错误

访问控制的改变

Apache 2.4起所启用授权机制比起2.2的只是针对单一数据存储的单一检查更加灵活。过去很难确定哪个 order 授权怎样被使用的,但是授权容器指令的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。

这就是为什么大多数的升级失败是由于配置错误的原因。2.2的访问控制是基于IP地址、主机名和其他角色,通过使用指令Order,来设置Allow, Deny或 Satisfy;但是2.4,这些一切都通过新的授权方式进行检查。

为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/你的网站名称 中找到:

旧的2.2虚拟主机配置:

Order allow,deny
Allow from all

新的2.4虚拟主机配置:

Require all granted

apache 2.4 config

(LCTT 译注:Order、Allow 和 deny 这些将在之后的版本废弃,请尽量避免使用,Require 指令已可以提供比其更强大和灵活的功能。)

.htaccess 问题

升级后如果一些设置不工作,或者你得到重定向错误,请检查是否这些设置是放在.htaccess文件中。如果Apache 2.4没有使用 .htaccess 文件中的设置,那是因为在2.4中AllowOverride指令的默认是 none,因此忽略了.htaccess文件。你只需要做的就是修改或者添加AllowOverride All命令到你的网站配置文件中。

上面截图中,可以看见AllowOverride All指令。

丢失配置文件或者模块

根据我的经验,这次升级带来的另一个问题就是在2.4中,一些旧模块和配置文件不再需要或者不被支持了。你将会收到一条“Apache不能包含相应的文件”的明确警告,你需要做的是在配置文件中移除这些导致问题的配置行。之后你可以搜索和安装相似的模块来替代。

其他需要了解的小改变

这里还有一些其他的改变需要考虑,虽然这些通常只会发生警告,而不是错误。

  • MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客户端最大连接数不等于工作线程数。旧的配置名依然支持。
  • DefaultType命令无效,使用它已经没有任何效果了。如果使用除了 none 之外的其它配置值,你会得到一个警告。需要使用其他配置设定来替代它。
  • EnableSendfile默认关闭
  • FileETag 现在默认为"MTime Size"(没有INode)
  • KeepAlive 只接受“On”或“Off”值。之前的任何不是“Off”或者“0”的值都被认为是“On”
  • 单一的 Mutex 已经替代了 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex 和 WatchdogMutexPath 等指令。你需要做的是估计一下这些被替代的指令在2.2中的使用情况,来决定是否删除或者使用Mutex来替代。

via: http://linoxide.com/linux-how-to/apache-migration-2-2-to-2-4-ubuntu-14-04/

作者:Adrian Dinu 译者:Vic020/VicYu 校对:Caroline

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