linux下解压rar格式的文件 Linux

linux下一般都是tar和zip的,如果下载到的文件是rar格式的话.我们就需要另外安装rar解压缩软件来支持了.下面简记一下

首先从rarlab官网的下载页面找到你所对应的版本.32位或者是64位的linux版本.

https://www.rarlab.com/download.htm

我这里以64位的作为例子.

在命令行里面使用wget直接下载:

wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz 

然后解压:

tar zxvf rarlinux* 或者是准确的使用Tab键补全. tar zxvf rarlinux-x64-5.5.0.tar.gz

然后cd进入rar目录进行编译安装

cd rar 

make

make install

root@kali:~# cd rar
root@kali:~/rar# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
root@kali:~/rar# make install
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

这时候使用rar 命令会提示你它的使用方法.常见使用方法如下:

解压缩一个file.rar 命令: rar x file.rar

压缩一个文件: rar a file2.rar ./test (将当前目录下的test文件夹压缩为file2.rar)

其他具体命令请使用rar查看.

PS:上篇文章的命令行下载工具里,axel 对于允许同时多线程下载的特别有用,wget 更适合下载只允许单线程的...


admin 发布于  2017-10-21 12:50 

Linux 下十大命令行下载工具(转) Linux

我们一想到Linux,肯定会想到黑白终端,真正的Linux用户总是偏爱从终端来进行工作,哪怕是用于下载。相比某种GUI工具,命令行下载工具可以帮助用户更迅速地从网上下载任何东西。有许多可满足一般用途、甚至用于torrent的下载工具,不过相比其它工具,只有像curl或者wget这少数几款工具更受欢迎。我们在本教程中将探讨用于在Linux环境中下载的十大命令行工具。不妨逐一探讨这些CLI工具。

1.Wget

这是最有名的工具,可用于通过CLI下载。这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个连接问题后,可以重新尝试下载,你甚至可以管理最大的下载带宽。
例子
从网上下载某个示例文件:

# wget http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

示例输出:

--2016-05-11 16:56:23-- http://www.sample- 

 videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 

Resolving www.sample-videos.com (www.sample-videos.com)... 

166.62.28.98 

Connecting to www.sample-videos.com (www.sample- 

videos.com)|166.62.28.98|:80... connected. 

HTTP request sent, awaiting response... 200 OK 

Length: 1055736 (1.0M) 

Saving to: big_buck_bunny_720p_1mb.mp4 

100%[==========================================================================================================>] 10,55,736 52.1KB/in 24s 

2016-05-11 16:56:47 (43.4 KB/s) - big_buck_bunny_720p_1mb.mp4 saved [1055736/1055736]

后台下载文件:

# wget -b http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

如果互联网连接出现中断,恢复下载。

# wget -c http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

从某个密码保护的ftp软件库下载文件。

# wget --ftp-user=<user_name> --ftp-password=<Give_password> Download-url-address

 

2.Curl

Curl是另一种高效的下载工具,它可以用来上传或下载文件,只要使用一个简单的命令。它支持暂停和恢复下载程序包,并支持数量最多的Web协议,可预测下载完成还剩余多少时间,可通过进度条来显示下载进度。它是所有Linux发行版的内置工具。这是一款快速高效的工具,不妨看一下。

例子: 

# curl -o um.mp4 http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

示例输出:

% Total % Received % Xferd Average Speed Time Time Time Current 

Dload Upload Total Spent Left Speed 

100 1030k 100 1030k 0 0 105k 0 0:00:09 0:00:09 --:--:-- 111k

借助-o选项,提供名称,下载文件会以该名称保存;如使用-O选项,文件就会以原始名称保存。

# curl -O http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 

使用一个curl命令,下载多个文件。

# curl -O http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4 -O

3.Axel

这是wget的出色替代者,是一款轻量级下载实用工具。它实际上是个加速器,因为它打开了多路http连接,可下载独立文件片段,因而文件下载起来更快速。

安装

# apt-get install axel

例子

# axel http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 

Initializing download: http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

示例输出:

File size: 1055736 bytes  

 Opening output file big_buck_bunny_720p_1mb.mp4.0  

 Starting download  

[ 0%] .......... .......... .......... .......... .......... [ 64.9KB/s] 

[ 4%] .......... .......... .......... .......... .......... [ 83.0KB/s] 

[ 9%] .......... .......... .......... .......... .......... [ 91.5KB/s] 

[ 14%] .......... .......... .......... .......... .......... [ 96.8KB/s] 

[ 19%] .......... .......... .......... .......... .......... [ 100.2KB/s] 

[ 24%] .......... .......... .......... .......... .......... [ 102.7KB/s] 

[ 29%] .......... .......... .......... .......... .......... [ 104.6KB/s] 

[ 33%] .......... .......... .......... .......... .......... [ 86.9KB/s] 

[ 38%] .......... .......... .......... .......... .......... [ 77.1KB/s] 

[ 43%] .......... .......... .......... .......... .......... [ 64.8KB/s] 

[ 48%] .......... .......... .......... .......... .......... [ 66.8KB/s] 

[ 53%] .......... .......... .......... .......... .......... [ 72.8KB/s] 

[ 58%] .......... .......... .......... ..... 

Connection 1 finished 

,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,..... .......... [ 74.1KB/s] 

[ 63%] .......... .......... .......... .......... .......... [ 79.8KB/s] 

[ 67%] .......... .......... .......... .......... .......... [ 84.5KB/s] 

[ 72%] .......... .......... ..... 

Connection 2 finished 

,,,,,,,,, ,,,,,,,,,, ,,,,,..... .......... .......... [ 86.3KB/s]  

[ 77%] .......... .......... .......... .......... .......... [ 91.6KB/s] 

[ 82%] .......... .......... .......... .......... .......... [ 96.7KB/s] 

[ 87%] .......... .......... .......... .......... .......... [ 101.6KB/s] 

[ 92%] .......... .......... .......... ... 

Connection 0 finished 

,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,....... .......... [ 105.9KB/s]  

[ 96%] .......... .......... .......... 

Downloaded 1031.0 kilobytes in 9 seconds. (108.66 KB/s)

4.Youtube-dl

这是一款专用工具,可以通过命令行从YouTube下载视频,这是个易于安装的程序包,可用来下载一大批文件。

安装

  1. # curl https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl 

变更文件权限:

  1. # sudo chmod a+rx /usr/local/bin/youtube-dl 

