分类 技术 下的文章

关于CentOS网页面板

目前有很多免费的或者付费的控制面板。今天,我们来讨论CentOS网页面板(CWP),这是特别为基于RPM 的发行版,如CentOS,RHEL,Scientific Linux等设计的。CWP 是免费且开源的控制面板,可以被广泛用于简单地配置一个网页托管环境。不同于其他的控制面板,CWP能自动部署LAMP的软件栈及Varnish 缓存服务器。

特性

CWP有很多的特性和免费的服务。如我前面提到的一样,CWP会在你的服务器上自动安装全套的LAMP服务(apache,php,phpmyadmin,webmail,mailserver等等)。

CWP安装过程中会安装和配置的软件列表

  • Apache 网页服务器
  • PHP 5.4
  • MySQL + phpMyAdmin
  • Postfix + Dovecot + roundcube webmail
  • CSF 防火墙
  • File System Lock (不需要修改网站,你的所有文件都会被锁定修改)
  • Backups; AutoFixer ,用于服务器配置

第三方应用:

  • CloudLinux + CageFS + PHP Selector
  • Softaculous – 脚本安装器 (免费版和白金版)

网页服务器:

  • Varnish 缓存服务器
  • 从代码编译 Apache
  • Apache 重新编译+附加模块
  • Apache 服务器状态,配置
  • 编辑 Apache 虚拟主机、虚拟主机模版,包括配置
  • 重建所有 Apache 虚拟主机
  • suPHP & suExec
  • Mod Security + OWASP 规则
  • Tomcat 8 服务器管理
  • DoS 防护
  • Perl cgi 脚本支持

PHP:

  • PHP 切换器 (在PHP版本如: 5.2、 5.3、 5.4、 5.5之间切换)
  • PHP选择器,选择每个用户或者每个文件的PHP版本(PHP 4.4、 5.2、 5.3、 5.4、5.5、 5.6)
  • 简单的php编辑器
  • 在用户面板下简单的php.ini生成器
  • PHP 插件
  • PHP.ini 编辑器 & PHP 信息 和列出模块
  • 每个帐号一个php.ini
  • FFMPEG,用于视频流网站
  • CloudLinux + PHP 选择器

用户管理

  • 添加、列出、编辑和移除用户
  • 用户监管
  • Shell访问管理
  • 用户限制管理
  • 限制进程
  • 限制访问文件
  • 用户 FTP & File 管理器
  • CloudLinux + CageFS
  • 每个帐号专有IP

DNS:

  • FreeDNS
  • 添加、编辑、列出和移除DNS区块
  • 编辑域名服务的IP
  • DNS区块模板编辑器
  • 新的易用DNS区块管理器 (用ajax)
  • 新的DNS区块列表,带有额外的google解析信息 (同时检测 rDNS, 域名服务…)

Email:

  • Postfix & dovecot
  • 邮箱、别名
  • Roundcube webmail
  • Postfix 邮件队列
  • rDNS 检查器模块
  • 垃圾邮件拦截
  • SPF & DKIM集成
  • 重构带有反病毒、反垃圾邮件防护的 Postfix/Dovecot 的邮件服务器
  • Email 自动应答器

系统:

  • CPU核心和时钟信息
  • 内存使用信息
  • 详细的磁盘状态
  • 软件信息如内核版本、正常运行时间等等.
  • 服务器状态
  • ChkConfig管理
  • 网络端口使用
  • 网络配置
  • sshd 配置
  • 自动修复(检查重要的配置并尝试自动修复问题)

监控:

  • 监控服务,例如 top、 apache 状态、 mysql 等
  • 在面板内使用Java SSH 终端/控制台
  • 服务器配置 (例如 Apache、 PHP、 MySQL 等)
  • 在屏幕/后台运行命令行

安全:

  • CSF防火墙
  • SSL生成器
  • SSL证书管理
  • CloudLinux + CageFS

SQL:

  • MySQL 数据库管理
  • 添加本地或者远程访问的用户
  • 实时监控MySQL进程列表
  • 创建,移除数据库
  • 为每个数据库添加额外的用户
  • MySQL服务器配置
  • PhpMyAdmin
  • PostgreSQL, phpPgAdmin支持

