Ubuntu (12.04/ 14.04/ 16.04) 安装Wine(最新稳定版)

本文将要介绍如何在Ubuntu (12.04/14.04/16.04)系统上安装并配置Wine, 并通过安装好的Wine在Ubuntu 16.04 系统上来安装windows应用程序。 我们都知道,大多数的应用程序都不能兼容不同的系统,windows的应用程序只能在windows系统上安装,Mac的应用程序只能安装在mac系统上,而Linux系统的程序也只能安装Linux系统上。如果你想在Ubuntu Linux系统上安装windows 的应用程序,那么可以通过在Linux和windows系统的兼容层软件Wine上安装windows应用程序,比如,腾讯的QQ聊天软件。

Wine是什么?

Wine (“Wine Is Not an Emulator” 的递归缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层。另外英语单词wine是葡萄酒的意思。

Wine (Wine Is Not an Emulator)[即Wine不是一个模拟器]是一个在Linux和UNIX之上的,Windows 3.x和 Windows APIs的实现。注意,Wine不是Windows模拟器,而是运用API转换技术实做出Linux对应到Windows相对应的函数来调用DLL以运行Windows程序。Wine可以工作在绝大多数的UNIX版本下,包括Linux, FreeBSD, 和 Solaris。另外,也有适用于Mac OS X的Wine程序。-摘自 百度百科

Ubuntu安装及配置Wine

默认的ubunt 16.04系统软件源里的wine 版本是1.6 的,如果想安装这个版本的wine,可以在命令行下直接执行apt-get install wine 命令。 本文件将会介绍根据官方给出的安装方法来安装最新的Wine稳定版本 wine 3.0.

1# 启用32位架构支持

如果当前的Ubuntu系统是64位的,那么我们需要先启用对32位架构的支持,执行下面的命令:

$ sudo dpkg --add-architecture i386

2# 下载Wine 密钥文件并将密钥文件加到可信任的密钥列表里。

我们需要从wine官方下载许可密钥文件,这样才能将官方提供的Wine Repo添加到ubuntu系统上。 执行下面的命令:

$ wget -nc https://dl.winehq.org/wine-builds/Release.key
$ sudo apt-key add Release.key

命令输出如下:

root@devops:~# wget -nc https://dl.winehq.org/wine-builds/Release.key
--2018-04-08 19:13:05--  https://dl.winehq.org/wine-builds/Release.key
正在解析主机 dl.winehq.org (dl.winehq.org)... 151.101.72.69
正在连接 dl.winehq.org (dl.winehq.org)|151.101.72.69|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 3122 (3.0K) [application/pgp-keys]
正在保存至: “Release.key”
Release.key         100%[===================>]   3.05K  --.-KB/s    in 0s
2018-04-08 19:13:06 (41.9 MB/s) - 已保存 “Release.key” [3122/3122])

root@devops:~# apt-key add Release.key
OK

3# 添加最新的wine 稳定版本repo到当前的系统源里

执行下面的命令添加安装源并更新安装源:

$ sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
$ sudo apt-get update

命令输出如下:

root@devops:~# apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/ 
root@devops:~# apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
命中:9 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:11 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
命中:12 http://archive.ubuntu.com/ubuntu trusty Release
获取:13 https://dl.winehq.org/wine-builds/ubuntu xenial InRelease [4,701 B]
命中:15 https://deb.nodesource.com/node_8.x xenial InRelease
获取:16 https://dl.winehq.org/wine-builds/ubuntu xenial/main amd64 Packages [28.9 kB]
获取:17 https://dl.winehq.org/wine-builds/ubuntu xenial/main i386 Packages [28.6 kB]
已下载 62.2 kB,耗时 3秒 (19.2 kB/s)
正在读取软件包列表... 完成

从上面的输出中,我们可以看到Wine的最新的安装源已经被添加到系统源里了。

4# 安装Wine 最新的稳定版3.0

执行下面的命令来安装最新的wine 稳定版本:

$ sudo apt-get install --install-recommends winehq-stable

命令输出如下:

root@devops:~# apt-get install --install-recommends winehq-stable
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 libuv1 linux-headers-4.10.0-2
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
……
升级了 32 个软件包,新安装了 157 个软件包,要卸载 0 个软件包,有 221 个软被升级。
需要下载 133 MB 的归档。
解压缩后会消耗 792 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libpam-s amd64 229-4ubuntu21.2 [115 kB]
正在设置 winehq-stable (3.0.0~xenial) ...
正在设置 libglu1-mesa:i386 (9.0.0-2.1) ...
正在设置 libosmesa6:i386 (17.2.8-0ubuntu0~16.04.1) ...
正在设置 libosmesa6:amd64 (17.2.8-0ubuntu0~16.04.1) ...
正在处理用于 initramfs-tools (0.122ubuntu8.8) 的触发器 ...
update-initramfs: Generating /boot/initrd.img-4.13.0-37-generic
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 .

查看安装后的Wine版本

执行下面命令:

#wine –version

命令输出如下:

root@devops:~# wine --version
wine-3.0
root@devops:~#

5#  Wine 配置

当我们安装完wine软件包后,还需要去Ubuntu 图形界面下,执行winecfg命令,来安装一些跟兼容性相关的软件包,比如Wine Mono 组件,Wine Gecko组件等。

执行命令:

#winecfg

系统会弹出安装界面,点击“安装”按钮,进行安装操作。

ubuntu 安装wine1

ubuntu 安装wine2

之后,系统会弹出Wine设置窗口,我们可以进行一些对程序进行显示,桌面,驱动器,音效等的设置。点击“确定”即可。

ubuntu 安装wine3

至此,我们就完成了在ubuntu 16.04系统下的wine 3.0 稳定版的安装及配置。

Ubuntu 下通过Wine安装Windows应用程序

当我们安装并配置完Wine软件后,我们就可以通过wine来安装windows 应用程序了,下面我们来演示如何通过Wine 来安装最新的腾讯QQ聊天工具 qq 9.02.

1# 从官方下载QQ的软件安装包QQ9.0.2.exe