例子

下载一些视频,只要为命令添加视频URL参数。

  1. # youtube-dl https://www.youtube.com/watch?v=UZW2hs-2OAI 

想下载视频列表,将所有URL拷贝到一个文本文件中,然后运行下面这个命令:

    1. # youtube-dl -<name_of_your_text_file.txt> 

示例输出:

  1. virtual-System-Product-Name prozilla-2.0.4-master # youtube-dl -a url.txt 
  2. [youtube] xEf8A7X53YE: Downloading webpage 
  3. [youtube] xEf8A7X53YE: Downloading video info webpage 
  4. [youtube] xEf8A7X53YE: Extracting video information 
  5. [youtube] xEf8A7X53YE: Downloading MPD manifest 
  6. [download] Destination: EIC Outrage - Salute to Indian Athletes!-xEf8A7X53YE.mp4 
  7. [download] 3.9% of 70.87MiB at 82.53KiB/s ETA 14:04 

5.Aria2

这是一种开源命令行下载加速器,支持多个端口,你可以使用最大带宽来下载文件,是一款易于安装、易于使用的工具。

安装

  1. # apt-get install aria2 
  2. ### 针对centOS 
  3. # yum install aria2

例子

  1. # aria2c http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

示例输出:

  1. [#28c7dd 0.9MiB/1.0MiB(93%) CN:1 DL:70KiB ETA:1s] 
  2. 05/11 23:06:47 [NOTICE] Download complete: 
  3. /home/virtual/Desktop/prozilla-2.0.4-master/big_buck_bunny_720p_1mb.mp4 
  4. Download Results: 
  5. gid |stat|avg speed |path/URI 
  6. ======+====+===========+======================================================= 
  7. 28c7dd|OK | 72KiB/s|/home/virtual/Desktop/prozilla-2.0.4-master/big_buck_bunny_720p_1mb.mp4 
  8. Status Legend: 
  9. (OK):download completed.

6.Movgrab

这是用于下载视频的另一款高效工具,使用movgrab的优点在于,它不仅可以从YouTube下载视频,还可以从几乎所有的知名网站下载视频,比如metacafe、dailiymotion、 ehow和vobx等。这是一款很快速的工具,可以定义影片格式,还可以恢复下载。

安装

可以从该链接下载程序包。

解压缩程序包:

  1. # tar -xvf movgrab-1.2.1.tar.gz 
  2. # cd movgrab-1.2.1 
  3. # ./configure 
  4. # make 
  5. # make install

使用命令下载程序包

下载名称指定的文件:

  1. # movgrab Youtube_url 

指定输出文件:

  1. # movgrab -o example.mp4 video_url 

使用maovgrab –h,即可了解更多的细节。

7.rtorrent

这种知名的命令行torrent客户软件随附在所有Linux发行版中,它需要screen实用工具才能正常运行。

安装

安装screen:

  1. # apt-get install screen 

安装rtorrent :

  1. # apt-get install rtorrent 

例子

  1. # rtorrent example.torrent

  

8.ctorrent

C-torrent是最简单的命令行torrent下载工具,可以迅速安装,也是micro-torrent或utorrent的优秀替代者。

安装

  1. # apt-get install ctorrent 

例子

我们不妨下载一份最新版本的Ubuntu server 16.04。

  1. # ctorrent ubuntu-16.04-server-amd64.iso.torrent

使用ctorrent –h,即可了解更多选项。

9.Transmission-cli

Transmission的这个命令行版本是一款非常强大的工具,可用于下载torrent。易于安装,它需要screen这个依赖项。

安装

  1. # apt-get install transmission-cli transmission-daemon transmission-common 

安装screen

  1. # apt-get install screen 

例子

  1. # screen -/usr/bin/transmission-cli -25000 ubuntu-16.04-server-amd64.iso.torrent

10.vuze

这是一种全面的torrent下载解决方案,占用资源极少,是功能最强大的torrent应用程序之一,它需要Java才能在控制台上运行,所以确保你已将open jdk的jre安装到系统上,它同样需要screen程序包。

安装

可以直接从该链接下载,下载后解压缩程序包。

  1. # tar -xvf VuzeInstaller.tar.bz2  
  2. # cd vuze

有一些依赖项必须下载,从该链接获取必要的插件。

将这些.jar插件拷贝到vuze目录:

  1. # cp *.jar vuze 

运行下面这个命令:

  1. # java -cp "Azureus2.jar:commons-cli.jar:log4j.jar" org.gudy.azureus2.ui.common.Main --ui=console

上述命令成功执行后,运行下面这个命令来启动

  1. # screen java -jar Azureus2.jar --ui=console

使用help命令,给add命令添加上.torrent文件的路径,即可开始下载。 

结束语

相比基于GUI的torrent或下载管理器,命令行工具来得更高效而快速。这些工具在无外设服务器中扮演重要角色,可以控制慢速互联网连接中的带宽使用。

请尽情享用!

原文链接:http://www.unixmen.com/top-10-command-line-tools-downloading-linux/

标签: Linux 下载

admin 发布于  2017-10-21 11:36 

linux使用问题处理小计(勿入) Linux

在ubuntu10.10下没有dig命令,而debian6下面有这个命令
ubuntu下想要apt-get安装,发现没有找到dig软件包
搜索后才发现正确安装是安装dnsutils

apt-get install dnsutils

PS:redhat系列这样安装

yum install bind-utils


看看dig命令大多时候如何可以取代nslookup的:

www@www:~# dig www.google.com

; <<>> DiG 9.9.5-9+deb8u14-Debian <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19569
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 164 IN A 216.58.194.196

;; Query time: 1 msec
;; SERVER: 108.61.10.10#53(108.61.10.10)
;; WHEN: Thu Oct 05 17:21:52 CST 2017
;; MSG SIZE rcvd: 59

只输出mx记录,简明使用
dig mx www.google.com +short
只输出NS记录
dig ns www.google.com
查询SOA( Start of Autority ) 返回主DNS服务器
dig soa www.google.com
指定dns,例如查询8.8.8.8中的www.google.com记录
dig +short @8.8.8.8 www.google.com
大部分的时候dig最下面显示了查询所用的时间及DNS服务器,时间,数据大小。DNS超时时间为30秒,查询时间对于排查DNS问题很有用。

;; Query time: 1 msec
;; SERVER: 108.61.10.10#53(108.61.10.10)
;; WHEN: Thu Oct 05 17:21:52 CST 2017
;; MSG SIZE rcvd: 59

nginx提示Failed to read PID from file /run/nginx.pid:

在centos7上,配置nginx代理服务后:
systemctl status nginx.service

提示错误:
Failed to read PID from file /run/nginx.pid: Invalid argument

看到好多说删掉改nginx.pid 文件的,试之,无效。

后来找到了一个方法:

mkdir -p /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf

然后:
systemctl daemon-reload
systemctl restart nginx.service

解决了问题。

标签: Linux nginx

admin 发布于  2017-10-5 17:17 

emlog在nginx下设置伪静态的方法 emlog

今天把停了半年的博客又重新放出来了.换了个机器,故环境变了,不是apache了,之前的.htaccess配置在nginx下就没用了.所以就重新找到了方法,记录一下在nginx下设置emlog的伪静态规则:

引入自定义emlog伪静态nginx规则文件。假如没有emlog.conf文件,你可以在nginx配置文件夹里新建一个emlog.conf文件。内容如下:

location / {
        index index.php index.html;
        if (!-e $request_filename)
        {
                rewrite ^/(.+)$ /index.php last;
        }
}

然后我们在nginx.conf引入这个伪静态规则即可.include emlog.conf;
然后重启nginx,service nginx reload .


admin 发布于  2017-9-17 19:56 

去掉linux文件中^M符号方法汇总 技术文章

在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致, 
对于回车符的定义: 
windows:0D0A 
unix\linux: 0A 
MAC: 0D 
比较快捷的去除这些符号的方法有这么几种: 
(1)是用VI的命令: 
    使用vi打开文本文件 
    vi dos.txt 
    命令模式下输入 
    :set fileformat=unix 
  :w 
(2) VI下使用正则表达式替换 
   g/\^M/s/\^M// 
    或者 
   %s/^M//g 
(3)使用sed 工具 
    sed ’s/^M//’ filename > tmp_filename 
(4)既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现: 
    tr -d '\r' 
(5)最后一个方法是本人最常用的方法,个人觉得最方便 
    在终端下敲命令: 
    $ dos2unix filename 
    直接转换成unix格式,就OK了!~  
ps:需要安装dos2unix.以centos为例:
sudo yum install dos2unix -y
其他平台参照相应命令安装即可食用.

标签: 分享 Linux

admin 发布于  2017-5-11 22:34 

利用grep,cut,awk处理一些文本的简记 Linux

先来案例一波:

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。


假设我们有一段需要处理的文本内容如下所示(数量几万行,手工别说了,先使用替换命令将|替换成空格):

[email protected]:cory0212
[email protected]:morris409
[email protected]:marigold
[email protected]:jeffrey2
[email protected]:123q123q | 
[email protected]:dinosaur52197 | 
[email protected]:goblue20 | 
[email protected]:Recon1234 | 
[email protected]:32gunz32 | Premium
[email protected]:happily1 | 
[email protected]:susana123 | 
[email protected]:silvia231106 | Standard
[email protected]:hockey30 | 
[email protected]:KtnM990175 | Basic
[email protected]:arturs2000 | 

我们需要从上面这段文本里面提取分离出邮箱和冒号后面竖线|之间的这两部分.如何操作呢?

首先  提取邮箱,我们可以使用grep来配合正则表达式直接提取邮箱,邮箱提取很简单.只需要一条命令:

grep -E -o '([a-zA-Z0-9_\-\.\+]+)*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}' xxx.txt  >> goodmail.txt



注:说明一下,使用 grep 的 -o 和 -E 选项进行正则的精确匹配,其中 -o 表示“only-matching”,即“仅匹配”之意。光用它不够,配合 -E 选项使用扩展正则表达式则威力巨大。哈哈,精准,迅速.快狠准!(命令中的xxx.txt问需要处理的文本,>> 表示追加到后面的 goodmail.txt,如果没有则自动创建此文件,如果需要使用grep)命令多次提取同一类型的字符,请使用单大于符号 > ,表示覆盖.写这些,纯粹是为了小白,我自己就是-_-|)

