您正在查看: 学习心得 分类下的文章

Centos下给PHP开启fileinfo扩展

由于需要用到fileinfo,而编译安装php的时候恰巧忘了安装fileinfo,现在给php配置fileinfo扩展,并记录下过程仅供参考。


首先如何查看php是否安装了fileinfo扩展?
在vps上直接运行php -m命令即可查看PHP已经安装了哪些扩展;
或者新建一个PHP文件,写上如下内容:

<?php
    phpinfo();
?>

将PHP文件上传至网站目录,访问文件即可在线查看PHP的配置信息。


下面看如何开启PHP的fileinfo扩展
1.找到phppize目录,一般在安装好的php目录下,可使用find / -name fileinfo命令来查找,找到在哪后进入该目录;
QQ截图20181130153434.png

2.在fileinfo目录下执行/www/server/php/72/bin/phpize命令,命令中的命令为自己服务器的实际路径为准;
执行成功后会有如下提示:

Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718

3.找到安装PHP文件的源目录,如果实在找不到的话可重新下载相同版本的PHP解压即可,
这里我目录为:/www/server/php/72/bin/php-config

4.配置php-config路径,以自己服务器的实际路径为准;

./configure --with-php-config=/www/server/php/72/bin/php-config

5.编译安装

make && make install

如果安装成功,会有类似以下信息

Installing shared extensions:     /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/

6.修改PHP配置文件php.ini,这里我的文件路径为:/www/server/php/72/etc/php.ini
在后面加入如下一行:

extension = fileinfo.so;

7.最后重启nginx以及php-fpm这个时候phpfinfo信息里就会出现fileinfo,到此fileinfo安装完毕~ 太开心.png

nginx下禁止访问.git等隐藏文件夹

今天进腾讯云的控制台 偶然发现腾讯云一直给我提示的漏洞 其中有一个挺为严重的 汗.png
QQ截图20180626155743.png

我的网站配置下并没有屏蔽隐藏文件夹例如.git等文件夹的访问 甚至可以直接下载隐藏文件夹的内容 啊.png
确实是我没有想到的 如果你也有这种情况 就需要进行配置服务器来禁止敏感文件的访问了 否则就直接暴露在大庭广众之下了...

nginx的配置很简单
在server{}段内增加
代码如下:

location ~ /\.
{
deny all;
}

这样就把所有的隐藏文件夹给屏蔽访问了 如果想单独屏蔽某一隐藏文件夹的访问只需要

location ^~ /.git
{
return 444;
}

使用frp搭建内网穿透和基友畅玩我的世界

嗨啊,毕业答辩完了,基本上我也是个准毕业生了! 太开心.png
离校前还有半个月无所事事,准备下周去和室友出去旅旅游? 滑稽.png
不过我们一致决定准备重新搞一搞我的世界 小乖.png
这个游戏可谓是自带毒品属性,一玩起来就是废寝忘食..... 懒得理.png
开个服务器光内网能玩有什么意思?隔壁大学的基友还想加入战斗怎办? 挖鼻.png
刚好手上有一堆服务器,那就自己动手搭建一个内网穿透吧! 酷.png


以前我使用ngrok搞过内网穿透,不过编译和配置太过麻烦还有现在作者已经弃坑了,准备找一个更好用的内网穿透工具
在gayhub上搜索一番,发现有个国人的项目frp好像挺厉害的样子,光star就有12k,于是准备搭一个玩玩 真棒.png
项目地址:https://github.com/fatedier/frp
中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
具体各种情况下的配置 文档已经说明的很全面了,在这里我就用我的世界内网穿透搭建进行简单的说明:
原理:使用frp搭建内网穿透,将本地内网端口23333映射到远程公网服务器23333

开始配置:

根据对应的操作系统及架构,从 Release 页面下载最新版本的frp程序
这里我本地用的win10 远程服务器使用的centos6
下载相对应的程序后
frpsfrps.ini 放到具有公网 IP 的机器上。
frpcfrpc.ini 放到处于内网环境的机器上。

修改配置文件将内网端口映射到公网服务器

1.修改 frps.ini 文件,这里我使用了最简化的配置并且开启了面板,服务器记得放行相应端口 汗.png

[common]
bind_port = 7000

dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admim
# 可使用 服务器ip:7500 来访问面板

- 阅读剩余部分 -

let's encrypt泛域名野卡证书配置笔记

今天听说let's encrypt的泛域名野卡证书正式上线了,测试了那么久....
本以为是有生之年系列,不过能赶上还是美滋滋的 太开心.png
泛域名证书就比单域名证书方便的多了,一次签发所有子域名通用 只需要担心续期问题就行了
这里我用的是acme.sh自动签发的
Github:https://github.com/Neilpang/acme.sh
官方中文说明:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