额外功能:

  • TeamSpeak 3 管理器
  • Shoutcast 管理器
  • 自动更新
  • 备份管理器
  • 文件管理器
  • 每个域名的虚拟FTP用户
  • cPanel帐号迁移 (恢复文件,数据库和数据库用户)
  • 还有更多

在CentOS 6上安装CentOS网页面板

写这篇教程的时候,CWP仅仅支持最高CentOS 6.x版本。在CentOS 7和更高的版本中是不支持的。

前期准备:

安装CWP之前,你必须知道以下的信息:

  • CWP 仅支持静态IP地址。它并不支持动态的,或者内部的IP地址。
  • CWP 并没有卸载程序。当你安装CWP后,你必须重新安装服务器来移除它。
  • 只能在一个新装的还没做任何配置改变的操作系统上安装CWP。
  • 对于32位操作系统至少需要512MB RAM。
  • 64位系统需要1024MB RAM。
  • 要求至少20GB的硬盘空间。

如果是在VirtualBox上面测试,640MB RAM和10GB磁盘空间就足够了。

更新服务器:

首先安装wget包,这是下载CWP需要的。

yum install wget -y

使用命令更新你的服务器:

yum update -y

重启一次,激活更新。

安装CWP:

进入/usr/local/src/目录:

cd /usr/local/src

使用命令下载最新的CWP版本:

wget http://centos-webpanel.com/cwp-latest

如果上面的URL出现错误,用下面的链接代替。

wget http://dl1.centos-webpanel.com/files/cwp-latest

然后,用命令开始安装CWP:

sh cwp-latest

样例输出:

安装过程会持续到30分钟或者更多,取决于你的网速。

最后,你会看到如下安装完成的信息。记下一些详细信息,如mysql超级用户密码和CWP的登录URL,你随后会需要它们。然后,按下回车Enter重启系统。

重启进入系统后,你会看见CWP的欢迎登录信息。

调整防火墙/路由:

CWP的默认网页控制界面的端口是2030(http)2031(https)。你应该通过防火墙/路由允许使用这两个端口,以便远程接入CWP网络控制台。

编辑iptables文件:

vi /etc/sysconfig/iptables

添加如下的内容:

[...]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2030 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2031 -j ACCEPT
[...]

保存并关掉文件。更新iptables服务使改变生效。

service iptables restart

进入CWP网络控制台

打开你的浏览器,键入:

http://IP-Address:2030/

https://IP-Address:2031/

你会看到类似下面的屏幕。

登录认证:

  • Username:root
  • Password:你的root密码

恭喜你!CWP已经安装成功了。

CWP基本的配置

接下来,我们得做一些事,比如:

  1. 设置域名服务器
  2. 设置 ip 共享(必须是你的公共IP地址)
  3. 设置至少一个托管包(或者编辑默认的包)
  4. 设置 root 电子邮件,等等。

设置域名服务器:

为建立域名服务器,找到DNS Functions -> Edit nameservers IPs

设置你的域名服务器,点击保存按钮。

建立共享IP和Root邮件地址:

在你的主机上托管网站,这是非常重要的一步。为了建立共享IP,进入CWP Setting -> Edit settings

输入你的静态IP和邮件地址,然后点击保存设置按钮。

现在,CWP可以进行网站维护了。

建立托管包

一个托管包就是一个网站托管计划,包括允许访问的磁盘空间,带宽,但没有FTP帐号,邮箱地址和数据库等等。你可以建立任意数量的网站托管计划,只要你喜欢。

要添加一个包,从CWP的控制台进入Packages — Add a Package

输入包的名字,允许访问的磁盘配额/RAM数量,FTP/Email帐号,数据库和子域名等等。点击保存设置按钮,建立一个网站托管计划。

现在,CWP可以管理你的域名了。

添加域名:

创建新的域名,你至少得有一个用户帐号。

而添加一个用户,请进入User Account -> New Account

输入域名(ex.unixmen.com),用户名,密码和邮箱地址等等。最后,点击Create

现在,我们添加一个新的域名。

进入Domains -> Add Domain

输入新的域名,并且指定这个域名与用户名关联。

总结

