centos6升级python到2.7版本

有些软件需要安装python2.7,但centos6默认安装的是2.6版本。但yum依赖2.6,所以不能覆盖安装。需要保留两者 编译安装python2.7 wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz tar xvf Python-2.7.14.tgz sudo mkdir /usr/local/python2.7 cd Python-2.7.14 ./configure --prefix=/usr/local/python2.7 --enable-shared make sudo make install 验证 cd /usr/local/python2.7/bin ./python 报错: ./python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory 将python2.7的动态链接库加入到系统会读取的配置中 sudo vim /etc/ld.so.conf # 在该配置文件追加一行:/usr/local/python2.7/lib sudo ldconfig 备份原有的python which python # /usr/bin/python [myhost tmp]$ md5sum /usr/bin/python /usr/bin/python2.6 8505ca7b24f60f8dca8d6d2622ed0563 /usr/bin/python 8505ca7b24f60f8dca8d6d2622ed0563 /usr/bin/python2.6 # 发现已经有python2.6,且与python的md5一致,那就不用备份直接删除了 sudo rm /usr/bin/python 编辑yum的执行程序 sudo vim /usr/bin/yum # 将#!/usr/bin/python 中的python改为python2.6 # 即 #!/usr/bin/python2.6 执行yum验证下,没有报错就ok了 ...

2019-04-09 · 1 分钟 · 143 字

根据pid查找进程所在的执行文件

查看执行进程的文件 sudo ls -l /proc/<pid>/exe 例如,可以看到node这个可执行程序的绝对路径 root@iZ94qht95zsZ ~# ps -ef | grep node root 17078 16750 88 16:47 pts/0 00:00:00 node index.js root@iZ94qht95zsZ ~# sudo ls -l /proc/17078/exe lrwxrwxrwx 1 root root 0 4月 8 16:47 /proc/17078/exe -> /usr/local/node-v10.4.0-linux-x64/bin/node 查看进程的工作目录 上面ps只能看到相对路径的index.js。我们要查看绝对路径可用以下命令 pwdx <pid> 例如,该index.js文件的工作目录为/root/test root@iZ94qht95zsZ ~# pwdx 17078 17078: /root/test

2019-04-08 · 1 分钟 · 50 字

编译安装php7.3

最近在一台CentOS6.2的机器上部署php7.3,系统有点旧,稍微折腾点。 安装需要的依赖 sudo yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel gmp-devel readline-devel libxslt-devel libmemcached libmemcached-devel -y 编译安装 到官网下载最新的稳定版本 注意用户组最好与nginx的保持一致,例如我这里设置与nginx一致的nobody ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl=/usr/local/include/curl/ --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache make sudo make install 编译期间遇到的问题汇总 checking for cURL 7.15.5 or greater… configure: error: cURL version 7.15.5 or later is required to compile php with cURL support 实际上我本地已经安装了最新的版本。–with-curl不指定路径的话,会在/usr/include/curl下找头文件。但我本机已有的libcurl貌似没有这些头文件。尝试`yum install curl curl-devel`,报了一个多版本冲突的问题。所以最后还是从curl官网下载了最新的tar包,手动编译安装后,--with-curl指定路径为/usr/local/include/curl/ ...

2019-03-28 · 1 分钟 · 189 字

编译protobuf.so扩展

在官网下载适合php版本的包。pecl官网 解压 tar zxvf protobuf.tar.gz cd到目录并用phpize生成configure文件 cd protobuf-3.7.1/(如果是从github下载的,则cd到protobuf-3.7.1/php/ext/google/protobuf) phpize 编译三板斧 ./configure --with-php-config=/usr/local/bin/php-config make sudo make install 最后会提示你已经装到指定扩展目录了 Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20180731/ 其它扩展编译也是一样的方式:参考 /posts/compiled-php-extension-in-linux/

2019-03-28 · 1 分钟 · 23 字

用lockf保证同一时间只有一个进程运行

安装 参见github 使用场景 保证同一时间只有一个进程运行。 例如 crontab 设定每分钟跑一次 1.php ,但如果超过1分钟该脚本还没执行完,就会出现多个php脚本同时运行的情况,在某些场景下可能会有问题。 为了满足上述需求,我们可能会在脚本里添加一段代码,创建锁,执行完后删除锁,若锁文件存在则直接return。 还有另一种解决方案就是用 lockf 使用例子: lockf -s -t 0 /tmp/xx.lock /usr/local/bin/php -f 1.php

2019-02-25 · 1 分钟 · 21 字

在mac安装nginx模块

今天有需求需要用到nginx的stream模块,但mac已经安装的nginx默认是不带该扩展的。 我选择了重新安装nginx。 brew tap denji/nginx brew install nginx-full --with-stream #如果已经是最新版本,则会提示nginx版本已安装,可选择重新安装 brew reinstall nginx-full --with-stream 若安装nginx时提示,与已有nginx有冲突。需要先断开软链 brew unlink nginx

2019-01-05 · 1 分钟 · 18 字

给你的Mac/Linux的rm装一个回收站