开始配置:

1.安装acme.sh

安装很简单 一个命令就搞定了

curl  https://get.acme.sh | sh

安装成功后就自动吧acme安装进了用户目录下的.acme目录中了,并且自动把acme.sh添加进了用户环境中,可以很方便的直接使用acme.sh命令。

2.获取证书

这里我使用dns自动验证方式验证域名所有权
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成
具体可参考官方文档:https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

由于我的dns解析使用的CloudXNS 所以可以直接在我的CloudXNS 设置中获取dns api
获取自己的dns api就可以进行配置了

export CX_Key="1234"
export CX_Secret="sADDsdasdgdsf"

配置好dns api后使用下面的命令 来获取证书(请替换ffis.me为自己的域名)

acme.sh   --issue   --dns dns_cx  -d ffis.me -d *.ffis.me

需要注意的是第一个 -d 后不可直接写通配符域名*.xx.com,一定要写个单域名,第二个 -d 后面可以写泛域名。
否则可能会出现签发的证书无法被信任的情况。

到这里我们的证书就自动获取到用户目录下的.acme.sh文件夹下了,建议将证书文件复制到其他目录使用,
可用以下命令自动复制到指定目录:

acme.sh  --installcert  -d  ffis.me   \
        --key-file   /usr/local/nginx/conf/ssl/ffis.me/*.ffis.me.key \
        --fullchain-file /usr/local/nginx/conf/ssl/ffis.me/*.ffis.me.cer \
        --reloadcmd  "service nginx force-reload"

该命令会被自动记录的 以后自动更新证书的时候也会自动执行该命令的

PS:acme.sh会在60天以后自动更新证书

centos7下python3与python2共存并且开启py3虚拟环境

因为下载视频需要用到python3环境,今天在我的win上安装下载工具死活安装不上去,在大盘鸡上一下就安装成功了...
可能在win上不兼容吧...无奈只能在大盘鸡上进行折腾了,顺便几个笔记

由于大盘鸡上好多程序基于python2的,所以就没法直接替换掉系统内置的环境,所以需要单独安装python3并且开启虚拟环境,这样就互不影响了,

1.首先安装所需要的依赖环境(别管用到用不到,装就对了!)

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2.下载最新的python Python官方网站下载 我这里最新版是python 3.6.4

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

3.解压下载的压缩文件,并且进入解压后的目录

tar -zxvf Python-3.6.4.tgz
cd Python-3.6.4

4.创建Python3的安装目录

mkdir /usr/local/python3

5.开始编译安装python3

./configure --prefix=/usr/local/python3
make && make install

6.创建python3pip3的软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

7.测试安装后的python3pip3命令

[root@host]# python3 -V
Python 3.6.4
[root@host]# pip3 -V
pip 9.0.1 from /usr/local/python3/lib/python3.6/site-packages (python 3.6)

到此python3就单独安装完成了,也不影响系统内置的python2环境
可是系统中并没有python3环境,有些软件需要运行在python3环境中,
这时候我们就需要创建一个虚拟的python3环境了
创建虚拟环境很简单,运行以下命令即可

cd /opt
python3 -m venv py3

此时虚拟环境已经安装好了
虚拟环境使用方法:
进入虚拟环境

source /opt/py3/bin/activate 或者
. /opt/py3/bin/activate

进去后是这样的
QQ截图20180125233726 (1).png
红框内即是所运行的虚拟环境
如需退出虚拟环境,使用deactivate命令即可。
好了,centos7python3的虚拟环境搭建完成!

个人私有云搭建-Nextcloud安装笔记

PS:前几天百度云开始对使用第三方下载工具的账号封号 不高兴.png ,现在基本已经没有免费好用的网盘供我们使用了...
对于手中有服务器并且乐于折腾的小朋友来说,搭建个人私有云来储存我们的大姐姐最合适不过了,也安全。
在这里我就搭建Nextcloud私有云的过程,写成笔记记录下来,供大家参考和自己学习使用 乖.png

Nextcloud

Nextcloud是一个免费专业的私有云存储网盘开源项目,可以让你简单快速地在个人/公司电脑、服务器甚至是树莓派等设备上架设一套属于自己或团队专属的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。

简单的说,Nextcloud就是一个功能非常强大的免费开源的私人网盘程序,因此只要你的设备性能和空间充足,那么使用起来几乎没有任何限制。唯一的门槛就是安装和配置Nextcloud服务端的时候需要一点点的折腾。
软件截图:
nextcloud1.jpg
nextcloud2.png

下面我们开始折腾

- 阅读剩余部分 -

短网址生成器上线辣~

QQ截图20171231125050 (1).png

传送门 https://api.ffis.me/url/index.html
滑稽.png 滑稽.png 滑稽.png 滑稽.png 滑稽.png

基于新浪的短网址生成器,能自动识别网址类型,输入长网址自动缩短,输入短网址则一键还原。

注:仅支持 t.cn 的短网址还原

Centos下Git1.7.1升级Git1.15.1

今日腾讯云给我提示服务器存在一个Git的安全漏洞
QQ截图20171211221905 (1).png

虽然我基本不怎么用,但是老提示也是心烦,就顺便给Git升个级吧

之前的git是从yum一键安装的,由于centos6的yum里面的git最新版本也就是1.7.1,所以这里我们需要自己重新安装下git(截至目前官方最新版本git是1.15.1)

开始升级

首先我们要卸载已经安装的git 这里可以用git –-version命令查看当前的版本
卸载git

yum remove git

然后我们配置安装所需要的环境(以下内容基本照抄了nummy的代码)

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto perl-devel perl-CPAN autoconf*

下载最新版本编译安装并将git添加到环境变量中

wget https://github.com/git/git/archive/v2.15.1.tar.gz
tar zxvf v2.15.1.tar.gz
cd git-2.15.1
make configure
./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
make all doc
make install install-doc install-html
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc

到这里的Git应该安装并配置完成了
我们可以运行git --version来查看下刚刚安装的git版本号

# git --version
git version 2.15.1

完结撒花~

强制客户端刷新js/css浏览器缓存

由于经常魔改主题,就会发现如果之前浏览器已经缓存了js/css等文件
当服务器中的js/css文件更新了,客户端直接访问是不会更新缓存的,就会导致页面显示不正常
需要用户进行Ctrl+F5强制刷新才能正常访问,这样显然是不合理的

经研究发现两种解决办法:

方法1 更新文件后更改引用的文件名

缓存是通过文件名标记缓存的内容的,如果我们网站更新了js/css文件后,直接在更换引用文件名即可
例如:原先调用语句是如下样式

<link rel="stylesheet" href="customs.css" />

直接更改引用的文件名即可

<link rel="stylesheet" href="customsV2.css" />

方法2 给css/js等文件加个版本号

如果我们每次更新js/css文件后还要修改文件名就有点麻烦了,更为方便的方法就是在引用js/css的结尾处加入版本号即可
例如:原先调用语句是如下样式

<link rel="stylesheet" href="customs.css?v=1.0" />

更改css文件的版本号为1.1

<link rel="stylesheet" href="customs.css?v=1.1" />

参数说明

1.js/css文件后的问号是不起任何作用的,仅能当做后缀使用的,所以可以用问号加入版本号等信息,更新文件版本的同时也可以刷新浏览器的缓存,很是方便。
2.问号后面不一定是版本号,可以根据自己的喜好改成任何字符都行,如时间(?20171209),序号(?123456)等等。
3.加上版本号的脚本实际上并不存在,由服务器动态生成,仅仅是区别文件而已。

<link rel="stylesheet" href="customs.css?v=1.1" />
# 这段代码对于文件来说等价于
<link rel="stylesheet" href="customs.css" />

但是浏览器就会认为它是这个文件的某一个版本

PS:两种方法达到的效果是一样的,可以根据自己的喜好选择,也可以混合使用。

Typecho友情链接插件Links越权漏洞

今天下午写完论文无聊的逛大佬博客,在一个大佬博客发现了一个友链BUG,在自己的Demo站上试了试,还真有这个BUG,于是就转载了这篇文章,使用友链插件还未修复的dalao们一定要抽空修复下~
原文地址:https://wischu.com/archives/791.html

以下为转载内容

趁着这几天学校刚开学能有稍微有多一点空余时间,便对博客的插件进行了一次检查维护。当维护到友链插件Links时,留意到一个比较奇怪的问题,在插件目录下负责处理后台管理友链请求的Action.php之中的全部方法没有做任何权限验证,一开始我以为Typecho本身会对这些请求作相应认证工作,但是经过一些测试之后证实这是一个允许越权以及表单欺骗的漏洞。

所有Links插件版本为 1.1.1 或之前的用户都可能受到本漏洞影响。
发现Links新增友链表单项目未做过滤,可以配合此漏洞实施跨站攻击,请受影响用户立即检查并修补。

漏洞修补

- 阅读剩余部分 -

  1. 1
  2. 2
  3. 3
  4. 4