在这篇教程中,我们看到了如何安装和配置CentOS网页面板,来创建一个简单的网站主机环境。CWP安装和使用非常简单。甚至一个菜鸟也可以在几个小时内建立一个基本的网站主机服务器。并且,CWP完全免费和开源。试一试吧!你不会失望的。

你可以在CentOS Web Panel Wikipage找到更多关于CWP的信息。

加油!


via: http://www.unixmen.com/how-to-install-centos-web-panel-in-centos/

作者:SK 译者:wi-cuckoo 校对:wxy

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

问题: 我尝试在 [某某 Linux 发行版] 上编译程序,但是出现下面的编译错误:

"pam_otpw.c:27:34: fatal error: security/pam_modules.h: No such file or directory"

我怎样才能修复这个错误?

缺失的头文件 'security/pam\_modules.h' 是 libpam 开发版的一部分,一个 PAM(Pluggable Authentication Modules:插入式验证模块)库。因此要修复这个错误,你需要安装 libpam 开发包,如下所示。

对于 Debian、 Ubuntu 或者 Linux Mint:

$ sudo apt-get install libpam0g-dev

对与 CentOS、 Fedora 或者 RHEL:

$ sudo yum install gcc pam-devel

现在验证缺失的头文件是否安装到了 /usr/include/security。


via: http://ask.xmodulo.com/fatal-error-security-pam-modules.html

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

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

Linux的命令行是最好、最强大的东西,它使新手着迷,并为老手和极客的提供极其强大的功能。那些在服务器和生产环境下工作的人早已认识到了这个事实。有趣的是,Linux终端是Linus Torvald在1991年写内核时实现的第一批功能之一。

终端是个强大的工具,由于它没有什么可调整的部分,所以十分可靠。终端介于控制台环境和GUI环境之间。终端自身作为一个GUI程序,运行在桌面环境下。有许多终端是适用于特定的桌面环境的,其它的则是通用的。Terminator, Konsole, Gnome-Terminal, Terminology, XFCE terminal, xterm都是些常用的终端模拟器。

您可以从下面的链接中获得一份使用最广泛的终端模拟器的列表。

前几日上网时,我偶遇了名为‘Guake’的终端程序,它是用于gnome的终端模拟器。尽管这并不是我第一次听到Guake。实际上,我在大约一年前便知道了这个应用程序,但不知怎么搞的,我那时没有写写Guake,再后来我便渐渐忘掉了Guake,直到我再一次听到Guake。所以,最终,这篇文章诞生了。我将给你讲讲Guake的功能,在Debian、Ubuntu、Fedora上的安装过程以及一些测试。

什么是Guake?

Guake是应用于Gnome环境的下拉式终端。主要由Python编写,使用了一些C,它以GPL2+许可证发布,适用于Linux以及类似的系统。Guake的灵感来源于电脑游戏Quake(雷神之锤)中的终端,Quake的终端能通过按下特定按键(默认为F12)从屏幕上滑下来,并在按下同样的键后滑上去。

值得注意的是,Guake并不是第一个这样的应用。Yakuake(Yet Another Kuake)是一个运行于KDE的终端模拟器,Tilda是一个用GTK+写成的终端模拟器。它们的灵感都来自于雷神之锤那上下滑动的终端。

Guake的功能

  • 轻量级
  • 简单而优雅
  • 功能众多
  • 强大
  • 美观
  • 将终端平滑地集成于GUI中
  • 在按下预定义的键后出现/消失
  • 支持热键、标签、透明化背景,这使得它适合所有Gnome用户
  • 可配置各种方面
  • 包括许多颜色的调色板
  • 设定透明度的快捷方式
  • 通过Guake配置,可在启动时运行一个脚本
  • 可以在多个显示器上运行

Guake 0.7.0最近发布,它带来了一些修正以及上面提到的一些功能。完整的版本历史和源代码包可以在这里找到。

在Linux中安装Guake终端

如果您对从源码编译Guake感兴趣,您可以从上面的链接处下载Guake,并在安装前进行编译。

然而Guake可以在许多的发行版中通过添加额外的仓库来安装。这里,我们将在Debian、Ubuntu、Linux Mint和Fedora下安装Guake。