那么,,我们使用cut 来提取邮箱,也很容易的,先来看看cut命令的介绍:


cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
(1)其语法格式为:
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数 -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f  :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

在这里,我们只需要一条命令就可以搞定提取邮箱了,直接提取冒号前面的就行,冒号就是界定符.

cut -d ':' -f 1 xxx.txt >> goodmail.txt

那如何提取邮箱后面的字符呢?


cut -d ':' -f 2 xxx.txt >> goodpwd_bad.txt

说明一下,但是没有第二个冒号,那么cut命令发现没有第二个冒号,那么就会使用默认的换行符,即在第一个冒号后的第一个换行符,那么邮箱后面的就取到了.但是因为这个文本并不是标准格式化的,后面还有一些 类似下面的格式 两个单词之间有空格,而我们只需要前面第一个部分.

frdbcgl9676  Standard
archie2002  
beaver92  Premium
bethany7  Standard
webbera1  
thunder00

这就简单了,在次在此基础上进行cut操作即可:

cut -d ' ' -f 1 goodpwd_bad.txt  > goodpwd.txt
#注意,两个单引号之间是个空格,并非就是两个单引号凑一起.

如果用awk来处理,稍稍复杂,这需要你会计算两个字符之间的长度,对于像我这种的不规则的,很不好下手...下面简单的举个例子:

echo abcdefghelloword | awk -v head="ab" -v tail="fg" '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}'
#以上关键是计算出开头标记"ab",和结束标记"fg" 在字符串中的位置
#执行结果就是
#cde

其实这三个命令grep,cut,awk,通常是配合管道|和sed命令联合使用,很强大.这就是为啥linux处理文件速度比windows快!

下面附上一些参考文章的链接:


  • 理解cut,awk,sort三个命令的分隔符选项: http://blog.csdn.net/u011341352/article/details/52910749
  • 多空格&多制表符文本之cut域分割终极方案 : https://sanwen8.cn/p/267AXa4.html
  • linux之cut用法: http://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html
  • shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法: http://blog.csdn.net/menlinshuangxi/article/details/7979504
  • linux grep命令详解: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html
  • 使用 grep 的 -o 和 -E 选项进行正则的精确匹配: http://blog.sina.com.cn/s/blog_7e9efc570101adbv.html