root@devops:/home/devops/下载# ls
QQ9.0.2.exe

2# 在windows应用程序上,鼠标右键,点击“使用Wine Windows Program Loader…”

ubuntu 安装wine4

3# 接下来我们就可以根据安装提示进行操作

点击“立即安装”按钮,安装完成后,点击“完成安装”按钮

ubuntu 安装wine5

ubuntu 安装wine6

4# 通过Wine启动已经安装的window 应用程序

默认情况下,windows的应用程序安装完成之后,程序的可执行文件存放在 ~./.wine/drive_c 目录,在相应的应用程序目录下找到可执行文件,执行下面的命令启动QQ应用程序:

# cd  /home/devops/.wine/drive_c/Program Files (x86)/Tencent/QQ/Bin
# wine qq.exe

ubuntu 安装wine7

Ubuntu 下卸载Wine

如果需要在Ubuntu系统下卸载其之前安装的Wine,可以执行下面的命令:

# Wine uninstaller

99%的人还阅读了:

Ubuntu (12.04/ 14.04/ 16.04) 安装 Node.js

本文将要介绍如何在Ubuntu (12.04/14.04/16.04)系统上通过不同的方法来安装日常开发中最常用的JavaScript运行环境Node.js。

什么是Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器NPM,是全球最大的开源库生态系统。摘自 node中文站

通过Ubuntu默认的软件源安装Node.js

当ubuntu 系统安装完成后,其默认的软件源里会包含一个已经发布的Node.js 稳定版,我们可以通过apt-get命令来安装。 执行下面的命令:

$ sudo apt-get update
$sudo apt-get install nodejs

命令输出如下:

root@devops:~# apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
命中:9 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:11 http://archive.ubuntu.com/ubuntu trusty Release
命中:12 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
正在读取软件包列表... 完成
root@devops:~# apt-get install nodejs
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
  linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
  linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libuv1
下列【新】软件包将被安装:
  libuv1 nodejs
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 223 个软件包未被升级。
需要下载 3,221 kB 的归档。
解压缩后会消耗 13.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

安装Node.js 包管理器NPM (Node package manager

在大多数情况下,我们还需要安装npm, 也就是Node.js 的包管理器, 执行下面的命令:

$sudo apt-get install npm

命令输出如下:

root@devops:~# apt-get install npm
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
  linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
  linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
......
node-tar node-tunnel-agent
  node-underscore node-which nodejs nodejs-dev
建议安装:
  node-hawk node-aws-sign node-oauth-sign node-http-signature
下列【新】软件包将被安装:
......
  node-tar node-tunnel-agent
  node-underscore node-which nodejs nodejs-dev npm
下列软件包将被升级:
  libssl1.1
升级了 1 个软件包,新安装了 59 个软件包,要卸载 0 个软件包,有 222 个软件包未被升级。
需要下载 10.4 MB 的归档。
解压缩后会消耗 42.1 MB 的额外空间。
您希望继续执行吗? [Y/n]

查看Node.js的版本号

当我们通过上面的默认软件源安装完成后,可以通过下面的命令来查看当前的node.js 的版本:

$nodejs –v

命令输出如下:

root@devops:~# nodejs -v
v4.2.6

查看NPM的版本号

执行下面的命令:

$npm –v

输出如下:

root@devops:~/node-v9.1.0# npm -v
5.5.1

 

通过PPA安装Node.js

你也可以通过添加PPA源到ubuntu系统里,之后再安装PPA源里提供的Node.js 软件包。

首先通过下面的命令添加PPA到系统里:

$  sudo apt-get install python-software-properties
$ curl -sL https://deb.nodesource.com/setup_9.x  -o setup_9.x
$ bash setup_9.x

该PPA源包含了最新的node.js版本V9

如果需要安装稳定版本的node.js, 可以添加下面的ppa源,执行命令:

$ sudo apt-get install python-software-properties
$ curl -sL https://deb.nodesource.com/setup_8.x   -o  setup_8.x命令输出如下:
$ bash setup_8.x

命令输出如下:

root@devops:~# bash setup_8.x
## Installing the NodeSource Node.js v8.x LTS Carbon repo...
## Ppulating apt-get cache...
+ apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
......
命中:13 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
正在读取软件包列表... 完成
## Confirming "xenial" is supported...
+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_8.x/dists/xenial/Relse'
## Adding the NodeSource signing key to your keyring...
+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
OK
## Creating apt sources list file for the NodeSource Node.js v8.x LTS Carbon ro...
+ echo 'deb https://deb.nodesource.com/node_8.x xenial main' > /etc/apt/sourcelist.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/srces.list.d/nodesource.list
## Running `apt-get update` for you...
+ apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
......
获取:17 https://deb.nodesource.com/node_8.x xenial/main i386 Packages [1,002 B
已下载 7,415 B,耗时 6秒 (1,118 B/s)
正在读取软件包列表... 完成
## Run `apt-get install nodejs` (as root) to install Node.js v8.x LTS Carbon a npm

通过源码包安装Node.js

我们也可以通过从官方网站下载node.js 的源码包进行编译安装。

1# 下载node.js源码包

执行下面的命令:

$ wget https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz

命令输出如下:

root@devops:~# wget https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
--2018-03-30 22:34:26--  https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
正在解析主机 nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2400:cb00:2048:1::6814:162e, ...
正在连接 nodejs.org (nodejs.org)|104.20.22.46|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 30918002 (29M) [application/gzip]
正在保存至: “node-v9.1.0.tar.gz”
node-v9.1.0.tar.gz   71%[===========>      ]  21.03M  33.4KB/s    in 12m 12s
2018-03-30 22:46:40 (29.4 KB/s) - 在 22052617 字节处连接关闭。 重试中。
--2018-03-30 22:46:41--  (尝试次数: 2)  https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
正在连接 nodejs.org (nodejs.org)|104.20.22.46|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 206 Partial Content
长度: 30918002 (29M),剩余 8865385 (8.5M) [application/gzip]
正在保存至: “node-v9.1.0.tar.gz”
node-v9.1.0.tar.gz  100%[++++++++++++=====>]  29.49M  26.3KB/s    in 5m 9s
2018-03-30 22:51:52 (28.0 KB/s) - 已保存 “node-v9.1.0.tar.gz” [30918002/30918002])