首先从仓库获取最新的软件包列表,并从默认的仓库安装Guake,如下所示:

---------------- 在 Debian, Ubuntu 和 Linux Mint 上 ----------------
$ sudo apt-get update
$ apt-get install guake

---------------- 在 Fedora 19 及其以后版本 ----------------
# yum update
# yum install guake

安装后,可以从另一个终端中启动Guake:

$ guake

在启动它后,便可以在Gnome桌面中使用F12(默认配置)来拉下、收回终端。

看起来非常漂亮,尤其是透明背景。滑下来...滑上去...滑下来...滑上去...执行命令,打开另一个标签,执行命令,滑上去...滑下来...(作者已沉迷其中)

Guake Terminal in Action

Guake实战

如果您的壁纸或活动窗口的颜色和Guake的颜色有些不搭。您可以改变您的壁纸,减少透明度或者改变Guake的颜色。

下一步便是进入Guake的配置,根据每个人的需求修改设置。可以通过应用菜单或者下面的命令来运行Guake的配置。

$ guake --preferences

Guake Terminal Properties

Guake终端配置

设置滚动

Guake Scrolling Settings

Guake滚动配置

外观设置 - 在这里您可以修改文字颜色和背景色以及透明度。

Appearance Properties

外观设置

键盘快捷键 - 在这里您可以修改Guake显示的开关快捷键。

Keyboard Shortcuts

键盘快捷键

兼容性设置 - 基本上不必设置它。

Compatibility Setting

兼容性设置

结论

这个项目即不是太年轻也不是太古老,因此它已经达到了一定的成熟度,足够可靠,可以开箱即用。像我这样需要在GUI和终端间频繁切换的人来说,Guake是一个福利。我不需要管理一个多余的窗口,频繁的打开和关闭,使用tab在大量打开的应用程序中寻找终端或切换到不同的工作区来管理终端,现在我需要的只有F12。

我认为对任何同时使用GUI和终端的Linux用户来说,Guake都是必须的工具。同样的,我会向任何想要在系统中结合使用GUI和终端的人推荐它,因为它既平滑又没有任何障碍。

上面就是我要说的全部了。如果在安装和使用时有任何问题,请告诉我,我们会帮助您。也请您告诉我您使用Guake的经验。在下面的评论区反馈您宝贵的经验。点赞和分享以帮助我们宣传。


via: http://www.tecmint.com/install-guake-terminal-ubuntu-mint-fedora/

作者:Avishek Kumar 译者:wwy-hust 校对:wxy

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

我们已经展示了一些不同的应用程序和方法来获取Linux的系统和硬件信息。在这一系列里,我们将看到如何使用inxi来获取这些详情信息。在论坛技术支持中,它可以作为调试工具,迅速确定用户的系统配置和硬件信息。

Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具,内容包括:

  • 硬件
  • CPU
  • 磁盘驱动器
  • Xorg
  • 桌面环境
  • 内核
  • GCC版本
  • 进程
  • 内存占用
  • 和其他有用的信息

安装方法

Inxi在多数现代GNU/Linux操作系统的默认软件仓库中。所以我们可以简单地运行下列命令安装。

在基于Debian的发行版:

sudo apt-get install inxi

在Fedora:

sudo yum install inxi

在基于RHEL的发行版:

安装EPEL软件仓库:

sudo yum install epel-release

然后使用如下命令安装inxi:

sudo yum install inxi

使用方法

在终端运行如下命令可以获取系统的概况信息。

inxi

示例输出:

CPU~Dual core Intel Core i3-2350M CPU (-HT-MCP-) clocked at Min:800.000Mhz Max:1200.000Mhz Kernel~3.13.0-45-generic x86_64 Up~6:41 Mem~1537.7/3861.3MB HDD~500.1GB(52.5% used) Procs~183 Client~Shell inxi~1.9.17

当然,我们可以获取一个特定硬件的详情信息。比如获取声音/音频硬件详情信息,可以运行如下命令:

inxi -A

示例输出:

Audio:     Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel 
           Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic

很酷是吧?

同样的,你可以获取显卡的详情信息。

inxi -G

示例输出:

Graphics:  Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller 
           X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: [email protected] 
           GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0