admin 发布于  2017-3-30 16:39 

centos开启ssh密钥登录总结 Linux


centos开启SSH密钥登录相信大家都会吧,而且很多的一键脚本都会配备,比如wdlinux面板的一件安装包都会配备而且支持自定义修改SSH端口,和一键生成密钥,很方便的,但是我们有时候没有必要安装这些一键脚本(比如内存小,不是用来做web服务的等等原因就不细说了);比如我们只是在梯子服务器上安装呢?这就需要我们自己手动了.博主我呢也经常折腾linux服务器,自己的或朋友的,今天抽时间写这篇文章,把我配置SSH密钥过程中遇到的坑都一一道来,

一来是做个总结,二来是方便后人^^.不要再往坑了跳了!跳了的也能尽快出坑!(此处应有掌声 -_-|)

先来看配置SSH的步骤

大致分为以下下几步:

  • 本地使用xshell软件生成公钥(不推荐linux端生成,照顾小白)
  • 使用非常著名方便小巧的运维工具--lrzsz(点我传送)--来上传公钥到服务端
  • 服务端常规配置(会附上详细的步骤shell操作代码)
  • 本文的重点--常见的坑的排除,解决方法(附上几种出错的情况以及解决办法)

1.本地使用xshell软件生成公钥:

  • 在xshell的工具栏里面找到 工具-新建用户密钥向导 如下图所示: 


  • 新建用户密钥生成向导.jpg


  • *密钥类型推荐使用RSA,密钥长度为2048的,即软件推荐的默认长度. 建议使用2048位密钥长度.jpg


  • 然后下一步,等待自动生成公钥对,公钥对生成.jpg
  • 然后下一步,给用户密钥设置一个密码,如下图所示,设置密码,即使别人拿到你得密钥也没法用,双重保险. 密钥加密.jpg


  • 然后点击下一步到公钥注册界面,选择公钥格式: SSH2-OpenSSH(因为现在大多数的linux的SSH都支持2.0保护方式,而且更保险.),然后,如下图所示保存为文件,在弹出的窗口,选择一个地方保存公钥 .pub 文件, 默认是id_rsa_2048.pub,方便自己查找的一个地方,比如桌面.导出公钥.jpg

2.SSH登录服务器,把id_rsa_2048.pub上传到服务器上并注册公钥,配置SSH

  • 上传可以参考我这篇文章 lrzsz(点我传送) ,如果安装好了lrzsz,只需要一条命即可把pub文件上传到服务器,输入:rz 然后在弹出的窗口选择上传的文件即可,如果出现报错,暂时关闭防火墙即可.
  • 其实使用sftp也可以在xshell里直接传文件,但是我不常用没有做,抱歉,但是教程网上有的,搜索一下即可.

3.服务端注册公钥.pub文件到系统,并分配好权限,权限没设置好后面登录会出问题的,这就是其中的一个坑,很多人都被坑过...具体步骤如下代码 :

就是把id_rsa_2048.pub的内容替换到/root/.ssh/下: 
[root@test ~]# ls -a 
.            ..         id_rsa_2048.pub
[root@test ~]# mkdir .ssh
[root@test ~]# chmod 700 .ssh/
[root@test ~]# cd .ssh/
[root@test .ssh]# cat ../id_rsa_2048.pub > ./authorized_keys
[root@test .ssh]# ls
authorized_keys
[root@test .ssh]# chmod 600 authorized_keys
[root@test ~]# diff id_rsa_2048.pub .ssh/authorized_keys 
[root@test ~]#
最后的diff命令来比较两个文件,确保文件内容相同。

4.接下来配置server的ssh服务(/etc/ssh/sshd_config)只允许使用密钥登录不允许口令登录(小提示:sshd重启完先不要关闭当前的ssh链接,以防万一):

[root@test~]:# vi /etc/ssh/sshd_config
#然后在vi界面用i来insert修改,找个空,回车一下,粘贴下面的代码
PasswordAuthentication no                    # 不允许口令登录
PubkeyAuthentication yes                     # 使用key登录
AuthorizedKeysFile .ssh/authorized_keys      # key的名字
#然后Esc,输入冒号:wq,保存退出
service sshd restart   #重启ssh服务

现在暂时不修改端口,不然修改完端口很多童鞋就直接exit了,就GG了,因为很多人的iptables规则没有设置就退出了,结果就进不去了,要是vps有控制台还好,可以通过控制台的VNC修改配置文件.要是没有就麻烦了.

这时候,xshell新开一个窗口,输入你的服务器IP,端口,默认22,然后回车链接,在弹出的对话框输入用户名,root,然后选择public key,在用户密钥里选择刚刚生成的那个,默认名字是id_rsa_2048,然后在下面输入刚刚设置的密钥密码,登录,看是否正常,如果正常登录,就OK了,然后就可以去修改端口,修改防火墙了:

修改端口,直接,vi /etc/ssh/sshd_config,增加一行,Port  3211 #端口请随意,但要记住.

然后防火墙增加一条规则允许 32211端口链接,命令大概如下,具体的请自行酌情修改:

iptables -A INPUT -p tcp --dport 3211 -j ACCEPT   /*允许包从3211端口进入*/
iptables -A OUTPUT -p tcp --sport 3211 -m state --state ESTABLISHED -j ACCEPT  /*允许从3211端口进入的包返回*/
service iptables save   /*保存配置*/
service iptables restart  /*重启iptables*/

下面说一下常见的坑(错误),如何爬出来:

  1. 配置完,使用密钥登录时,提示:所选用户密钥未在远程主机上注册.请再试一次.所选用户密钥未在远程主机上注册.请再试一次..jpg

这时候,请先检查存放authorized_keys的文件的权限,是否为600或者是644,如果不知道怎么看,那就直接执行下面的命令一次好了:


chmod 600 .ssh/authorized_keys 即可或者 644 也行. #600权限即-rw-------

注:执行这些命令的前提是,默认你是root账户,且在root目录下.如果不是,请自行调整用户和目录.不懂得可以留言/论/发邮件.


然后再次登录,成功就不说了,没成功请继续往下看:

没成功就请查看登录日志,具体的命令如下(centos为例,其他的linux目录可能不一样,请注意):

cat /var/log/secure

如果出现如图所示的 xxx because account is locked :