作为程序员,在工作中经常用到rm。我在不久前用vscode写代码,在底下的终端里想删掉没用的文件,手抖把未提交到git的代码文件删了。还好代码量不多,否则会崩溃。毕竟重写代码是很痛苦的~ 因此本文标题提上了日程 选择一款安全的删除脚本 Github看到一个脚本满足需求。 github地址,里边有多种安装方式。我选择的是npm全局安装。 npm i -g safe-rm 安装后,safe-rm命令就可以用了~ 将安装好的脚本设置为rm的别名 vim编辑~/.bash_profile(或其他bash启动时会执行的文件)。添加 alias rm='safe-rm' 由于我使用了fish-shell,因此还需要在fish启动时会执行的config文件里添加别名:vim编辑~/.config/fish/config.fish。添加 alias rm='safe-rm' Done 添加完之后别忘了重新打开终端窗口哦(或者source刚刚的配置文件)。至此,rm后文件的被mv到~/.Trash。即使是重名的文件也会在文件尾添加时间后缀,保证文件不被覆盖。

2018-10-09 · 1 分钟 · 19 字

HTTPS原理解析

HTTP是什么 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 为了方便通信就必须统一约定好双方的数据协议,如果每个人都搞一套自己的规则,这玩起来就很麻烦了。因此IETF (互联网工程任务组) 推动了HTTP的统一和发展。现在大家用得最多的还是1999年收录于RFC 2616的1.1版本,2015年发布的2.0版本在推广道路上任重道远。 HTTP[S]报文 最直观上的差异,HTTP协议用明文传输报文,HTTPS用密文。 HTTP的缺陷 窃听风险(eavesdropping):明文传输,第三方可以获知通信内容。 篡改风险(tampering):第三方可以修改通信内容。 冒充风险(pretending):第三方可以冒充他人身份参与通信。 HTTPS是什么 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS协议来加解密数据包。 HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性; HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS/SSL)上的常规HTTP协议的称呼。因此HTTPS被称之为身披SSL外壳的HTTP。 SSL/TLS协议 传输层安全性协议(Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障 网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。后面,IETF将SSL进行标准化,称为TLS。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议 协议 年份 描述 SSL 1.0 N/A 从未公开过,因为存在严重的安全漏洞 SSL 2.0 1995 因为存在数个严重的安全漏洞而被3.0版本替代 SSL 3.0 1996 2014年10月Google发现该版本的严重漏洞,建议全面禁用SSL版本 TLS 1.0 1999 IETF标准化后的第一个版本。包括可以降级到SSL 3.0的实现,这削弱了连接的安全性 TLS 1.1 2006 - TLS 1.2 2008 删除了对SSL的兼容。目前使用最广泛的版本 TLS 1.3 2018 截至本文撰写,为建议标准的互联网草案 在TCP/IP模型的位置:介于传输层与应用层之间 ...

2018-08-23 · 3 分钟 · 440 字

排查elasticsearch的cpu居高不下,查询慢的问题

背景 近来es查询很慢,kibana的discover界面偶尔还会因为查询请求超时而无法显示数据。/_cat/indices?v 等对es的查询也慢的出奇,需要1、2分钟才返回结果。 排查 top命令看了es的java进程,发现cpu一直很高,130%左右,一直没有下降过。查看es的日志,发现gc.log中几乎每秒都要触发一次GC Full GC (Allocation Failure)。内存不够用,又没有内存可回收,所以GC也不断。怪不得CPU这么高,大部分时间都用在gc上面了。 处理 调整es可使用的内存大小。编辑config/jvm.options,调整了Xms和Xmx的大小,由原来默认的1g调整为10g。(官方建议这个值不要超过物理内存的50%,也不要超过32G。详见官网说明)接着重启es就好了。观察cpu,虽然偶尔也会彪上130%,但总体来说正常了,查询也变得很快。 ps:es重启后,需要观察logstash是否退出了。如果退出,需要重新把logstash拉起来。 pss:这次是小坑,后面可能还有很多大坑需要踩。后续有cpu高、查询慢的问题也一并归类到该文。

2018-07-16 · 1 分钟 · 13 字

mac卸载和安装java指定版本

2020-04-02更新: 之前的安装方法已经废弃了,可通过以下方式安装 brew tap AdoptOpenJDK/openjdk brew cask install <version> 这里有全部的version列表 例如可以这么安装 brew cask install adoptopenjdk8 之前用brew安装了java9。但我有些软件不兼容,只能降级到java8。这里简单记录下步骤。 卸载 brew cask uninstall java 安装指定版本 brew tap caskroom/versions foam@foamdeMBP: sens » brew cask search java [15:13:54] ==> Exact Match java ==> Partial Matches charles-applejava eclipse-javascript java6 netbeans-java-ee yourkit-java-profiler eclipse-java java-jdk-javadoc java8 netbeans-java-se 估计我没更新brew的缘故,上面只列出java6和java8。java7呢,有点懵逼。 键入下面命令,然后就会自动下载安装了。可能会有点慢。 foam@foamdeMBP: sens » brew cask install java8 Updating Homebrew... ^CWarning: Unexpected method 'license' called during caveats on Cask java8. Follow the instructions here: https://github.com/caskroom/homebrew-cask#reporting-bugs ==> Caveats This Cask makes minor modifications to the JRE to prevent issues with packaged applications, as discussed here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361 If your Java application still asks for JRE installation, you might need to reboot or logout/login. ==> Satisfying dependencies ==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-macosx-x64.dmg ######################################################################## 100.0% ==> Verifying checksum for Cask java8 ==> Installing Cask java8 ==> Running installer for java8; your password may be necessary. ==> Package installers may write to any location; options such as --appdir are ignored. Password: ==> installer: Package name is JDK 8 Update 172 ==> installer: Installing at base path / ==> installer: The install was successful. 🍺 java8 was successfully installed! 确认下,ok了。 ...

2018-06-29 · 1 分钟 · 206 字