硬盘信息呢?也是可以的。运行如下命令来获取完整的硬盘信息。

inxi -D

示例输出:

Drives:    HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9601325BD size: 500.1GB

显示Bios和主板详情信息:

inxi -M

示例输出:

Machine:   System: Dell (portable) product: Inspiron N5050
           Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012

不仅是硬性详情信息,它也可以显示我们系统中的可用软件仓库列表

inxi -r

示例输出:

Repos:     Active apt sources in file: /etc/apt/sources.list
           deb http://ubuntu.excellmedia.net/archive/ trusty main restricted
           deb-src http://ubuntu.excellmedia.net/archive/ trusty main restricted
           deb http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
           deb-src http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
           deb http://ubuntu.excellmedia.net/archive/ trusty universe
           .
           .
           Active apt sources in file: /etc/apt/sources.list.d/intellinuxgraphics.list
           deb https://download.01.org/gfx/ubuntu/14.04/main trusty main #Intel Graphics drivers
           Active apt sources in file: /etc/apt/sources.list.d/linrunner-tlp-trusty.list
           Active apt sources in file: /etc/apt/sources.list.d/wseverin-ppa-trusty.list
           deb http://ppa.launchpad.net/wseverin/ppa/ubuntu trusty main

Inxi还可以显示你所在位置的天气信息。感到意外吗?是的,它可以。

inxi -W Erode,Tamilnadu

这里Erode是地区,Tamilnadu是印度的一个邦。

示例输出:

Weather:   Conditions: 79 F (26 C) - Clear Time: February 4, 6:00 PM IST

查看完整的硬件详情信息

厌倦了逐一获取每种硬件的信息?你可以使用如下命令将所有信息一次列出:

inxi -F

示例输出:

System:    Host: sk Kernel: 3.13.0-45-generic x86_64 (64 bit) Desktop: LXDE (Openbox 3.5.2) Distro: Ubuntu 14.04 trusty
Machine:   System: Dell (portable) product: Inspiron N5050
           Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012
CPU:       Dual core Intel Core i3-2350M CPU (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) 
           Clock Speeds: 1: 800.00 MHz 2: 1000.00 MHz 3: 800.00 MHz 4: 800.00 MHz
Graphics:  Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller 
           X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: [email protected] 
           GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0
Audio:     Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel 
           Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic
Network:   Card-1: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) driver: ath9k 
           IF: wlan0 state: up mac: 
           Card-2: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver: r8169 
           IF: eth0 state: down mac: 
Drives:    HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9500325AS size: 500.1GB 
Partition: ID: / size: 455G used: 245G (57%) fs: ext4 ID: /boot size: 236M used: 159M (72%) fs: ext2 
           ID: swap-1 size: 4.19GB used: 0.00GB (0%) fs: swap 
RAID:      No RAID devices detected - /proc/mdstat and md_mod kernel raid module present
Sensors:   System Temperatures: cpu: 64.5C mobo: N/A 
           Fan Speeds (in rpm): cpu: N/A 
Info:      Processes: 186 Uptime: 6:52 Memory: 1547.2/3861.3MB Client: Shell (bash) inxi: 1.9.17

就像上面你看到的那样,inxi显示出了完整的硬件详情信息。

更多的细节可以参考man手册。

man inxi

结论

你在寻找一个可以显示完整的系统和硬件详情信息的简单工具吗?那么不用再找了,inxi会提供你所需要的。并且,它还是在你系统默认的软件仓库中的轻量级工具。你还想要更多东西吗?试一试它,你不会失望。

欢呼吧!


via: http://www.unixmen.com/inxi-find-system-hardware-information-linux/

作者:SK 译者:goreliu 校对:wxy

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

今天的文章里我们会讲到一些使用Linux命令行工具来发送带附件的电子邮件的方法。它有很多用处,比如在应用程序所在服务器上,使用电子邮件发送一个文件过来,或者你可以在脚本中使用这些命令来做一些自动化操作。在本文的例子中,我们会使用foo.tar.gz文件作为附件。

有不同的命令行工具可以发送邮件,这里我分享几个多数用户会使用的工具,如mailxmuttswaks