这种有可能是用户被锁定了,于是查看状态 准备解锁用户,命令如下:
pam_tally2 --user root  #root为你需要登录的账号
pam_tally2 -r -u root   #root为你需要登录的账号

通过pam_tally2 --user 指令发现没有锁定,都是0,
[root@test~]# pam_tally2 --user root
Login           Failures Latest failure     From
root                0    
[root@test~]# pam_tally2 -r -u root
Login           Failures Latest failure     From
root                0    
那就有可能是sshd没开启PAM 
修改/etc/ssh/sshd_config 配置后 ,再次登录测试,应该能解决问题

       2.如果按照上面这些修改完还是登录不进去,并且查看日志,大概内容如下:

Mar 29 01:36:12 localhost sshd[2645]: Received disconnect from 192.123.123.123: 11: Bye Bye
Mar 29 01:49:48 localhost sshd[2031]: Received signal 15; terminating.
Mar 29 01:49:48 localhost sshd[2704]: Server listening on 0.0.0.0 port 22.
Mar 29 01:49:48 localhost sshd[2704]: Server listening on :: port 22.
Mar 29 01:50:12 localhost sshd[2707]: Received disconnect from 192.123.123.123: 0: 
Mar 29 01:50:43 localhost sshd[2784]: Received disconnect from 192.123.123.123: 0: 
Mar 29 01:52:21 localhost sshd[2812]: Received disconnect from 192.123.123.123: 0: 

出错的是直接就断开了连接,并且没有任何错误提示,请检查服务器的selinuxiptables是否开启,iptables前面讲过,开放想相应端口,

如果还是连接不上,那就检查selinux, 使用下面的代码检查selinux 是否开启 :

查看SELinux状态:
1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled
2、getenforce                 ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0                  ##设置SELinux 成为permissive模式
                              ##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可  #reboot

目前就写这么多,欢迎补充,交流!

我们下次再会.


admin 发布于  2017-3-29 16:39 

LInux远程文件传输效率工具-lrzsz Linux

相信作为linux运维的童鞋们都会遇到这么一个问题,那就是当你使用xshell或者SecureCRT,你会发现,想在自己本地和服务器进行文件传输是一件很麻烦的事情,当然,你会说可以使用ftp可以用sftp,但是这些方式太麻烦了,我也经常为这些问题困扰,好消息是,我刚刚发现了一个有趣的工具:lrzsz。

       lrzsz:是一个开源工具,可以目前可以在xshell 和SecureCRT中使用,OS测试过centos和debian

        website:http://www.gnu.org/software/lrzsz/

        目前最新版本是:lrzsz-0.12.20.tar.gz


下面以centos为例:

一、安装

yum -y install lrzsz     #就是这么简单

#如果你是debian可以需要用下面的指令安装:
apt-get -y install lrzsz
        

当然,你也可以到官网上下载最新的源码包,编译安装,步骤也很简单,下面我就简单把代码列出来:
wget 
tar xf  lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
#当前目录下有个INSTALL,详细讲述了如果安装
./configure && make && sudo make install     #如果你不需要特别自定义,这条指令就够了
echo $?    # 如果结果是0,就表示你安装成功了

二、使用

sz命令发送文件到本地:

sz filename

rz命令本地上传文件到服务器:

rz        #执行该命令后,在弹出框中选择要上传的文件即可。


admin 发布于  2017-3-20 23:17 

Linux Find 命令精通指南(转) Linux

简单介绍这一无处不在的命令的强大的方面以及混乱的方面。

2008 年 7 月发布

Linux find 命令是所有 Linux 命令中最有用的一个,同时也是最混乱的一个。它很难,因为它的语法与其他 Linux 命令的标准语法不同。但是,它很强大,因为它允许您按文件名、文件类型、用户甚至是时间戳查找文件。使用 find 命令,您不但可以找到具这些属性任意组合的文件,还可以对它找到的文件执行操作。

本文的目的是,通过概述 find 命令的用途和潜能,简化该命令的学习和使用。同时,它将针对 find 命令的某些最强大但最混乱的方面提供一个基本的指南和参考。

[注意:本文使用的 find 版本是 GNU 版本,因此,某些细节可能与其他版本的 find 有所不同。]

基本格式

开始之前,我们先来看一下 find 命令的基本结构:

find   start_directory  test  options   criteria_to_match
action_to_perform_on_results

在以下命令中, find 将开始在当前目录(用“.”表示)中查找任何扩展名为“java”的文件:

find . -name  "*.java"  

下面是该命令所找到的命令的缩略清单:

find . -name  "*.java"
./REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
./REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java
..

[注意:如果您从本文剪切并粘贴来运行该 find 命令,您可能需要使用自己的键盘替换双引号 (“”) 才能得出正确的结果。]

以下命令将执行相同的操作。在这两种情况下,您都需要对通配符进行转义以确保它传递到 find 命令并且不由 shell 解释。因此,请将您的搜索字符串放到引号里,或者在它前面加上反斜线:

find . -name  \*.java

尽管 find 的所有参数均为可选,但是如果您未指定从哪里开始搜索,搜索默认将在当前目录中开始。如果您不指定要匹配的测试连接、选项或值,您的结果将不完整或者无区别。 
  
运行以下三个 find 命令将得出同样的结果 — 当前目录和所有子目录中的所有文件(包括隐藏文件)的完整清单:

find 
find .
find . -print

这类似于运行一个带 -la 选项的 ls 命令。如果您希望上述命令的输出包含完整的路径名(或许是为了备份),您将需要指定起始目录的完整路径:

find /home/bluher -name \*.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java/
...

您还可以在搜索字符串中指定多个起始目录。如果以具有相应权限的用户身份运行,以下命令将下到 /usr、/home /tmp 目录查找所有 jar 文件:

find /usr /home  /tmp -name "*.jar"

但是,如果您没有相应的权限,您在开始浏览许多系统目录时将生成错误消息。以下是一个示例:

find:  /tmp/orbit-root: Permission denied

您可以通过附加您的搜索字符串来避免混乱的输出,如下所示:

find /usr /home  /tmp -name "*.jar" 2>/dev/null

这会将所有错误消息发送到空文件,因此提供清理器输出。

默认情况下,find 是区分大小写的。对于不区分大小写的 find,将 -iname 测试替换为 -name 测试。

find downloads  -iname "*.gif"
downloads/.xvpics/Calendar05_enlarged.gif
downloads/lcmgcfexsmall.GIF

