编辑~/.vimrc文件,加上如下几行: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
月份:2019年9月
不重新编译php, 单独编译添加扩展
文章来源: https://blog.csdn.net/qmhball/article/details/79015888
之前给php安装一个LDAP扩展,查了下如何在不重新编译php的基础上,添加l扩展的方法。
问题
php自身提供了很多扩展,比如curl,gmp, mbstring等等。我们在编译安装php时未必安装了所有扩展。那么在安装完php后,如果想单独安装某个php自身的扩展怎么办呢?
我们以curl扩展模块的安装为例说明如何单独添加扩展。
步骤
1.进入php源码的扩展目录。本例中我的源码对应目录如下:
/data/src/php-7.0.14/ext
2.进入模块目录,我们安装的是curl扩展,所以进入curl目录。此时,我们所在的目录是
/data/src/php-7.0.14/ext/curl
3.执行phpize。注意,如果你的机器上有多个php版本,一定要执行你准备安装扩展的php版本对应的phpize。比如,我的机器上同时有php7和php5.3.3。我当前准备为php7安装curl扩展。所以执行php7对应的phpize
/usr/local/php70/bin/phpize
结果类似:
/usr/local/php70/bin/phpize 结果类似: Configuring for: PHP Api Version: 20151012 Zend Module Api No: 20151012 Zend Extension Api No: 320151012
4.执行
./configure --with-php-config=/usr/local/php70/bin/php-config
PS:如果你的机器上只有一个php版本,大多时候不需要特别使用–with-php-config指明相应的php-config所在位置。
5.执行make,之后会在./modules/目录下生成curl.so文件
6.执行make install
结果类似: Installing shared extensions: /usr/local/php70/lib/php/20151012/
执行结果告诉你将curl.so安装到了哪个目录。
一般情况,如果你正确的指定了php-config或者你的机器只有一个php版本,so都会被正确安装到相应php的extension_dir。如果执行make install后,extension_dir目录下没有相应的so,可以手动将第5步中生成的so文件cp过去。
要查看具体extension_dir,可以执行如下命令。
php -i| grep extension_dir
结果类似 extension_dir => /usr/local/php70/lib/php/20151012/ => /usr/local/php70/lib/php/20151012/
7.在php.ini中增加
extension=curl.so
如果不知道php.ini的具体位置,可以通过如下命令查看
php --ini
8.执行如下命令,查看是否安装成功
php -m | grep curl
如果你看到了curl, 恭喜你,安装成功!
注意:如果你是使用fpm,apache等方式执行php。在修改相应的php.ini后,还需要重新启动fpm或apache,新的扩展才会生效。
git 配置文件
Git 提供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
1./etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件。
2.~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件。
3.当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:
$ git config --global user.name "peter" $ git config --global user.email peter@example.com
a. git 查看当前用户的配置
git config –global –list
b. git 查看系统config
git config –system –list
c. git 查看当前仓库的配置
git config –local –list
可以在配置文件里设置忽略filemode, 忽略一些不应该被提交的文件。
类似于这样:
PS: 设置忽略提交文件其他方法
【方式一】
在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件)。
.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。
【方式二】
通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。
跳板机ssh_config 配置
跳板机或堡垒机,有的时候需要快速登录到各个服务器上,在我们了解ssh命令之后,于是我们用下列这样的命令跳到服务器上:
ssh username@hostname -p port 然后输入密码
这样很麻烦,每次都要输入一大串,还要记ip,于是ssh config可以满足要求:
ssh 别名 //可以很方便的登录到各个服务器上
配置方法:在/etc/ssh/ssh_config文件中
Host web1 HostName 主机名 User 用户名 Port 端口号 (如果端口号是22,可以不写)
配置好后,就可以ssh 别名直接登录过去,但是还是需要输入密码,解决方法是将公钥拷贝到目标机器上
1.密钥生成
ssh-keygen -t rsa //然后一直回车就可以了
2.拷贝公钥
scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/ (公钥拷贝到目标机器)
目标机器: cat id_rsa.pub >> .ssh/authorized_keys
3.重启服务器的ssh
/etc/init.d/ssh restart
最后就可以通过 ssh 别名的方式,从跳板机登录到各个服务器上了
工作中常用linux 命令(持续更新)
A.scp 用于linux之间复制文件与目录
1.远程传输到本地
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 scp -r www.runoob.com:/home/root/others/ /home/space/music/
2.本地传输到远程
scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file
B.tar命令–打包与解压
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg tar -cvzf xyz.tar.gz --exclude=xxx/libs xxx //压缩xxx目录,排除xxx/libs目录,多个排除用多个--exclude
tar -xzvf jdk-8u131-linux-x64.tar.gz -C /usr/local/java //解压到指定目录
按文件中列表来打包文件 1.cat package.list | xargs tar czvf phpletu.tar.gz 其中package.list 是要打包的文件列表 2.tar -czvf -T package.list -f /backup.tar.gz -T选项可以指定打包package.list文件列表里的文件
C. 删除除了某个文件名之外的所有文件
find -type f ./* | grep -v '保留的文件名' | xargs rm
D. linux 如何合并文件?
cat a1.sql a2.sql a3.sql > a_all.sql 或者 cat *.sql > merge.sql
E. sed 替换文件内容
sed -i s/xxx/yyy/g 文件名
F. du 查看磁盘文件目录占用空间大小
du -ah --max-depth=1 | sort -rn (这样由于h参数,带有字母,所以排序不是想要的) 不排序的话,我之前常用的是du -ah --max-depth=1 -s 仅显示总计 -d1(--max-depth=1) 超过指定层数的目录后,予以忽略 -s 和 --max-depth=1 是矛盾的,所以不能同时使用 -a 输出所有文件的磁盘用量,不仅仅是目录 结论: du -s * | sort -rn 这样可以 du -s * | sort -rn | head -n 10 显示前10
G. 查询access log 里ip 出现前几的ip
假设access log格式如下: {"@timestamp":"xxx","time:local":"yy","remote_user":"","host":"zzz","remote_addr":'ggg',"http_real_x_ip":"ddd"} 假设取remote_addr这个作为统计ip cat access_log.2019-11-30 | cut -d ',' -f 5 | awk -F ':' '{print $2}' | sort | uniq | head -n 10 cut -d 以xxx为分隔符,分隔单行的字符串这里以逗号为分隔符 -f 取分隔后的第几段 这里取第6段 awk -F 以xxx为分隔符 '{print $2}' 打印第二段 awk 这里也可以继续换成 cut -d ':' -f 2
H. grep 查找字符串命令
//在当前目录下,所有文件中搜索Hello world字符串,并显所在行 grep -nR --color=always 'Hello world' ./*
grep 'xxxx' xxx.log > out.log or cat xxx.log | grep 'xxxx' > out.log
满足两个条件中的一个条件(包含"xx" 或者包含"yy")的命令 grep -E 'xx|yy' xxx.log > out.log cat xxx.log | grep -E 'xx|yy' > out.log
H. 查找指定扩展名文件中含有xxx的内容
find . -name '*.php' | xargs grep -nR --color=always '&new'
I. 查找多条件求与
//grep -E 'A.*B.*C.*D' ./file grep -nR --color=always -E 'u6bcf.*u65e5.*u63d0.*u9192' ./tapd_cloud_send_mail-2020-01-09.*