2# 解压缩刚才下载node.js源码包

执行命令:

#tar –zxvf node-v9.1.0.tar.gz

3# 进入解压后的目录 node-v9.10, 执行下面的命令:

#./configure
# make
# make install

命令输出如下:

root@devops:~/node-v9.1.0# ./configure
creating ./icu_config.gypi
* Using ICU in deps/icu-small
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'coverage': 'false',
'debug_devtools': 'node',
'debug_http2': 'false',
'debug_nghttp2': 'false',
'force_dynamic_crt': 0,
'gas_version': 0,
'host_arch': 'x64',
u_data_file': 'icudt59l.dat',
'icu_data_in': '../../deps/icu-small/source/data/in/icudt59                dat',
'icu_endianness': 'l',
'icu_gyp_path': 'tools/icu/icu-generic.gyp',
'icu_locales': 'en,root',
'icu_path': 'deps/icu-small',
'icu_small': 'true',
'icu_ver_major': '59',
'node_byteorder': 'little',
'node_enable_d8': 'false',
'node_enable_v8_vtunejit': 'false',
'node_install_npm': 'true',
'node_module_version': 59,
'node_no_browser_globals': 'false',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared': 'false',
'node_shared_cares': 'false',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_bundled_v8': 'true',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'node_use_v8_platform': 'true',
'node_without_node_options': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'shlib_suffix': 'so.59',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 1,
'v8_enable_inspector': 1,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_promise_internal_field_count': 1,
'v8_random_seed': 0,
'v8_trace_maps': 0,
'v8_use_snapshot': 'true',
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk

root@devops:~/node-v9.1.0# make
root@devops:~/node-v9.1.0# make install

4# 查看安装后的node.js版本

执行命令如下:

#node --version

命令输出:

root@devops:~/node-v9.1.0# node --version
v9.1.0

卸载Node.js

你可以通过执行apt-get 命令来删除之前安装好的node.js工具,执行命令:

#apt-get remove nodejs

该命令在删除软件包后,依旧会保持node.js的配置文件,这样当你以后再次要安装node.js软件包后,可以被重复使用。 当然如果你删除所有的跟node.js相关的文件,可以执行下面的删除node.js的命令:

# apt-get purge nodejs

通过node.js 测试js脚本

首先创建一个新的js脚本test.js, 将下面的脚本内容添加到文件里。

# vim test.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:5800/');

执行node命令启动应用:

#node test.js

输出:

root@devops:~/node-v9.1.0# node test.js
Server running at http://127.0.0.1:5800/

99%的人还阅读了:

Ubuntu安装及配置SSH (12.04/14.04/16.04)

本文主要介绍如何在Ubuntu (12.04/14.04/16.04)系统上安装及配置SSH 服务器以及安装及配置SSH 客户端,这样我们就可以在客户端通过密钥加密过的安全的SSH协议来访问远程的SSH 服务器。 而我们在ubuntu系统或者常用的Linux系统下,主要通过SSH协议的开源的版本OPENSSH来实现加密的远程访问,以防止远程数据的泄露。

SSH是什么

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。摘自百度百科

OpenSSH 是什么

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。摘自百度百科

Ubuntu 安装OpenSSH 服务器端包

在ubuntu 14.04/16.04 系统下,其默认的软件源已经提供了基于SSH安全协议的开源版本OpenSSH的相关软件包。 在命令行下通过执行apt-get命令来安装OpenSSH 相关的软件包。

执行下面的命令:

$sudo apt-get install openssh-server

命令输出如下:

# apt-get install openssh-server
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
openssh-server 已经是最新版 (1:7.2p2-4ubuntu2.4)。
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 217 个软件包未被升级。

通过输出我们可以看到,系统在安装完成后,会默认安装OpenSSH server 软件包。

查看SSHD 服务运行状态

当OpenSSH server 软件包安装完成后,我们需要查看一下openSSH 的SSHD服务是否正常启动。

对于ubuntu 16.04 以上的版本,执行下面的命令:

#systemctl status sshd

命令输出如下:

root@devops:~# systemctl status sshd
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
Active: active (running) since 二 2018-03-27 21:30:24 CST; 2 days ago
Process: 21734 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCE
Main PID: 1153 (sshd)
CGroup: /system.slice/ssh.service
└─1153 /usr/sbin/sshd -D
3月 29 22:49:15 devops systemd[1]: Reloaded OpenBSD Secure Shell server.
3月 29 22:49:15 devops sshd[1153]: Server listening on 0.0.0.0 port 22.
3月 29 22:49:15 devops sshd[1153]: Server listening on :: port 22.
3月 29 22:49:15 devops systemd[1]: Reloading OpenBSD Secure Shell server.
3月 29 22:49:15 devops sshd[1153]: Received SIGHUP; restarting.
3月 29 22:49:15 devops systemd[1]: Reloaded OpenBSD Secure Shell server.
3月 29 22:49:15 devops sshd[1153]: Server listening on 0.0.0.0 port 22.
3月 29 22:49:15 devops sshd[1153]: Server listening on :: port 22.
3月 9 22:52:16 devops sshd[23590]: Accepted password for root from 192.168.1.2
3月 29 22:52:16 devops sshd[23590]: pam_unix(sshd:session): session opened for u
lines 1-18/18 (END)

对于14.04 或者12.04 版本的ubuntu系统,执行下面的命令:

#service ssh status

Ubuntu 安装OpenSSH 客户端包

如果要让服务器也作为客户端通过ssh协议访问远程的机器,那么还需要安装SSH的客户端必需的软件包。 执行下面的命令:

$sudo apt-get install openssh-client

命令输出如下:

root@devops:~# apt-get install openssh-client
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
openssh-client 已经是最新版 (1:7.2p2-4ubuntu2.4)。
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 217 个软件包未被升级。