除文件名外,您还可以按类型搜索文件。例如,您可以使用以下命令查找一个目录中的所有子目录:

find . -type d         

您可以使用以下命令查找您的/usr 目录中的所有符号链接:

find /usr -type l

这可能会列出 3,000 多个链接。以下的任何一个命令使用根权限运行都将列出 /usr 目录中的链接以及它所指向的文件:

# find /usr/bin  -type l  -name "z*" -exec ls  -l {} \;
lrwxrwxrwx 1 root  root 8 Dec 12 23:17 /usr/bin/zsh -> /bin/zsh
lrwxrwxrwx 1 root  root 5 Dec 12 23:17 /usr/bin/zless -> zmore
lrwxrwxrwx 1 root  root 9 Dec 12 23:17 /usr/bin/zcat -> /bin/zcat
find /usr/bin -type  l  -name "z*" -ls

但是,第二个更短的命令将列出更多的文件,以及目录和 inode 信息:在本文后面的部分中,我们将讨论 -exec 和 -ls 操作的用法。

其他 find 可以找到的文件类型包括:

• b — 块(缓存)特殊 
• c — 字符(未缓存)特殊 
• p — 命名管道 (FIFO) 
• s — 套接字

使用根作为 find 命令的起点会极大地降低系统的速度。如果您必须运行这样一个命令,您可以在非高峰时段或晚上运行它。您可以使用以下语法将输出重定向到一个文件:

find  /   -print > masterfilelist.out

如果您错误地输入一个 find 命令,生成大量不必要的输出,只需按 CTRL-C 中断该命令,这将停止最近执行的命令。

在具多个文件系统的企业网络上,限制 find 查找的文件也是一个特别好用的方法。尽可能多地使用选项和测试以减少系统上的负载。用于此目的的两个最有用的选项是 -xdev 和 -mount。它们通过阻止 find 下到其他文件系统(如 MS-DOS、CD-ROM 或 AFS)上的目录中缩短了搜索范围。这将搜索限制为同一类型的文件系统作为起始目录。

如果运行 mount 命令,双引导系统上的用户可以使用这些选项。假设涉及 Windows 分区,您可以使用类似以下的命令安装它:

mount -t vfat  /dev/sda1 /mnt/msdos

您使用的实际命令取决于您的系统设置。您可以通过运行 df 或执行以下命令验证该分区已安装:

find /mnt/msdos  -name "*.txt" 2> /dev/null

您应该看到 MS Windows 分区上列出了很多的文件。现在,运行以下带 -mount 或 -xdev 选项的命令:

find / -name  "*.txt" -mount 2> /dev/null

或者

find / -name  "*.txt" -xdev 2> /dev/null

还可以使用 -fstype 测试明确告知 find 在哪个文件系统中查找,如以下示例中所示:

find / -name  "*.txt" -fstype vfat 2> /dev/null

查找时间

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

 mtime  文件内容上次修改时间 
 atime — 文件被读取或访问的时间 
 ctime — 文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n

• -n 返回项小于 n 
• +n 返回项大于 n 
• n 返回项正好与 n 相等

下面,我们来看几个例子,以便于理解。以下命令将查找在最近 1 小时内修改的所有文件:

find . -mtime -1
./plsql/FORALLSample
./plsql/RegExpDNASample
/plsql/RegExpSample

用 1 取代 -1 运行同一命令将查找恰好在 1 小时以前修改的所有文件:

find . -mtime 1

上述命令不会生成任何结果,因为它要求完全吻合。以下命令查找 1 个多小时以前修改的所有文件:

find . -mtime +1

默认情况下,-mtime、-atime 和 -ctime 指的是最近 24 小时。但是,如果它们前面加上了开始时间选项,则 24 小时的周期将从当日的开始时间算起。您还可以使用 mmin、amin 和 cmin 查找在不到 1 小时的时间内变化了的时间戳。

如果您在登录到您的帐户后立即运行以下命令,您将找到在不到 1 分钟以前读取的所有文件:

find . -amin -1
./.bashrc
/.bash_history
./.xauthj5FCx1

应该注意的是,使用 find 命令查找文件本身将更改该文件的访问时间作为其元数据的一部分。

您还可以使用 -newer、-anewer 和 –cnewer 选项查找已修改或访问过的文件与特定的文件比较。这类似于 -mtime、-atime 和 –ctime。 
  
• -newer 指内容最近被修改的文件 
• -anewer 指最近被读取过的文件 
• -cnewer 指状态最近发生变化的文件

要查找您的主目录中自上一个 tar 文件以来以某种方式编辑过的所有文件,使用以下命令:

find . -newer  backup.tar.gz

按大小查找文件

-size 选项查找满足指定的大小条件的文件。要查找所有大于 5MB 的用户文件,使用

find / -size  +5000000c 2> /dev/null
/var/log/lastlog
/var/log/cups/access_log.4
/var/spool/mail/bluher

结尾的“c”以字节为单位报告我们的结果。默认情况下,find 以 512 字节块的数量报告大小。如果我们将“c”替换为“k”,我们还会看到以千字节的数量报告的结果,如果使用“w”,则会看到以两字节字的数量报告的结果。

-size 选项经常用于搜索所有零字节文件并将它们移至 /tmp/zerobyte 文件夹。以下命令恰好可以完成这一任务:

find test -type f  -size 0 -exec mv {} /tmp/zerobyte \;

-exec 操作允许 find 在它遇到的文件上执行任何 shell 命令。在本文的后面部分,您将看到其用法的更多示例。大括号允许移动每个空文件。

选项 -empty 还可用于查找空文件:

find test -empty        
test/foo
test/test

按权限和所有者查找

要监视您的系统安全离不开 find 命令。您可以使用符号或八进制表示法查找面向广大用户开放的文件,如下所示:

find . -type f  -perm a=rwx -exec ls -l {} \;

或者

find . -type f  -perm 777 -exec ls -l {} \;
-rwxrwxrwx 1 bluher  users 0 May 24 14:14 ./test.txt

在这一部分中,在上面和下面的命令中,我们使用了 -exec ls -l 操作,因此,您可以看到返回的文件的实际权限。以下命令将查找可由“other”和组写入的文件:

find plsql -type f  -perm -ug=rw -exec ls -l {} \; 2>/dev/null

或者