我们即将呈现的这些工具都是非常有名的,并且存在于多数Linux发行版默认的软件仓库中,你可以使用如下命令安装:

Debian / Ubuntu 系统

apt-get install mutt
apt-get install swaks
apt-get install mailx
apt-get install sharutils

在基于Red Hat的系统,如 CentOS 或者 Fedora

yum install mutt
yum install swaks
yum install mailx
yum install sharutils

1) 使用 mail / mailx

mailx工具在多数Linux发行版中是默认的邮件程序,现在已经支持发送附件了。如果它不在你的系统中,你可以使用上边的命令安装。有一点需要注意,老版本的mailx可能不支持发送附件,运行如下命令查看是否支持。

$ man mail

第一行看起来是这样的:

mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]] to-addr . . .

如果你看到它支持-a的选项(-a 文件名,将文件作为附件添加到邮件)和-s选项(-s 主题,指定邮件的主题),那就是支持的。可以使用如下的几个例子发送邮件。

a) 简单的邮件

运行mail命令,然后mailx会等待你输入邮件内容。你可以按回车来换行。当输入完成后,按Ctrl + D,mailx会显示EOT表示结束。

然后mailx会自动将邮件发送给收件人。

$ mail [email protected]

HI,
Good Morning
How are you
EOT

b) 发送有主题的邮件

$ echo "Email text" | mail -s "Test Subject" [email protected]

-s的用处是指定邮件的主题。

c) 从文件中读取邮件内容并发送

$ mail -s "message send from file" [email protected] < /path/to/file

d) 将从管道获取到的echo命令输出作为邮件内容发送

$ echo "This is message body" | mail -s "This is Subject" [email protected]

e) 发送带附件的邮件

$ echo “Body with attachment "| mail -a foo.tar.gz -s "attached file" [email protected]

-a选项用于指定附件。

2) mutt

Mutt是类Unix系统上的一个文本界面邮件客户端。它有20多年的历史,在Linux历史中也是一个很重要的部分,它是最早支持进程打分和多线程处理的客户端程序之一。按照如下的例子来发送邮件。

a) 带有主题,从文件中读取邮件的正文,并发送

$ mutt -s "Testing from mutt" [email protected] < /tmp/message.txt

b) 通过管道获取echo命令输出作为邮件内容发送

$ echo "This is the body" | mutt -s "Testing mutt" [email protected]

c) 发送带附件的邮件

$ echo "This is the body" | mutt -s "Testing mutt" [email protected] -a /tmp/foo.tar.gz

d) 发送带有多个附件的邮件

$ echo "This is the body" | mutt -s "Testing" [email protected] -a foo.tar.gz –a bar.tar.gz

3) swaks

Swaks(Swiss Army Knife,瑞士军刀)是SMTP服务上的瑞士军刀,它是一个功能强大、灵活、可编程、面向事务的SMTP测试工具,由John Jetmore开发和维护。你可以使用如下语法发送带附件的邮件:

$ swaks -t "[email protected]" --header "Subject: Subject" --body "Email Text" --attach foo.tar.gz

关于Swaks一个重要的地方是,它会为你显示整个邮件发送过程,所以如果你想调试邮件发送过程,它是一个非常有用的工具。

它会给你提供了邮件发送过程的所有细节,包括邮件接收服务器的功能支持、两个服务器之间的每一步交互。

(LCTT 译注:原文此处少了 sharutils 的相关介绍,而多了 uuencode 的介绍。)

4) uuencode

邮件传输系统最初是被设计来传送7位编码(类似ASCII)的内容的。这就意味这它是用来发送文本内容,而不能发会使用8位的二进制内容(如程序文件或者图片)。uuencode(“UNIX to UNIX encoding”,UNIX之间使用的编码方式)程序用来解决这个限制。使用uuencode,发送端将二进制格式的转换成文本格式来传输,接收端再转换回去。

我们可以简单地使用uuencodemailx或者mutt配合,来发送二进制内容,类似这样:

$ uuencode example.jpeg example.jpeg | mail [email protected]

Shell脚本:解释如何发送邮件

#!/bin/bash

FROM=""
SUBJECT=""
ATTACHMENTS=""
TO=""
BODY=""

