查看grep命令 2.10和2.25版本有什么区别

不说废话, 例如需要排除 abc.txt 中的
grep -v 'mmm\|nnn' abc.txt
再举个例子,需要确定mac 的本机ip地址,
显然直接可以输入 ifconfig, 但是会出来一大堆信息,那么再通过 grep inet 可以拿到类似如下的信息:
bash-3.2# ifconfig | grep inet   inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet6 fe80::c37:dee4:5ad4:944b%en0 prefixlen 64 secured scopeid 0x4
inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255
inet6 fe80::8dc:a3ff:feaf:fbe1%awdl0 prefixlen 64 scopeid 0x9
inet6 fe80::bd0c:5502:92ad:25e1%utun0 prefixlen 64 scopeid 0xa
但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:
bash-3.2# ifconfig | grep inet | grep -v inet6
inet 127.0.0.1 netmask 0xff000000
inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255
这样其实也可以看了,但是强迫症患者伤不起啊,我就只要一条,怎么弄呢,显然还可以继续通过 grep -v 127.0.0.1 来屏蔽掉第一条记录,如下:
bash-3.2# ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1
inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255
这样好像不是很优雅,那就刚刚说的方法,如下:
bash-3.2# ifconfig | grep inet | grep -v 'inet6\|127.0.0.1'
inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255
当然,还可以同时屏蔽掉更多的关键字,这里就不展开了,不知道的可以给我留言。
grep 搜索不包含关键字的行
管道使用 不包含单词(关键字)
grep 满足 或 排除多个关键字
grep 同时满足多个关键字① grep -E &word1|word2|word3&
满足任意条件(word1、word2和word3之一)将匹配。
grep 同时排...
在linux系统如何grep过滤中,不包含某些字符串的命令
转:http://www.dutycode.com/linux_grep_bubaohan.html
文章系转载,亲测可用(转载自:http://www.itokit.com...
使用grep查询的时候排除自身命令
查看手册页man grep
-v, --invert-match
Invert the sense of matching, to select n...
grep查找时,去掉grep本身那一条
grep 查找时,总会显示本身那一条,比如要查找vsftpd这个进程的运行状态,去掉本身那一条,我们可以这样操作:
-aux | grep vsftpd | grep -v grep...
grep不查找隐藏文件夹的方法
默认的grep会搜索所有文件,包括隐藏文件夹下的文件。
例如,使用如下命令搜索MediaButton字符串,搜索结果包含隐藏文件夹下的文件。
grep -nr MediaButton *
...
ps 和 grep 查找消除 grep自身查找
用ps -def | grep查找进程很方便,最后一行总是会grep自己。$ ps -def | grep dragonfly-framework
使用grep -v时候,想去除多个pattern
grep -v with multiple patterns
grep test somefile | grep -v -e error -e critical -e warning
shell-grep -v 排除多个输出结果
ps -fe|grep pktgen | grep -vE '(grep|/bin/bash)'-v:显示不包含匹配文本的所有行。反向查找。-E 使用扩展正则表达式...
Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键
Linux下find一次查找多个指定文件或者排除某类文件,在 GREP 中匹配多个关键字的方法
(1)Linux下find一次查找多个指定文件:
查找a.html和b.html
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: "5865577",
container: s,
size: "300,250",
display: "inlay-fix"grep用法详解:grep与正则表达式
首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vi grep ,awk ,sed 等都支持正则表达式.1基础正则表达式grep 工具,以前介绍过。grep -[acinv] '搜索内容串' filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v 反向选择,即找 没有搜索字符串的行其中搜索串可以是正则表达式!1搜索有the的行,并输出行号$grep -n 'the' regular_express.txt搜索没有the的行,并输出行号$grep -nv 'the' regular_express.txt2 利用[]搜索集合字符[] 表示其中的某一个字符 ,例如[ade]
表示a或d或ewoody@xiaoc:~/tmp$ grep -n
't[ae]st' regular_express.txt
8:I can't finish the test.
9:Oh! the soup taste good!可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。比如搜索oo前没有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes![] 内可以用范围表示,比如[a-z]
表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符。 当然也可以配合^来排除字符。搜索包含数字的行woody@xiaoc:~/tmp$ grep -n '[0-9]' regular_express.txt
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.行首与行尾字符 ^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$’ 就表示空行,因为只有行首和行尾。这里^与[]里面使用的^意义不同。它表示^后面的串是在行的开头。比如搜索the在开头的行woody@xiaoc:~/tmp$ grep -n '^the' regular_express.txt
12:the symbol '*' is represented as star.搜索以小写字母开头的行woody@xiaoc:~/tmp$ grep -n '^[a-z]' regular_express.txt
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap than car.
12:the symbol '*' is represented as star.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
woody@xiaoc:~/tmp$ 搜索开头不是英文字母的行woody@xiaoc:~/tmp$ grep -n '^[^a-zA-Z]'
regular_express.txt 1:"Open Source" is a good mechanism to develop programs.
21:#I am VBird
woody@xiaoc:~/tmp$ $表示它前面的串是在行的结尾,比如 '\.'
表示 . 在一行的结尾搜索末尾是.的行woody@xiaoc:~/tmp$ grep -n '\.$'
regular_express.txt //.
是正则表达式的特殊符号,所以要用\转义1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However ,this dress is about $ 3183 dollars.
6:GNU is free air not free beer.
.....注意在MS的系统下生成的文本文件,换行会加上一个 ^M 字符。所以最后的字符会是隐藏的^M ,在处理Windows
下面的文本时要特别注意!可以用cat dos_file | tr -d '\r' & unix_file 来删除^M符号。 ^M==\r那么'^$' 就表示只有行首行尾的空行拉!搜索空行woody@xiaoc:~/tmp$ grep -n '^$' regular_express.txt
woody@xiaoc:~/tmp$ 搜索非空行woody@xiaoc:~/tmp$ grep -vn '^$'
regular_express.txt 1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
..........任意一个字符. 与重复字符 *在bash中*代表通配符,用来代表任意个字符,但是在正则表达式中,他含义不同,*表示有0个或多个 某个字符。例如 oo*, 表示第一个o一定存在,第二个o可以有一个或多个,也可以没有,因此代表至少一个o.点. 代表一个任意字符,必须存在。 g??d 可以用 'g..d' 表示。 good ,gxxd ,gabd .....都符合。woody@xiaoc:~/tmp$ grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! the soup taste good!
16:The world is the same with 'glad'.
woody@xiaoc:~/tmp$ 搜索两个o以上的字符串woody@xiaoc:~/tmp$ grep -n 'ooo*' regular_express.txt //前两个o一定存在,第三个o可没有,也可有多个。1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!搜索g开头和结尾,中间是至少一个o的字符串,即gog, goog....gooog...等woody@xiaoc:~/tmp$ grep -n
'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!搜索g开头和结尾的字符串在的行woody@xiaoc:~/tmp$ grep -n 'g.*g' regular_express.txt
// .*表示 0个或多个任意字符1:"Open Source" is a good
mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.限定连续重复字符的范围 { } . * 只能限制0个或多个, 如果要确切的限制字符重复数量,就用{范围} 。范围是数字用,隔开 2,5 表示2~5个,
2表示2个,2, 表示2到更多个注意,由于{ }在SHELL中有特殊意义,因此作为正则表达式用的时候要用\转义一下。搜索包含两个o的字符串的行。woody@xiaoc:~/tmp$ grep -n 'o\{2\}' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!搜索g后面跟2~5个o,后面再跟一个g的字符串的行。woody@xiaoc:~/tmp$ grep -n
'go\{2,5\}g' regular_express.txt
18:google is the best tools for search keyword.搜索包含g后面跟2个以上o,后面再跟g的行。。woody@xiaoc:~/tmp$ grep -n 'go\{2,\}g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!注意,相让[]中的^ - 不表现特殊意义,可以放在[]里面内容的后面。'[^a-z\.!^ -]' 表示没有小写字母,没有. 没有!, 没有空格,没有- 的 串,注意[]里面有个小空格。另外shell 里面的反向选择为[!range], 正则里面是 [^range]2扩展正则表达式扩展正则表达式是对基础正则表达式添加了几个特殊构成的。它令某些操作更加方便。比如我们要去除 空白行和行首为 #的行, 会这样用:woody@xiaoc:~/tmp$ grep -v '^$' regular_express.txt | grep -v '^#'
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
............然而使用支持扩展正则表达式的 egrep 与扩展特殊符号 | ,会方便许多。注意grep只支持基础表达式, 而egrep 支持扩展的,其实 egrep 是 grep -E 的别名而已。因此grep -E 支持扩展正则。那么:woody@xiaoc:~/tmp$ egrep -v '^$|^#'
regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
....................这里| 表示或的关系。 即满足 ^$ 或者 ^# 的字符串。这里列出几个扩展特殊符号:+,于 . * 作用类似,表示 一个或多个重复字符。?, 于 . * 作用类似,表示0个或一个字符。|,表示或关系,比如 'gd|good|dog' 表示有gd,good或dog的串(),将部分内容合成一个单元组。比如 要搜索 glad 或 good 可以这样
'g(la|oo)d'()的好处是可以对小组使用 + ? *
等。比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 :
'A(xyz)+C'
◎将符合样式的该行列出
用以在内文中比对相对应的部分,或是当没有指定档案时,
由标准输入中去比对。在预设的情况下,会将符合样式的那一行列出。
此外,还有两个程式是的变化型,及。
其中就等同於,等同於。
除了列出符合行之外,并且列出後行。
从中搜寻有样式的行,并显示该行的後行
原本是搜寻文字档,若拿二进位的档案作为搜寻的目标,
则会显示如下的讯息二进位档名然後结束。
若加上参数则可将二进位档案视为文字档案搜寻,
相当於这个参数。
从二进位档案中去搜寻样式
这表示此档案有之处,详见
与相对,但这此参数是显示除符合行之外
并显示在它之前的行。
从中搜寻有样式的行,并显示该行的前行
列出符合行之外并列出上下各行,预设值是。
列出中除包含样式的行外并列出其上下行
若要改变预设值,直接改变即可
列出样式之前的内文总共有多少
显示结果类似於
此参数预设为二进位,若以普通方式搜寻,只有种结果
若有符合的地方:显示二进位档名
若没有符合的地方:什麽都没有显示。
若为,遇到此参数,
会认为此二进位档案没有包含任何搜寻样式,与参数相同。
若为会将此二进位档视为档案,与参数相同。
若输出为终端机,可能会产生一些不必要的输出。
不显示符合样式行,只显示符合的总行数。
若再加上,参数显示不符合的总行数。
若输入的档案是一个资料夹,使用去处理这个资料夹。
预设是读取,也就是说此资料夹会被视为一般的档案;
若是略过,资料夹会被略过:
若是递,会去读取资料夹下所有的档案,
此相当於参数。
采用规则表示式去解释样式。
把样式做为一个,通常用在避免用开始。
事先将要搜寻的样式写入到一个档案,一行一个样式。
然後采用档案搜寻。
空的档案表示没有要搜寻的样式,因此也就不会有任何符合。
为搜寻样式档
将样式视为基本的规则表示式解释。此为预设
在每个符合样式行前加上符合的档案名称,若有路径会显示路径。
在与中搜寻样式
与参数相类似,但在输出时不显示路径。
产生简短的讯息。
会强制认为此二进位档案没有包含任何搜寻样式,
与参数相同。
忽略大小写,包含要搜寻的样式及被搜寻的档案。
不显示平常一般的输出结果,反而显示出没有符合的档案名称。
不显示平常一般的输出结果,只显示符合的档案名称。
如果可能,使用系统呼叫去读取输入,而不是预设的系统呼叫。
在某些状况,能产生较好的效能。然而,
如果运作中档案缩短,或错误发生时,
可能造成未定义的行为包含,。
在显示行前,标上行号。
显示结果相似於下
行号符合行的内容
不显示任何的一般输出。请参阅或
递地,读取每个资料夹下的所有档案,此相当於参数。
不显示关於不存在或无法读取的错误讯息。
小不像,传统的不符合协定,
因为缺乏参数,且他的参数表现像的参数。
倾向将传统的移植,避开及参数,
且将输出限制到。
定义及系统需要提供的功能。
显示出的版本号到标准错误。
当您在回报有关的时,版本号是必须要包含在内的。
显示除搜寻样式行之外的全部。
将搜寻样式视为一个字去搜寻,完全符合该字的行才会被列出。
-c 显示匹配的行数(就是显示有多少行匹配了);
-n 显示匹配内容所在文档的行号;
-i 匹配时忽略大小写;
-s 错误信息不输出;
-v 输出不匹配内容;
-x 输出完全匹配内容;
\ 忽略表达式中字符原有含义;
^ 匹配表达式的开始行;
$ 匹配表达式的结束行;
\& 从匹配表达式的行开始;
\& 到匹配表达式的行结束;
[ ] 单个字符(如[A]
即A符合要求);
[ - ] 范围;如[A-Z]即A,B,C一直到Z都符合要求;
. 所有的单个字符;
* 所有字符,长度可以为0;
[精华] Grep
Grep : g (globally) search for a re (regular expression ) and p (print ) the results.
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标
2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\& 从匹配正则表达式的行开始
\&; 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0
# ps -ef | grep in.telnetd
13:43:53 ? 0:00 in.telnetd
# more size.txt size文件的内容
# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
# more size.txt | grep '[a-b]'*
# more size.txt | grep '' 单个字符;如[A] 即A符合要求
# more size.txt | grep '[bB]'
# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon
# grep '^root' /etc/group 匹配正则表达式的开始行
root::0:root
# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp
# grep '\&uucp' /etc/group
uucp::5:root,uucp
# grep 'root$' /etc/group 匹配正则表达式的结束行
root::0:root
mail::6:root
# more size.txt | grep -i 'b1..*3' -i :忽略大小写
# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行
# more size.txt | grep -in 'b1..*3'
15:B103303
# grep '$' /etc/init.d/nfs.server | wc -l
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义
# grep '\$' /etc/init.d/nfs.server
case "$1" in
&;/tmp/sharetab.$$
[ "x$fstype" != xnfs ] && \
echo "$path\t$res\t$fstype\t$opts\t$desc" \
&;&;/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' \
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && \
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"
# more size.txt
the test file
their are files
# grep 'the' size.txt
the test file
their are files
# grep '\&the' size.txt
the test file
their are files
# grep 'the\&;' size.txt
the test file
# grep '\&the\&;' size.txt
the test file
# grep '\&[Tt]he\&;' size.txt
the test file
何为转义:将特殊符号当普通符号来处理
1.^在[]内外的含义
2.何时需要转义
3.*在bash中和正则表达式中本身的区别
日11:24:50
grep正则表达式后面的单引号和双引号的区别?
单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换;
双引号&&是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容!
一般常量用单引号''括起,如果含...
grep 全词匹配和模糊匹配
grep实际使用中,根据常需求不同,常需要进行精准或者默默匹配。
$ grep &abc&
# 结果为abcd, abcde, abc等
$ grep -w &abc& #...
linux grep基本用法
1.查找文件中是否存在指定的信息:
-bash-4.1$ grep exception error-.log
17:49:13.869 [http-/192.1...
使用grep搜索代码的几个示例
又一篇烂大街的&grep&命令用法,本篇从码农读代码的角度,总结下我最常用的`grep`方式,也欢迎大家交流下`grep`的一些高级用法...
日志分析查看——grep,sed,sort,awk运用
我们日常应用中都离不开日志。可以说日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了...
Linux命令详解:cat、more、less命令
基本可以查看所有的文件
在使用和维护Linux系统时,常常需要查看文件的相关内容,那么如何才能做到呢?下面小编就以CentOS6.4系统为例演示查看文件内容的几种常用的方法。
linux通配符,grep和 egrep区别
前些天写字符串匹配的脚本,如下:
1 #!/bin/sh
3 echo&path: /home/appadmin/workspace&
4 echo&usage: &$0...
linux如何模糊查找一个文件
一、根据文件名模糊查找文件
格式:find
[指定目录] -name
-i '*[文件名关键字]'
find /a...
在当前目录下搜索指定文件:
find . -name test.txt
在当前目录下模糊搜索文件:
find . -name '*.txt'
在当前目录下搜索特定属性的文件:
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: "5865577",
container: s,
size: "300,250",
display: "inlay-fix"如何在Fedora 25上部署Ghostv0.11 LTS - 操作系统、应用软件相关使用和技巧 -
恩山无线论坛 -
Powered by Discuz!
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 78|回复: 1
如何在Fedora 25上部署Ghostv0.11 LTS
Ghost是一个开源的博客平台,自2013年发布以来,它在开发者和普通用户中越来越受欢迎。它把重点放在内容和博客上。Ghost最吸引人的地方在于它简单、干净、反应灵敏的设计。你可以从手机上写博客文章。Ghost的内容是使用Markdown语言编写的。“Ghost”完全适合于个人或小群体的作家。
在本指南中,我们将设置并部署一个安全的Ghostv0.11。xlts在Fedora 25 VPS上使用Let ' s加密,Certbot,Node。js,NPM,NGINX和MySQL。
要求注册(购买)域名。
Fedora 25服务器实例,最小1GB RAM。
Sudo用户。
您可能必须使用 semanage port -a -t http_port_t -p tcp 2368.打开端口2368
在你开始之前
1、检查Fedora版本:cat /etc/fedora-release# Fedora release 25 (Twenty Five)
2、创建一个新的non-root用户:useradd -c &John Doe& johndoe && passwd johndoe3、通过将其添加到wheel 组,使其成为超级用户:usermod -aG wheel johndoe4、切换到新用户:su - johndoe5、更新操作系统的软件:sudo dnf check-update || sudo dnf upgrade -y6、设置时区:timedatectl list-timezonessudo timedatectl set-timezone 'Region/City'7、安装开发工具:sudo dnf install @development-tools -y8、安装Vim文本编辑器和Wget:sudo dnf install -y vim wget9、如果需要重新启动系统:sudo shutdown -r now安装Certbot注意:在开始此步骤之前,请确保您已经为您的域设置了DNS记录。我们将使用Let ' s加密CA和EFF的Certbot客户端为我们的Ghost blog获取SSL / TLS证书。不要忘记替换的所有实例。tld与您的域名。1、安装Certbot(以前让我们加密客户端)用Python制作的证书管理软件:sudo dnf install -y certbot2、检查Certbot版本:certbot --version# certbot 0.14.13、使用独立认证方法获取RSA证书(插件):sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email
--no-eff-email --agree-tos # IMPORTANT NOTES:#&&- Congratulations! Your certificate and chain have been saved at& & /etc/letsencrypt/live/blog.domain.tld/fullchain.pem.#&&Your cert will expire on YYYY-MM-DD. . . .#&&. . .经过前面的步骤,你的证书和私钥将/etc/letsencrypt /生活/ blog.domain。tld目录。
安装Node.js和NPM注意: Ghost目前支持节点。js版本4.5 + 6.9 +。Ghost是建立在node . js.我们要安装v6的推荐版本GhostLTSBoron在撰写本文时。1、下载并安装节点.js v6 LTS:curl --silent --location
| sudo bash -sudo dnf install -y nodejs2、检查节点.js和NPM版本:node -v && npm -v# v6.11.2# 3.10.10安装MySQL默认情况下,Ghost被配置为使用一个SQLite数据库,它不需要配置。另外,也可以通过更改数据库配置来使用一个MySQL数据库。您必须先创建一个数据库和用户,然后才能更改现有的sqlite3配置。从官方MySQL Dnf库下载并安装最新版本的MySQL(当前5.7):cd /tmp # Adding the MySQL dnf Repositorywget
dnf install -y mysql57-community-release-fc25-10.noarch.rpm # Installing MySQLsudo dnf install -y mysql-community-server2、检查MySQL版本:mysql --version# mysql&&Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using&&EditLine wrapper3、启动MySQL服务器并检查其状态:sudo systemctl start mysqld.servicesudo systemctl status mysqld.service4、MySQL版本5.7或更高版本为MySQL根用户生成临时随机密码,安装和密码存储在MySQL错误日志文件中,位于/ var/ log/mysqld.log。要显示它,请使用以下命令:sudo grep 'temporary password' /var/log/mysqld.log5、运行mysql_secure_installation脚本以确保您的数据库有一点:注意:密码验证插件被安装和启用,所以你的新密码为root用户需要强大(一个大写字母,一个小写字母,一个数字,一个特殊字符,以及总密码长度至少为8个字符)。如果您想要完全放松或禁用插件(不推荐),请参考官方MySQL文档来了解如何做到这一点。sudo mysql_secure_installation6、作为根用户登录MySQL:mysql -u root -p# Enter password:7、创建一个新的MySQL数据库和用户:crgrant all on dbname.* to 'user' identified by 'password';8、退出MySQL:exit安装NGINX1、下载并安装NGINX:sudo dnf install -y nginx2、检查NGINX版本是否安装了它:sudo nginx -v# nginx version: nginx/1.10.23、检查状态,启用和启动NGINX服务(守护进程):sudo systemctl status nginx.service # inactive (dead)sudo systemctl enable nginx.servicesudo systemctl start nginx.service4、创建/ etc/ nginx/ssl目录并生成一个新的diffie- hellman(DH)参数:sudo mkdir -p /etc/nginx/sslsudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 20485、为blog.domain创建日志目录。tld虚拟主机:sudo mkdir -p /var/log/nginx/blog.domain.tld6、配置NGINX作为HTTP(S)反向代理服务器:sudo vim /etc/nginx/conf.d/ghost.conf7、在/etc/nginx/conf.d/ghost.conf粘贴如下:# domain: blog.domain.tld# public: /var/www/ghost upstream ghost_app {& & server 127.0.0.1:2368;& & keepalive 32;} server {& & listen [::]:80;& & listen 80;& & listen [::]:443 ssl http2;& & listen 443 ssl http2;& &&&server_name blog.domain.& & root /var/www/& &&&error_log /var/log/nginx/blog.domain.tld/error.& & access_log /var/log/nginx/blog.domain.tld/access.& &&&client_max_body_size 100M;& &&&ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.& & ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.& & ssl_dhparam ssl/dhparams-2048.& &&&ssl_protocols TLSv1 TLSv1.1 TLSv1.2;& & ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384HE-RSA-AES128-GCM-SHA256HE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHAHE-RSA-AES128-SHA256HE-RSA-AES128-SHAHE-RSA-AES256-SHA256HE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHAES-CBC3-SHA:!DSS';& & ssl_prefer_server_& &&&ssl_buffer_size 4K;& &&&ssl_session_timeout 1d;& & ssl_session_cache shared:SSL:50M;& & ssl_session_& &&&ssl_& & ssl_stapling_& & ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.& &&&resolver 8.8.8.8 8.8.4.4 valid=300s;& &&&location / {& && &&&proxy_pass http://ghost_& && &&&proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_& && &&&proxy_set_header Host $http_& && &&&proxy_set_header X-Forwarded-Proto $& && &&&proxy_hide_header X-Powered-By;& && && &proxy_http_version 1.1;& && &&&proxy_set_header Connection &&;& & }}8、保存和测试NGINX配置的语法错误:sudo nginx -t9、重载NGINX配置:sudo systemctl reload nginx.service安装Ghost注意:如果您想在相同的VPS上托管多个Ghost博客,则每个Ghost实例必须在一个单独的端口上运行。1、创建文档根目录:sudo mkdir -p /var/ 2、创建一个新的Ghost用户:sudo useradd -c 'Ghost application' ghost3、下载Ghostcurl -L
-o ghost.zip4、解压到/ var/www/ghost目录(推荐安装位置):sudo unzip -uo ghost.zip -d /var/www/ghostrm ghost.zip5、移动到新的Ghost目录:cd /var/www/ghost6、更改/ var/ www/ghost目录的所有权:sudo chown -R ghost:ghost .7、切换到新的ghost用户:sudo su - ghost8、导航到文档根/var/www/ghost:cd /var/www/ghost9、仅使用生产依赖项安装Ghost。完成后,就安装了Ghost:npm install --production10、通过更改配置中的生产对象的url、邮件和数据库属性来配置Ghost。js文件:cp config.example.js config.jsvim /var/www/ghost/config.js&&var path = require('path'),& & config = {// ### Production// When running Ghost in the wild, use the production environment.// Configure your URL and mail settings hereproduction: {& & url: 'https://blog.domain.tld',& & mail: {& && &&&transport: 'SMTP',& && &&&options: {& && && && &service: 'Mailgun',& && && && &auth: {& && && && && & user: '',& && && && && & pass: ''& && && && &}& && &&&}& & },& & database: {& && &&&client: 'mysql',& && &&&connection: {& && && && &host: '127.0.0.1',& && && && &user: 'your_database_user',& && && && &password: 'your_database_password',& && && && &database: 'your_database_name',& && && && &charset: 'utf8'& && &&&},& && &&&debug: false& & },& & // . . .& & // . . .注意:您也应该配置邮件设置。查阅官方的Ghost文档如何做到这一点。
11、在生产环境中启动Ghost:npm start --productionGhost现在正在运行。博客前端和管理界面都使用HTTPS加密,而HTTP / 2也在工作。你可以在打开你的浏览器和访问网站。别忘了替换blog.domain。tld与您的域名。12、通过按CTRL + C关闭Ghost进程,从Ghost用户退出到您在开始创建的非root用户:exit运行Ghost作为系统服务如果你用VPS结束你的终端会话,你的博客也会被关闭。那不是很好。为了避免这种情况,我们将使用systemd。它将使我们的博客每天24小时不间断。
创建Ghost服务systemd单元文件。运行sudo sudo vim /etc/systemd/system/ghost.服务及复制/粘贴以下内容:[Unit]Description=Ghost - the professional publishing platformDocumentation=https://docs.ghost.org/v0.11.11/docsAfter=network.target [Service]Type=simple# Edit WorkingDirectory, User and Group as neededWorkingDirectory=/var/www/ghostUser=ghostGroup=ghostExecStart=/usr/bin/npm start --productionExecStop=/usr/bin/npm stop --productionRestart=alwaysSyslogIdentifier=Ghost [Install]WantedBy=multi-user.target启用和开始ghost.service:sudo systemctl enable ghost.service && sudo systemctl start ghost.service检查ghost.service状态:sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service导航到 /并创建一个ghost管理员用户。尽快做到这一点!
结论就是这样。我们现在有了一个完全功能的ghost博客。您的服务器在客户端支持时通过HTTP / 2传递内容。如果你想改变默认的ghost小精灵一个自定义一个主题,主题你可以下载并解压缩到/var/www/ghost/content/themes文件夹并选择通过ghost管理界面,位于。
本文转载于:
我的恩山、我的无线
The best wifi forum is right here.
我还以为是Symantec Ghost呢...
我的恩山、我的无线
The best wifi forum is right here.
Powered by

我要回帖

更多关于 linuxgrep 的文章

 

随机推荐