find plsql -type f  -perm -220 -exec ls -l {} \; 2>/dev/null 
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004 plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  plsql/FORALLSample/doc/readme.html
-rw-rw-rw- 1 bluher users 22647 Jan  12  2005  plsql/FORALLSample/src/config.sql
..

下一个命令将查找由用户、组或二者共同写入的文件:  

find plsql -type f  -perm /ug=rw -exec ls -l {} \; 2>/dev/null, or,
find plsql -type f  -perm /220 -exec ls -l {} \; 2>/dev/null 
-rw-r--r-- 1 bluher users 21473  May  3 16:02 plsql/regexpvalidate.zip
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004 plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  plsql/FORALLSample/doc/readme.html
-rw-rw-rw- 1 bluher users 22647 Jan  12  2005  plsql/FORALLSample/src/config.sql

您可能会看到以下命令在 Web 和较早的手册中引用过:

find . -perm +220  -exec ls -l {} \; 2> /dev/null

+ 符号的作用与 / 符号相同,但是现在新版 GNU findutils 中不支持使用该符号。

要查找您的系统上所有人都可以写入的所有文件,使用以下命令:

find / -wholename  '/proc' -prune  -o  -type f -perm -0002 -exec ls -l {} \;
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004/home/bluher/plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  /home/bluher/plsql/FORALLSample/doc/readme.html
...

第 4 个权限将在稍后进行讨论,但最后一个字段中的“2”是文件权限中的“other”字段,也称为写入位。我们在权限模式 0002 前面使用了破折号,以指明我们希望看到为 other 设置了写权限的文件,无论其他权限设置为什么。

上述命令还引入了三个新概念。针对文件模式“/proc”使用 -wholename 测试,如果该模式已找到,-prune 可防止 find 下到该目录中。布尔类型“-o”使 find 可以针对其他目录处理该命令的其余部分。由于每个表达式之间有一个假设的隐式 and 运算符 (-a),因此,如果左侧的表达式计算结果为 false, and 之后的表达式将不进行计算;因此需要 -o 运算符。Find 还支持布尔类型 -not、!,就像使用括号强行优先一样。

系统管理员经常使用 find 通过用户或组的名称或 ID 搜索特定用户或组的常规文件:

[root] $  find / -type f -user bluher -exec ls -ls {}  \;

下面是这样一个命令的高度精简的输出示例:

4 -rw-r--r-- 1 bluher users 48  May  1 03:09  /home/bluher/public_html/.directory
4 -rw-r--r-- 1 bluher users 925  May  1 03:09 /home/bluher/.profile

您还可以使用 find 按组查找文件:

[root] $ find /  -type f -group users
find / -type d -gid  100

该命令将列出由 ID 为 100 的组拥有的目录。要找到相应的 uid 或 gid,您可以针对 /etc/passwd 或 /etc/group 文件运行 more 或 cat 命令。

除了查找特定已知用户和组的文件外,您还会发现它对于查找没有这些信息的文件也很有用。下一个命令将识别未列在 /etc/passwd 或 /etc/group 文件中的文件:

find / -nouser -o  -nogroup

上述命令可能不会在您的系统上生成实际的结果。但是,它可用于识别或许在经常移动后没有用户或组的文件。

好了,现在我们可以解决本部分开始时提到的格外重要的权限了。

SGID 和 SUID 是特殊访问权限标志,可以分配给基于 UNIX 的操作系统上的文件和目录。设置它们是为了允许访问计算机系统的普通用户使用临时提升的权限执行二进制可执行文件。

find /  \( -perm -2000 -o -perm -4000 \) -ls
167901   12 -rwsr-xr-x   1 root     root         9340 Jun 16  2006 /usr/bin/rsh
167334   12 -rwxr-sr-x   1 root     tty         10532 May  4  2007 /usr/bin/wall

在上述命令中,您可以看到转义括号的使用。您还可以看到权限的不同。第一个文件设置了 SGID 权限,第二个文件设置了 SUID 权限。上述命令中的最后的操作与带 -exec ls -dils 操作的 find 效果类似。

控制 find

与 Linux 中的许多命令不同,find 不需要 -r 或 -R 选项即可下到子目录中。它默认情况下就这样操作。但是,有时您可能希望限制这一行为。因此,选项 -depth、-maxdepth 和 -mindepth 以及操作 -prune 就派上用场了。

我们已经看到了 -prune 是多么有用,下面让我们来看看 -depth、-maxdepth 和 -mindepth 选项。

-maxdepth 和 -mindepth 选项允许您指定您希望 find 搜索深入到目录树的哪一级别。如果您希望 find 只在目录的一个级别中查找,您可以使用 maxdepth 选项。

通过运行以下命令在目录树的前三个级别中查找日志文件,您可以看到 -maxdepth 的效果。使用该选项较之不使用该选项所生成的输出要少得多。

find / -maxdepth 3  -name "*log"

您还可以让 find 在至少下至目录树三个级别的目录中查找:

find / -mindepth 3  -name "*log"

-depth 选项确保先在一个目录中进行查找,然后才在其子目录中进行查找。以下命令提供了一个示例:

find -name "*test*" -depth
./test/test
./test
./localbin/test
./localbin/test_shell_var
./localbin/test.txt
./test2/test/test
./test2/test
./test2

find 世界

我们已经看过了 find 命令的一些更加有用以及有点难懂的功能,但是 find 还可以执行更多的任务。例如,有多个选项可以使 find 与较低的 UNIX 版本和其他操作系统相兼容并允许您执行打印输出到多个文件等操作。阅读本文后,您现在已经有了理解 find 参考指南的背景,我鼓励您深入研究这一强大、有用的工具。

原文:http://www.oracle.com/technetwork/cn/topics/calish-find-096463-zhs.html

标签: 分享 Linux find

admin 发布于  2017-3-17 17:08 

搭建 nginx + mysql + php-fpm 环境(CentOS 6) Linux

前言:这几天帮朋友部署一个项目,一开始为了方便,(我懒-_-|),使用一键lanmp脚本部署,结果项目测试的时候bug一大堆...,声明:这不是说这些一键脚本不好,客观的来说,这些脚本用来建站,普通的单纯的站,一般没问题的,也很方便,但是部署项目,如果对这个脚本不是特别了解,特别了解,特别了解!重要的是说三遍...千万不要用,老实的手动部署环境吧....于是本想写一篇的,但是发现有人写了...就转载过来,存着当笔记吧.