# 检查文件名对应的文件是否存在
function check_files()
{
output_files=""
for file in $1
do
if [ -s $file ]
then
output_files="${output_files}${file} "
fi
done
echo $output_files
}

echo "*********************"
echo "E-mail sending script."
echo "*********************"
echo

# 读取用户输入的邮件地址
while [ 1 ]
do
if [ ! $FROM ]
then
echo -n -e "Enter the e-mail address you wish to send mail from:\n[Enter] "
else
echo -n -e "The address you provided is not valid:\n[Enter] "
fi

read FROM
echo $FROM | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# 读取用户输入的收件人地址
while [ 1 ]
do
if [ ! $TO ]
then
echo -n -e "Enter the e-mail address you wish to send mail to:\n[Enter] "
else
echo -n -e "The address you provided is not valid:\n[Enter] "
fi

read TO
echo $TO | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# 读取用户输入的邮件主题
echo -n -e "Enter e-mail subject:\n[Enter] "
read SUBJECT

echo

if [ "$SUBJECT" == "" ]
then
echo "Proceeding without the subject..."
fi

# 读取作为附件的文件名
echo -e "Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with \"."
read att

echo

# 确保文件名指向真实文件
attachments=$(check_files "$att")
echo "Attachments: $attachments"

for attachment in $attachments
do
ATTACHMENTS="$ATTACHMENTS-a $attachment "
done

echo

# 读取完整的邮件正文
echo "Enter message. To mark the end of message type ;; in new line."
read line

while [ "$line" != ";;" ]
do
BODY="$BODY$line\n"
read line
done

SENDMAILCMD="mutt -e \"set from=$FROM\" -s \"$SUBJECT\" \
$ATTACHMENTS -- \"$TO\" <<< \"$BODY\""
echo $SENDMAILCMD

mutt -e "set from=$FROM" -s "$SUBJECT" $ATTACHMENTS -- $TO <<< $BODY

** 脚本输出 **

$ bash send_mail.sh
*********************
E-mail sending script.
*********************

Enter the e-mail address you wish to send mail from:
[Enter] [email protected]

Enter the e-mail address you wish to send mail to:
[Enter] [email protected]

Enter e-mail subject:
[Enter] Message subject

Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with ".
send_mail.sh

Attachments: send_mail.sh

Enter message. To mark the end of message type ;; in new line.
This is a message
text
;;

总结

有很多方法可以使用命令行/Shell脚本来发送邮件,这里我们只分享了其中4个类Unix系统可用的工具。希望你喜欢我们的文章,并且提供您的宝贵意见,让我们知道您想了解哪些新工具。


via: http://linoxide.com/linux-shell-script/send-email-subject-body-attachment-linux/

作者:Bobbin Zachariah 译者:goreliu 校对:wxy

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

PHP是一种为我们熟知的通用服务器网页脚本语言。非常多的在线网站都是用PHP编写的。PHP这些年来一直在持续进化,丰富其功能,变得易于使用,更好地组织的脚本语言。目前PHP的开发团队正筹备下一个PHP版本的发行,名字是PHP 7。现在的PHP版本为PHP 5.6,可能你清楚PHP 6已经流产了,PHP 7的支持者们不希望下一个重要的版本被其他分支混淆,即过去已经停止很久的PHP 6。所以决定下一个PHP主要的发行版本叫PHP 7,而不是PHP 6。PHP 7.0预计在今年十一月份发行。

在下一代主要PHP版本里有一些不错的功能:

  • 为了改善执行效率与内存占用,新的版本添加了PHPNG功能。
  • 引入了JIT引擎来动态编译Zend操作码为自然机器码,以此来达到更快的处理性能。这项功能允许随后的程序调用同一份代码,这样会运行快很多。
  • AST(抽象语法树)是最新添加的功能,它可以增强支持PHP的扩展性和用户应用。
  • 添加异步编程功能以支持同一个请求中的并行任务。
  • 新的版本会支持独立的多线程网页服务器,这样可以使用一个单独的存储池处理很多并发的请求。

在CentOS/Fedora上安装PHP 7

让我们来看看怎样在CentOS 7和Fedora 21安装PHP7。为了安装PHP7,我们首先需要克隆php-src 仓库。当克隆工作完成,我们再配置和编译它。进行下一步之前,我们要确保已经在LInux系统下安装了如下的组件,否则PHP编译会返回错误中止。

  • Git
  • autoconf
  • gcc
  • bison

所有上面提到的要求可以使用Yum软件包管理器安装。以下一条命令即可完成:

yum install git autoconf gcc bison

准备好开始安装PHP7了吗?让我们先创建一个PHP7目录,作为你的当前工作目录。

mkdir php7
cd php7

现在克隆php-src仓库,在终端里运行下面的命令。

git clone https://git.php.net/repository/php-src.git

工作应该会在几分钟后完成,这里是一个样例输出,你应该会在任务完成时看见。

[root@localhost php7]# git clone https://git.php.net/repository/php-src.git
Cloning into 'php-src'...
remote: Counting objects: 615064, done.
remote: Compressing objects: 100% (127800/127800), done.
remote: Total 615064 (delta 492063), reused 608718 (delta 485944)
Receiving objects: 100% (615064/615064), 152.32 MiB | 16.97 MiB/s, done.
Resolving deltas: 100% (492063/492063), done.

让我们来配置,编译PHP7,在终端运行下面的命令,开始配置工作:

cd php-src
./buildconf

下面是./buildconf命令的样例输出。

[root@localhost php-src]# ./buildconf
buildconf: checking installation...
buildconf: autoconf version 2.69 (ok)
rebuilding aclocal.m4
rebuilding configure
rebuilding main/php_config.h.in

使用下面的命令,继续配置进程:

./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-mysql=/usr \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config

这会花去不少的时间,当完成后你应该会看到如下面的输出:

creating libtool
appending configuration tag "CXX" to libtool
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands

运行下面的命令,完成编译过程。

make

“make”命令的样例输出如下所示:

Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
pharcommand.inc
invertedregexiterator.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

活儿干完了,该安装PHP7了,运行下面的命令安装它。

make install

成功安装的进程的样例输出应该像这样:

[root@localhost php-src]# make install
Installing shared extensions:     /root/php7/usr/lib/php/extensions/no-debug-non-zts-20141001/
Installing PHP CLI binary:        /root/php7/usr/bin/
Installing PHP CLI man page:      /root/php7/usr/php/man/man1/
Installing PHP CGI binary:        /root/php7/usr/bin/
Installing PHP CGI man page:      /root/php7/usr/php/man/man1/
Installing build environment:     /root/php7/usr/lib/php/build/
Installing header files:          /root/php7/usr/include/php/
Installing helper programs:       /root/php7/usr/bin/
program: phpize
program: php-config
Installing man pages:             /root/php7/usr/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment:      /root/php7/usr/lib/php/
[PEAR] Archive_Tar    - installed: 1.3.13
[PEAR] Console_Getopt - installed: 1.3.1
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.3
[PEAR] PEAR           - installed: 1.9.5
Wrote PEAR system config file at: /root/php7/usr/etc/pear.conf
You may want to add: /root/php7/usr/lib/php to your php.ini include_path
/root/php7/php-src/build/shtool install -c ext/phar/phar.phar /root/php7/usr/bin
ln -s -f /root/php7/usr/bin/phar.phar /root/php7/usr/bin/phar
Installing PDO headers:          /root/php7/usr/include/php/ext/pdo/

恭喜你,PHP7已经安装在你的Linux系统上了。安装完后,进入PHP7安装文件里的sapi/cli里面。

cd sapi/cli

验证一下PHP的版本。

[root@localhost cli]# ./php -v
PHP 7.0.0-dev (cli) (built: Mar 28 2015 00:54:11)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

总结

PHP 7也添加到了remi仓库,这个即将到来的版本主要关注执行效率的提升,它的新特性致力于使PHP较好满足现代编程的需求和趋势。PHP 7.0将会有许多新的特性、丢弃一些老版本的东西。在接下来的日子里,我们希望看到新特性和弃用功能的具体情况。希望你喜欢!


via: http://linoxide.com/linux-how-to/install-php-7-centos-7-fedora-21/

作者:Aun Raza 译者:wi-cuckoo 校对:wxy

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