Ubuntu 通过客户机远程访问SSH服务器

假如我们的远程SSH服务器主机名为osetc.com,用户名为admin, 那么你可以在命令行下执行下面的命令来远程通过ssh来访问服务器:

#ssh admin@osetc.com

之后会要求你输入远程服务器的密码,进行验证,通过后,就可以登录远程服务器了。

停止服务器SSHD服务

执行命令:

#/etc/init.d/ssh stop

或者

#systemctl stop sshd  (对于ubuntu 16.04)

启动服务器SSH服务

执行下面的命令:

#/etc/init.d/ssh start

或者

#systemctl start sshd (对于ubuntu 16.04)

重新启动服务器的SSHD 服务

执行下面的命令:

#/etc/init.d/ssh restart

或者

#systemctl  restart sshd

Ubuntu 系统下SSH 服务器配置

对于SSH 服务器,默认的配置文件为/etc/ssh/sshd_config, 我们可以通过文本编辑器vi 或vim来进行编辑。

执行命令:

#vi /etc/ssh/sshd_config

更改SSH 服务的默认端口号

如果想更改SSH服务的默认端口(22) 为其它的端口比如222,可以更改配置文件中的下面的行:

Port 22 –》 Port 222

更改SSH服务器最大的登录尝试次数

如果需要更改客户机登录远程服务器的尝试次数,也就是说 客户机使用了错误的用户名或密码尝试登录远程服务器进行验证的次数,如果超过设定的次数,就会自动退出连接请求。 那么可以添加下面的配置行到配置文件里:

MaxAuthTries  3

 


99%的人还阅读了:

Ubuntu 安装 PHP (5.6/7.0/7.1/7.2)

本文主要介绍如何在ubuntu 14.04/16.04 系统下安装不同版本的PHP软件包,比如PHP 5.6, PHP 7.0, PHP 7.1 and PHP 7.2. 通常情况下,在配置WEB服务器的时候,PHP 和其相关的软件包都是我们必需要安装的组件。

从Ubuntu 16.04 系统开始,官方镜像源里默认提供的PHP版本是7.0,而不是之前PHP5,所以我们只需要通过apt-get 命令直接安装php7.

当然,如果你的系统里已经安装了更高版本的php后,想再安装低版本的PHP,那么就需要先把高版本的PHP卸载掉。

Ubuntu 安装PHP 5.6

如果想在ubuntu系统里安装PHP 5.6 ,我们可以通过PPA来安装特定版本的PHP。 执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php5.6  -y

命令输出如下:

