树莓派搜索包含特定字符的文件

grep -rn -R "about-banner-image-1.jpg" *
* : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

下面是一些有意思的命令行参数:

 

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, 

grep -l pattern files :只列出匹配的文件名, 

grep -L pattern files :列出不匹配的文件名, 

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), 

grep -C number pattern files :匹配的上下文分别显示[number]行, 

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行, 

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。 

这里还有些用于搜索的特殊符号:

 

\< 和 \> 分别标注单词的开始与结尾。

例如: 

grep man * 会匹配 ‘Batman’、‘manic’、‘man’等, 

grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’, 

grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。 

'^':指匹配的字符串在行首, 

'$':指匹配的字符串在行尾,  

树莓派安装SSL证书

https://blog.csdn.net/qq_33957967/article/details/121556337?share_token=AB2131E0-979C-44A8-A330-880AF729D1EA&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1

根据自己的网站服务器来选择下载不同的ssl证书包括:

1_root_bundle.crt # 证书文件

2_xxx.xxx.xxx.crt # 证书文件

3_xxx.xxx.xxx.key # 私钥文件

配置证书

在这里,我假设你已经会配置基本的/etc/apache2/sites-available/000-default.conf这个文件来达到已经可以通过 http 的方式来访问你的站点。

在/etc/apache2这个目录下,有两个有关的目录sites-available和sites-enabled,我们进入sites-enabled目录下可以发现,里面有一个文件000-default.conf

lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf

实质上这个文件是/etc/apache2/sites-available/000-default.conf这个文件的软链接。

我们要配置另 ssl 证书,要依靠另一个文件,也就是default-ssl.conf,首先我们需要设置一个软链接,把这个文件链接到sites-enabled这个文件夹中:

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

然后去修改这个文件000-default-ssl.conf,因为已经做了软链接,其实这时候修改000-default-ssl.conf或default-ssl.conf都一样。

nano /etc/apache2/sites-enabled/000-default-ssl.conf

这个文件没有做任何修改前长这样子(去除自带的注释之后):

	<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	SSLEngine on

	SSLCertificateFile	/etc/ssl/certs/ssl-cert-snakeoil.pem
	SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

	<FilesMatch "\.(cgi|shtml|phtml|php)$">
			SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory /usr/lib/cgi-bin>
			SSLOptions +StdEnvVars
	</Directory>

</VirtualHost>

然后把下载好的证书(3个文件)传到你自定义的目录中

然后我们需要修改一下,修改成这样:

	DocumentRoot /var/www/你的目录
    ServerName 你的域名

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	SSLEngine on
	# 注意,需要添加这三行
	SSLCertificateFile 你自定义的路径/2_xxx.xxx.xxx.crt
	SSLCertificateKeyFile 你自定义的路径/3_xxx.xxx.xxx.key
	SSLCertificateChainFile 你自定义的路径/1_root_bundle.crt

	<FilesMatch "\.(cgi|shtml|phtml|php)$">
			SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory /usr/lib/cgi-bin>
			SSLOptions +StdEnvVars
	</Directory>
</VirtualHost>

重要的三个参数的作用如下表:

配置文件参数 说明
SSLEngine on 启用 SSL 功能
SSLCertificateFile 证书文件
SSLCertificateKeyFile 私钥文件
SSLCertificateChainFile 证书链文件
改好之后保存。

然后这时,我们加载一下 Apache2 的 SSL 模块:

sudo a2enmod ssl   #加载模块
sudo service apache2 restart # 重启服务

这时,在浏览器输入https://你的域名应该已经可以通过 https 的方式来访问网站了,这时浏览器那里应该也已经有了一个绿色的小锁。

但是,但是…这还不够,因为我们如果不主动输入https://的话,直接输入域名,还是会直接跳转到 80 端口的普通的 http 方式访问,所以我们需要强制使用 https 来访问

强制使用https

我们只需要打开/etc/apache2/sites-available/000-default.conf这个文件,在你的VirtualHost*:80这个标签内随便一个地方加上三行:

nano /etc/apache2/sites-available/000-default.conf
RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

然后保存,然后启动 Apache2 的重定向:

 sudo a2enmod rewrite

然后再重启 Apache2,至此大功告成:

sudo service apache2 restart

然后,打开浏览器直接输入域名,就会自动跳转到 https 的方式。