本文档介绍如何使用一台普通配置的云服务器ECS实例搭建LNMP平台的web环境。

  • Linux:自由和开放源码的类UNIX操作系统。
  • Nginx:轻量级网页服务器、反向代理服务器。
  • MySQL:关系型数据库管理系统。
  • PHP:主要适用于Web开发领域的一种脚本语言。

适用对象

适用于熟悉Linux操作系统,刚开始使用阿里云进行建站的个人用户。

基本流程

使用云服务器 ECS 搭建LNMP平台的操作步骤如下:

  1. 准备编译环境
  2. 安装nginx
  3. 安装mysql
  4. 安装php-fpm
  5. 测试访问

步骤一:准备编译环境

1、系统版本说明

# cat /etc/redhat-release 
CentOS release 6.5 (Final)

注:这是本文档实施时参考的系统版本。您的实际使用版本可能与此不同,下文中的nginx,mysql,及php版本,您也可以根据实际情况选择相应版本。

2、关闭SELINUX

修改配置文件,重启服务后永久生效。

# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

命令行设置立即生效。

# setenforce 0

3、安全组设置

在ECS安全组放行需访问的端口和访问白名单,下面的示例表示允许所有IP访问服务器的80端口。您可以根据实际情况放行允许访问的客户端IP。

图片1

步骤二:安装nginx

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当稳定。

1、下载源码包解压编译。

# wget http://nginx.org/download/nginx-1.10.2.tar.gz
# tar xvf nginx-1.10.2.tar.gz -C /usr/local/src
# yum groupinstall "Development too
# yum -y install gcc wget gcc-c++ automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl-devel
# cd /usr/local/src/nginx-1.10.2
# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
# make && make install
# mkdir -pv /var/tmp/nginx/client
2、添加SysV启动脚本。
# vim /etc/init.d/nginx
#!/bin/sh 
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:   - 85 15 
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#               proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:     /var/run/nginx.pid 
# Source function library. 
. /etc/rc.d/init.d/functions
# Source networking configuration. 
. /etc/sysconfig/network
# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: " 
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo 
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: " 
    killproc $prog -QUIT
    retval=$?
    echo 
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
killall -9 nginx
}
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: " 
    killproc $nginx -HUP
RETVAL=$?
    echo 
}
force_reload() {
    restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case "$1" in
    start)
        rh_status_q && exit 0
    $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
      echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
        exit 2
esac
3、赋予脚本执行权限。

# chmod +x /etc/init.d/nginx

4、添加至服务管理列表,设置开机自启。

# chkconfig --add nginx
# chkconfig  nginx on
5、启动服务。

# service nginx start

6、浏览器访问可看到默认欢迎页面。图片2

步骤三:安装mysql

1、准备编译环境。

# yum groupinstall "Server Platform Development"  "Development tools" -y
# yum install cmake -y
2、准备mysql数据存放目录。
# mkdir /mnt/data
# groupadd -r mysql
# useradd -r -g mysql -s /sbin/nologin mysql
# id mysql
uid=497(mysql) gid=498(mysql) groups=498(mysql)
3、更改数据目录属主属组。

# chown -R mysql:mysql /mnt/data

4、解压编译官网下载稳定版的源码包。

# tar xvf mysql-5.6.24.tar.gz -C  /usr/local/src
# cd /usr/local/src/mysql-5.6.24
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mnt/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
# make && make install
5、修改安装目录的属组为mysql。

# chown -R mysql:mysql /usr/local/mysql/

6、初始化数据库。

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mnt/data/

注:在CentOS 6.5版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

7、拷贝配置文件和启动脚本。

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# cp support-files/my-default.cnf /etc/my.cnf
8、设置开机自动启动。
# chkconfig mysqld  on 
# chkconfig --add mysqld
9、修改配置文件中的安装路径及数据目录存放路径。

# echo -e "basedir = /usr/local/mysql\ndatadir = /mnt/data\n" >> /etc/my.cnf

10、设置PATH环境变量。

# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh      
# source /etc/profile.d/mysql.sh
11、启动服务。
# service mysqld start 
# mysql -h 127.0.0.1
步骤四:安装php-fpm

Nginx本身不能处理PHP,作为web服务器,当它接收到请求后,不支持对外部程序的直接调用或者解析,必须通过FastCGI进行调用。如果是PHP请求,则交给PHP解释器处理,并把结果返回给客户端。PHP-FPM是支持解析php的一个FastCGI进程管理器。提供了更好管理PHP进程的方式,可以有效控制内存和进程、可以平滑重载PHP配置。

1、安装依赖包。

# yum groupinstall "X Software Development"
# yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel
2、解压官网下载的源码包,编译安装。
# tar xvf php-5.6.23.tar.bz2 -C /usr/local/src
# cd /usr/local/src/php-5.6.23
# ./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/etc/php.d \
--with-config-file-path=/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-openssl \
-enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-bz2
# make && make install
3、添加php和php-fpm配置文件。
# cp /usr/local/src/php-5.6.23/php.ini-production /etc/php.ini
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# sed -i 's@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@' php-fpm.conf
4、添加php-fpm启动脚本。
# cp /usr/local/src/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
5、添加php-fpm至服务列表并设置开机自启。
# chkconfig --add php-fpm     
# chkconfig --list php-fpm     
# chkconfig php-fpm on
6、启动服务。

# service php-fpm start

7、添加nginx对fastcgi的支持,首先备份默认的配置文件。

# cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
编辑/etc/nginx/nginx.conf,在所支持的主页面格式中添加php格式的主页,类似如下:
        location / {
            root   /usr/local/nginx/html;
            index  index.php index.html index.htm;
        }
取消以下内容前面的注释:
       location ~ \.php$ {
            root           /usr/local/nginx/html;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
            include        fastcgi_params;
        }
重新载入nginx的配置文件。

# service nginx reload

在/usr/local/nginx/html/新建index.php的测试页面,内容如下。

# cat index.php 
<?php
$conn=mysql_connect('127.0.0.1','root','');
if ($conn){
  echo "LNMP platform connect to mysql is successful!";
}else{
  echo "LNMP platform connect to mysql is failed!";
}
 phpinfo();
?>

浏览器访问测试,如看到以下内容则表示LNMP平台构建完成。图片3

原文地址:https://help.aliyun.com/document_detail/50700.html



admin 发布于  2017-3-6 20:37