root@devops:~# apt-get install  python-software-properties
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
python-apt python-pycurl
建议安装:
python-apt-dbg python-apt-doc libcurl4-gnutls-dev python-pycurl-dbg
python-pycurl-doc
下列【新】软件包将被安装:
python-apt python-pycurl python-software-properties
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 206 个软件包未被升级。
需要下载 203 kB 的归档。
解压缩后会消耗 931 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 python-apt amd64 1.1.0~beta1ubuntu0.16.04.1 [139 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 python-pycurl amd64 7.43.0-1ubuntu1 [43.3 kB]
获取:3 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 python-software-properties all 0.96.20.7 [20.7 kB]
已下载 203 kB,耗时 0秒 (1,339 kB/s)
正在选中未选择的软件包 python-apt。
(正在读取数据库 ... 系统当前共安装有 291012 个文件和目录。)
正准备解包 .../python-apt_1.1.0~beta1ubuntu0.16.04.1_amd64.deb  ...
正在解包 python-apt (1.1.0~beta1ubuntu0.16.04.1) ...
正在选中未选择的软件包 python-pycurl。
正准备解包 .../python-pycurl_7.43.0-1ubuntu1_amd64.deb  ...
正在解包 python-pycurl (7.43.0-1ubuntu1) ...
正在选中未选择的软件包 python-software-properties。
正准备解包 .../python-software-properties_0.96.20.7_all.deb  ...
正在解包 python-software-properties (0.96.20.7) ...
正在设置 python-apt (1.1.0~beta1ubuntu0.16.04.1) ...
正在设置 python-pycurl (7.43.0-1ubuntu1) ...
正在设置 python-software-properties (0.96.20.7) ...

 

root@devops:~# add-apt-repository ppa:ondrej/php
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa
You can get more information about the packages at https://deb.sury.org
BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting
CAVEATS:
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/
WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
更多信息: https://launchpad.net/~ondrej/+archive/ubuntu/php
按回车继续或者 Ctrl+c 取消添加
gpg: 钥匙环‘/tmp/tmpoduum1hr/secring.gpg’已建立
gpg: 钥匙环‘/tmp/tmpoduum1hr/pubring.gpg’已建立
gpg: 下载密钥‘E5267A6C’,从 hkp 服务器 keyserver.ubuntu.com
gpg: /tmp/tmpoduum1hr/trustdb.gpg:建立了信任度数据库
gpg: 密钥 E5267A6C:公钥“Launchpad PPA for Ondřej Surý”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1  (RSA: 1)
OK
root@devops:~# apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
获取:9 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease [23.9 kB]
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:11 http://archive.ubuntu.com/ubuntu trusty Release
命中:13 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
获取:14 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 Packages [46.0 kB]
获取:15 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main i386 Packages [45.8 kB]
获取:16 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main Translation-en [26.5 kB]
已下载 142 kB,耗时 6秒 (22.3 kB/s)
正在读取软件包列表... 完成
root@devops:~#
root@devops:~# sudo apt-get install  php5.6  -y
sudo: 无法解析主机:devops
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5.6 libapr1
libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libpcre16-3
libpcre3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libssl1.1 php5.6-cli
php5.6-common php5.6-json php5.6-opcache php5.6-readline
建议安装:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom php-pear
下列【新】软件包将被安装:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5.6 libapr1
libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libssl1.1
php5.6 php5.6-cli php5.6-common php5.6-json php5.6-opcache php5.6-readline
下列软件包将被升级:
libpcre16-3 libpcre3 libpcre3-dev libpcre32-3 libpcrecpp0v5
升级了 5 个软件包,新安装了 17 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 9,640 kB 的归档。
解压缩后会消耗 25.5 MB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3 [86.0 kB]
获取:21 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 libapache2-mod-php5.6 amd64 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 [1,240 kB]
获取:22 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php5.6 all 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 [261 kB]
已下载 9,640 kB,耗时 1分 20秒 (119 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 libapr1:amd64。
(正在读取数据库 ... 系统当前共安装有 291064 个文件和目录。)
正准备解包 .../libapr1_1.5.2-3_amd64.deb  ...
正在解包 libapr1:amd64 (1.5.2-3) ...
...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 libpcre3:amd64 (2:8.41-4+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在选中未选择的软件包 apache2-bin。
(正在读取数据库 ... 系统当前共安装有 291099 个文件和目录。)
正准备解包 .../apache2-bin_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2-bin (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2-utils。
正准备解包 .../apache2-utils_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2-utils (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2-data。
正准备解包 .../apache2-data_2.4.18-2ubuntu3.6_all.deb  ...
正在解包 apache2-data (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2。
正准备解包 .../apache2_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2 (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 libssl1.1:amd64。
正准备解包 .../libssl1.1_1.1.0h-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 libssl1.1:amd64 (1.1.0h-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-common。
正准备解包 .../php5.6-common_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-common (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-json。
正准备解包 .../php5.6-json_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-json (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-opcache。
正准备解包 .../php5.6-opcache_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-opcache (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-readline。
正准备解包 .../php5.6-readline_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-readline (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-cli。
正准备解包 .../php5.6-cli_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-cli (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 libapache2-mod-php5.6。
正准备解包 .../libapache2-mod-php5.6_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 libapache2-mod-php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6。
正准备解包 .../php5.6_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_all.deb  ...
正在解包 php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
配置 “Nginx HTTP” 的规则已经升级
配置 “OpenSSH” 的规则已经升级
跳过重新加载防火墙
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在设置 apache2-utils (2.4.18-2ubuntu3.6) ...
正在设置 apache2-data (2.4.18-2ubuntu3.6) ...
正在设置 apache2 (2.4.18-2ubuntu3.6) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enbling module status.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
正在设置 libssl1.1:amd64 (1.1.0h-1+ubuntu16.04.1+deb.sury.org+1) ...
正在设置 php5.6-common (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
apache2_invoke: Enable module php5.6
正在设置 php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
配置 “Nginx HTTP” 的规则已经升级
配置 “OpenSSH” 的规则已经升级
跳过重新加载防火墙

查看已经安装的php 版本号

执行下面的命令:

#php –v

命令输出如下:

root@devops:~# php -v
PHP 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

从上面的命令输出,我们可以看到php5.6 已经被安装到了ubuntu 16.4 系统里。

Ubuntu 安装PHP 7.0

如果需要在ubuntu系统中安装php 7.0, 我们可以通过默认的ubuntu 镜像源和上面介绍PPA来进行安装。

方法一:通过ubuntu镜像源

执行下面的apt-get install  命令安装php 7.0:

$sudo apt-get install php7.0

命令输出如下:

root@devops:~# apt-get install php7.0
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-curl php7.0-json
php7.0-opcache php7.0-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-json php7.0-opcache
php7.0-readline
下列软件包将被升级:
php7.0-common php7.0-curl
升级了 2 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 213 个软件包未被升级。
需要下载 3,574 kB 的归档。
解压缩后会消耗 9,161 kB 的额外空间。
您希望继续执行吗? [Y/n]

方法二:通过PPA来安装PHP 7.0

执行下面的命令:

$sudo apt-get install  python-software-properties
$sudo add-apt-repository ppa:ondrej/php
$sudo apt-get update
$sudo apt-get install  php7.0  -y

Ubuntu 安装PHP 7.1

方法一:通过ubuntu镜像源安装php 7.1

执行下面的apt-get install  命令安装php 7.1:

$sudo apt-get install php7.1

命令输出如下:

root@devops:~# apt-get install php7.1
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.1 php7.1-cli php7.1-common php7.1-json php7.1-opcache
php7.1-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.1 php7.1 php7.1-cli php7.1-common php7.1-json
php7.1-opcache php7.1-readline
升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 3,705 kB 的归档。
解压缩后会消耗 14.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

方法二:通过PPA来安装PHP 7.1

执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php7.1  -y

Ubuntu 安装PHP 7.2

方法一:通过ubuntu镜像源安装php 7.2

当你在ubuntu 16.04 系统下,执行apt-get install php 的时候,系统会默认安装最新的php 7.2 版本。

执行下面的apt-get install  命令安装php 7.2:

$sudo apt-get install php

命令输出如下:

root@devops:~# apt-get install php
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.2 libargon2-0 libsodium23 php7.2 php7.2-cli
php7.2-common php7.2-json php7.2-opcache php7.2-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.2 libargon2-0 libsodium23 php php7.2 php7.2-cli
php7.2-common php7.2-json php7.2-opcache php7.2-readline
升级了 0 个软件包,新安装了 10 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 4,021 kB 的归档。
解压缩后会消耗 17.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

从命令的输出中我们可以看到在安装php软件包的时候,会安装跟php依赖的软件包,比如:

  • libapache2-mod-php7.2
  • libargon2-0
  • libsodium23
  • libssl1.1
  • php7.2-cli
  • php7.2-common
  • php7.2-json
  • php7.2-opcache
  • php7.2-readline

方法二:通过PPA来安装PHP 7.2

执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php7.2  -y

让我们来看下当前的php版本号,执行下面的命令:

#php –v

命令输出如下:

root@devops:~# php -v
PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar  6 2018 11:18:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Ubuntu下多PHP 版本切换

如果在ubuntu系统中安装了多个版本的php,那么我们也可以通过下面的命令来切换当前系统默认使用的php版本。

假如当前系统安装了php 5.6 和php7.2.

设置当前默认的php版本为5.6,执行下面的命令:

# update-alternatives  --set php /usr/bin/php5.6

命令输出如下:

root@devops:~# update-alternatives  --set php /usr/bin/php5.6
update-alternatives: 使用 /usr/bin/php5.6 来在手动模式中提供 /usr/bin/php (php)

root@devops:~# php -v
PHP 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

设置当前默认的php版本为7.2,执行下面的命令:

# update-alternatives  --set php /usr/bin/php7.2

命令输出如下:

root@devops:~# update-alternatives  --set php /usr/bin/php7.2
update-alternatives: 使用 /usr/bin/php7.2 来在手动模式中提供 /usr/bin/php (php)

root@devops:~# php -v
PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar  6 2018 11:18:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

99%的人还阅读了:

Ubuntu 安装 Nginx (12.04/14.04/16.04)

本文主要介绍如何在Ubuntu (12.04/14.04/16.04)系统上安装当前相当流行的web 服务器Nginx. 越来越多的商业应用已经将web服务器从Apache转到Nginx. 因为Nginx服务会比Apache 服务器更加节省系统资源,而且也可以用来做反向代理服务器。

Nginx 是什么

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 -来自百度百科

Ubuntu 下安装配置Nginx

1# 安装nginx软件包

在ubuntu命令行下,可以通过执行apt-get命令来安装nginx相关的包,执行下面的命令:

$sudo apt-get update
$sudo apt-get install nginx

命令输出如下:

root@devops:~# sudo apt-get update
sudo: 无法解析主机:devops
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
忽略:8 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:9 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
命中:11 http://archive.ubuntu.com/ubuntu trusty Release
正在读取软件包列表... 完成
root@devops:~# apt-get install nginx
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
nginx-common nginx-core
建议安装:
fcgiwrap nginx-doc
下列【新】软件包将被安装:
nginx nginx-common nginx-core
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 207 个软件包未被升级。
需要下载 458 kB 的归档。
解压缩后会消耗 1,482 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 nginx-common all 1.10.3-0ubuntu0.16.04.2 [26.6 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 nginx-core amd64 1.10.3-0ubuntu0.16.04.2 [428 kB]
获取:3 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 nginx all 1.10.3-0ubuntu0.16.04.2 [3,490 B]
已下载 458 kB,耗时 0秒 (1,540 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 nginx-common。
(正在读取数据库 ... 系统当前共安装有 290959 个文件和目录。)
正准备解包 .../nginx-common_1.10.3-0ubuntu0.16.04.2_all.deb  ...
正在解包 nginx-common (1.10.3-0ubuntu0.16.04.2) ...
正在选中未选择的软件包 nginx-core。
正准备解包 .../nginx-core_1.10.3-0ubuntu0.16.04.2_amd64.deb  ...
正在解包 nginx-core (1.10.3-0ubuntu0.16.04.2) ...
正在选中未选择的软件包 nginx。
正准备解包 .../nginx_1.10.3-0ubuntu0.16.04.2_all.deb  ...
正在包 nginx (1.10.3-0ubuntu0.16.04.2) ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在设置 nginx-common (1.10.3-0ubuntu0.16.04.2) ...
正在设置 nginx-core (1.10.3-0ubuntu0.16.04.2) ...
正在设置 nginx (1.10.3-0ubuntu0.16.04.2) ...
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...

这样我们已经安装好Nginx服务区所需要的软件包。

2# 配置防火墙,开启http访问

在ubuntu系统里,配置防火墙的命令是ufw,首先我们可以查看下ufw配置列表,执行命令如下:

$sudo ufw app list

命令输出如下:

root@devops:~# ufw app list
可用应用程序:
CUPS
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

从上面的输出,我们可以考到通过ufw工具可以控制的应用程序的防火墙设置。

配置说明如下:

  • Nginx Full –可以可以打开Nginx web服务器所需要的80 和443 端口号
  • Nginx HTTP – 这个配置用来打开Http端口号80,允许通过80端口访问web服务
  • Nginx HTTPS – 只打开HTTPS端口号443.

通过执行下面的命令来开启HTTP端口,添加防火墙策略:

$ sudo ufw allow ‘Nginx HTTP’

命令输出如下:

root@devops:~# ufw allow 'Nginx HTTP'
防火墙规则已更新
规则已更新(v6)

查看防火墙状态

执行下面的命令:

$sudo ufw status

命令输出如下:

root@devops:~# ufw status
状态: 激活

至                          动作          来自
-                          --          --
Nginx HTTP                 ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

从上面的输出我们可以看到HTTP 端口允许来自任何主机的访问请求。

3# 查看Nginx服务的状态

当我们安装完Nginx软件包后,会自动开启Nginx服务,执行下面的命令查看服务是否正常启动:

#systemctl status nginx

命令输出如下:

root@devops:~# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2018-03-27 21:52:10 CST; 14min ago
Main PID: 2482 (nginx)
CGroup: /system.slice/nginx.service
├─2482 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
└─2484 nginx: worker process
3月 27 21:52:09 devops systemd[1]: Starting A high performance web server and a reverse proxy server...
3月 27 21:52:10 devops systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
3月 27 21:52:10 devops systemd[1]: Started A high performance web server and a reverse proxy server.

从输出看到状态是Active, 说明已经正常启动。

4# 查看是否能够通过web页面正常访问

在浏览器里输入Nginx服务器的网络地址,查看Nginx页面是否能够正常显示。

ubuntu 安装nginx 1

5# 将nginx服务加到自启动里

如果想让系统重启后能够自动启动Nginx服务,可以执行下面的命令来开启开机自动启动。

#systemctl enable nginx

命令输出如下:

root@devops:~# systemctl enable nginx
Synchronizing state of nginx.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable nginx

6# Nginx 服务重启/停止/启动

如果需要启动Nginx服务,执行命令:

#systemctl  start nginx

如果要停止Nginx 服务,执行命令如下:

#systemctl stop nginx

如果需要重新启动Nginx服务,执行命令:

#systemctl restart nginx

Nginx 服务器的主配置是/etc/nginx/nginx.conf,如果需要修改nginx的变量值,可以编辑这个文件。

Nginx服务器的日志文件为/var/log/nginx/access.log 和 /var/log/nginx/error.log 错误日志文件。

ubuntu nginx php-fpm 安装

执行apt-get命令来安装php-fpm,如下:

#apt-get install php5-fpm

99%的人还阅读了:

Linux 删除文件的特定行(第一行,前n行,最后一行)

当我们编辑文件的时候时候,我们通过可以vi/vim编辑器删除文件中的特定行,比如删除第一行或者删除最后行或者符合某个模式的行。 但是如何在shell脚本里来删除特定的符合条件的行呢。 这时候,我们可以使用linux下强大的文本处理工具sed。 我们可以通过该命令删除指定的行,或者通过sed命令提供的正则表达式,来查找符合模式匹配的行,然后将其删除。

删除文件的第一行

如果要删除文件的行,并将其立即应用到源文件,在sed命令里需要使用-i 选项,否则,只是将删除文件内容显示出来,但不会真正的删除文件的内容。 执行下面的命令:

# sed -i '1d' fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line3  c

root@devops:~/osetc# sed -i '1d' fio.txt

root@devops:~/osetc# cat fio.txt
line2  b
line3  c

删除文件的最后一行

通过sed命令删除文件里的最后一行,和上面的删除行的命令类似,都是需要-i选项,并结合d选项进行删除操作,但需要指定要删除行的行号,最后一行可以用$来表示,执行下面命令:

# sed -i '$d' fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line3  c

root@devops:~/osetc# sed -i '$d' fio.txt

root@devops:~/osetc# cat fio.txt
line1  a
line2  b

删除文件中指定行

通过上面的两个例子,我们应该知道要删除特定行号的行,只需要将行号跟着d命令的前面即可,比如要删除第3行的内容,可以执行下面的命令:

# sed -i '3d' fio.txt

删除包含特定字符的行

如果你想删除包含特定字符的行,只要通过sed命令的模式匹配部分指定特定字符,然后通过d命令将其删除。

比如要删除包含line2的行,执行下面的命令:

# sed -i '/line2/d' fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line3  c

root@devops:~/osetc# sed -i '/line2/d' fio.txt

root@devops:~/osetc# cat fio.txt
line1  a
line3  c

在文件中增加一行内容

我们可以通过sed命令在特定的某行后面增加新行,比如要在包含line1的行后增加一行“line2   b”, 执行下面的命令:

# sed -i '/line1/a line2  b' fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
line1  a
line3  c

root@devops:~/osetc# sed -i '/line1/a line2  b' fio.txt

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line3  c

root@devops:~/osetc#

在文件中替换特定的行

如果想把文件中的包含line3的行中line3 字符串替换成line4, 可以通过sed工具下的s命令来实现,执行下面的命令:

# sed -i 's/line3/line4/g' fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line3  c

root@devops:~/osetc# sed -i 's/line3/line4/g' fio.txt

root@devops:~/osetc# cat fio.txt
line1  a
line2  b
line4  c

从上面的例子我们可以看到sed是一个非常易用好用的linux文本行处理工具。


99%的人还阅读了:

Linux下通过grep命令恢复被删文件的内容

我们之前已经介绍了在linux下通过构建一个类似于windows的回收站来恢复被删除的文件。 今天我们再来介绍一个通过grep命令来恢复被删除文件的内容的方法。 我们都知道,当linux的删除命令rm执行删除文件操作后,文件数据并没有从磁盘存储上移除,所以只要文件内容没有被覆盖掉,文件内容依然有被恢复的可能性。

因为linux下一切数据皆以文件的形式存放,依旧是说磁盘设备也是以文件的形式存在。所以我们可以通过grep命令来过滤查找出我们删除文件的内容,并将其重定向到另一个文件里,这也也就能达到恢复文件的目的。

1# 确定根目录所在的磁盘

执行命令:

#mount | grep sda

命令输出如下:

root@devops:~/osetc# mount | grep sda
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

2# 删除文件

执行rm命令:

#rm fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
delete line 1
delete line 2
delete line 3
delte line 4
delete line 5

root@devops:~/osetc# rm fio.txt

3# 通过grep命令恢复被删除文件fio.txt 的内容到recovery.txt里

执行下面命令:

#grep -a -B 10 -A 10 'delete line 1' /dev/sda1 >recovery.txt

参数介绍

-a 将二进制文件作为普通文件看待

-B, –before-content 过滤出指定模式串之前的特定数目的行

-A, –after-content 过滤出指定模式匹配之后的特定数目的行


99%的人还阅读了:

Linux 快速删除百万级文件(rsync命令)

当我们想在linux下删除文件的时候,我们会想到通过rm命令来进行删除操作。 而当我们要删除的文件很多的时候,我们会遇到“/bin/rm: Argument list too long“的问题,上一篇文章我们已经介绍了通过find命令或者xargs命令或者自定义shell脚本的方法来避免这种错误。但是如果你想删除几十万或者上百万的文件的话,如果使用之前介绍的方法,效率会很低,删除所需要的时间也会很长。本文会介绍一种通过rsync命令来快速删除大批量文件的方法,并与之前的find命令结合rm命令删除文件的方法进行比较。

Find命令结合rm 命令删除文件

假如要删除当前目录下的上百万个文件(下面的例子以删除1000个文件做比较),执行下面的命令,并通过time命令来查看find /rm命令组合删除文件所需要的时间, 执行命令如下:

#time find  ./ -name * --exec rm –rf {} \;

命令输出如下:

root@devops:~/osetc# time find  ./ -name "*.txt" -exec rm  {} \;

real    0m0.543s

user    0m0.475s

sys     0m0.062s

通过rsync 命令快速删除百万级文件

首先要创建一个空的目录文件,执行命令:

#mkdir   /root/tmp

再通过rsync命令删除当前目录下的大批量文件,执行下面的命令:

#time rsync --delete-before -a -H --stats /root/tmp/  ./

命令输出如下:

root@devops:~/osetc# time rsync --delete-before -a -H --stats /root/tmp/  ./
Number of files: 1 (dir: 1)
Number of created files: 0
Number of deleted files: 1,002 (reg: 1,001, dir: 1)
Number of regular files transferred: 0
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total byes sent: 47
Total bytes received: 13,942
sent 47 bytes  received 13,942 bytes  27,978.00 bytes/sec
total size is 0  speedup is 0.00


real    0m0.058s
user    0m0.013s
sys     0m0.022s
root@devops:~/osetc#

从上面两个命令输出的执行时间,我们可以看到find命令运行时间是rsync命令删除文件所需要时间的9倍之多。故而,如果以后我们有这种删除百万级别的文件操作的时候,可以考虑使用rsync命令。


99%的人还阅读了:

Linux 下/bin/rm: Argument list too long 解决方法(最全)

本文将会通过不同方法来解决在Linux命令行下通过rm命令删除大批量文件的时候遇到的“Argument list too long”的问题。 因为linux命令对传入的参数个数有限制,所以超过限制的时候,系统就会输出参数过长的问题。

查看命令行参数允许的长度大小

执行命令如下:

#getconf ARG_MAX

命令输出如下:

root@devops:~# getconf ARG_MAX
2097152

通过AWK命令结合RM命令来删除大批量文件

当通过rm命令直接删除大批量文件的时候,系统会报错,那么可以将rm命令结合AWK命令来进行删除操作,避免“/bin/rm: Argument list too long”的问题。

例如要删除当前目录下所有文件,执行下面命令:

# ls -l |awk '{print "rm -rf" , $9}'| sh

命令输出如下:

root@devops:~/osetc# ls -l
总用量 24
-rw-r--r-- 1 root root 24202 3月  18 23:30 fio1.txt
-rw-r--r-- 1 root root     0 3月  24 23:53 fio.txt

root@devops:~/osetc# ls -l |awk '{print "rm -rf" , $9}'| sh
root@devops:~/osetc# ls -l
总用量 0

通过xargs命令结合rm命令删除大批量文件

我们可以通过执行ls命令将要删除命令列出,并将其输出通过管道符传给xargs命令,然后再调用rm命令来删除传过来的文件,进而解决 “/bin/rm: Argument list too long”的问题。执行命令如下:

# ls | xargs rm -rf

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio.txt
root@devops:~/osetc# ls | xargs rm -rf
root@devops:~/osetc# ls

通过find命令结合xargs命令来删除大批量文件

我们也可以通过find命令查找要删除的文件,然后将查找到的文件传给xargs命令,并通过rm命令删除,这样也可以解决“/bin/rm: Argument list too long”的问题。

执行下面的命令:

# find ./ -name "*.txt" | xargs rm -rf

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio.txt

root@devops:~/osetc# find ./ -name "*.txt" | xargs rm -rf
root@devops:~/osetc# ls
root@devops:~/osetc#

通过自定义shell脚本来删除大批量文件

我们也可以通过自己编写一个shell 脚本来实现大批量文件的删除,比如通过for循环来删除每个文件,这也就可避免““/bin/rm: Argument list too long”的问题。

要执行的脚本如下:

#!/bin/bash

DIR='/root/osetc'  # 指定要删除的文件的目录
cd $DIR   # 切换目录到指定删除文件的目录
for I in `ls`
do      #将ls命令的输出传给for循环
    rm -rf $I
done

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio.txt

root@devops:~# vi delF.sh

root@devops:~# chmod u+x delF.sh

root@devops:~# ./delF.sh

root@devops:~# ls /root/osetc/
root@devops:~#

99%的人还阅读了:

5 种Linux下清空大文件的方法(删除大文件内容)

本文将会讲述如何在linux系统下清空大文件或者说删除大文件内容的5种不同的方法。 当我们想要清空一个大文件里的内容的时候,我们通常会通过vi编辑器打开这个文件,然后将其内容删除,但是如果文件内容太多,或者文件太大的话,打开文件有可能会很慢或者清空文件的内容会很费时间。 下面我们将会介绍5种简单易用的清空文件的内容的方法呢?

通过重定向来清空文件内容

在linux清空普通文件内容尤其是大文件内容,最简单的方法是通过重定向来实现, 比如要清空当前目录下的大文件fio.txt 内容,执行下面的命令:

# > fio.txt

命令输出如下:

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1.0G 3月  24 23:35 fio.txt

root@devops:~/osetc# >fio.txt

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 0 3月  24 23:36 fio.txt

 通过true命令重定向清空文件

通过true命令的输出结果重定向到指定要清空的大文件里,执行命令如下:

#true > fio.txt

命令输出如下:

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1.0G 3月  24 23:42 fio.txt

root@devops:~/osetc# true > fio.txt

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 0 3月  24 23:42 fio.txt

通过cat /dev/null 设备重定向来清空文件内容

Linux 下的/dev/null 文件是一种特设的设备文件,该命令可以将任何写入其中的数据丢弃掉。 我们可以将该空设备的输出重定向到要清空的大文件里,就可。 执行下面的命令:

#cat /dev/null > fio.txt

命令输出如下:

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1.0G 3月  24 23:42 fio.txt

root@devops:~/osetc# true > fio.txt

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 0 3月  24 23:42 fio.txt

通过echo命令清空文件内容

使用echo命令将一个空字符串重定向到指定的文件,也可以将该文件清空。

执行命令:

#echo “ “ > fio.txt

命令输出如下:

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1.0G 3月  24 23:50 fio.txt

root@devops:~/osetc# echo "" >fio.txt

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1 3月  24 23:51 fio.txt

通过truncate 命令清空内容

通过linux下truncate命令将指定的文件大小缩小到给定的大小,比如大小为0,这样就达到清空文件的内容的目的。

执行下面的命令:

#truncate –s 0 fio.txt

命令输出如下:

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 1.0G 3月  24 23:53 fio.txt

root@devops:~/osetc# truncate -s 0 fio.txt

root@devops:~/osetc# ls -alh fio.txt
-rw-r--r-- 1 root root 0 3月  24 23:53 fio.txt

root@devops:~/osetc#

99%的人还阅读了: