给阿里云linux服务器安装php 5.6

1. 首先使用yum安装依赖包

  yum install -y bzip2 libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel gd-devel zlib-devel

2. 下载 mcrypt 库编译安装

wget https://jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2
tar -xjvf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure
make && make install
cd ..

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -xzvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install

3.下载php安装包,并编译安装


./configure --prefix=/usr/local/php5637 --with-config-file-path=/usr/local/php5637/etc \
  --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=www \
  --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
  --enable-opcache --enable-mbstring --enable-soap --enable-zip --enable-bcmath --with-openssl \
  --with-zlib --with-curl --with-gd --with-zlib-dir=/usr/lib --with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib \
  --with-mhash --with-freetype-dir --with-mcrypt --enable-gd-native-ttf \
  --with-xmlrpc --with-iconv-dir=/usr/local/libiconv

3.添加运行需要的账号和组

groupadd www
useradd php-fpm -M -s /sbin/nologin -g www

4. 复制一个配置文件,默认php fcgi 端口为 9000, 可以修改php-fpm.conf设置为其他值

cp php.ini-production /usr/local/php5637/lib/php.ini
cd /usr/local/php5637/etc
cp php-fpm.conf.default php-fpm.conf

5.启动php

/usr/local/php5637/sbin/php-fpm

6.查看php-fpm运行情况

netstat -ltunp | grep 9000
#或者
lsof -i :9000
#或者
ps -fe |grep php-fpm

7. 将php-fpm 启动命令添加到 /etc/rc.local 中,开机就运行

Popularity: 1% [?]

Random Posts

一起Linux防火墙造成的服务端口不能访问小故障的解决方法

在Linux服务器上新开了一个tomcat服务,端口设置为 8081, 结果远程机器打开不了,在本机通过 curl 127.0.0.1:8081 可以正常输出页面内容。
检查机器防火墙没有开启,iptables没有开启,不知道是什么问题
最后执行如下命令解决(也就是将防火墙服务状态复位一下)
systemctl stop firewalld
systemctl start firewalld
systemctl stop firewalld

可能是系统的一个bug吧

Popularity: 1% [?]

Random Posts

Nvidia Jetson TX2 使用ubuntu 16.04刷Jetpack 3.2碰到的一些坑

刚入手了一块Nvidia Jetson TX2的开发套件,首先刷机到jetpack 3.2碰到的一些坑以及解决方法。
坑1: 机器缺少Hdmi的连接线
解决方法:网上新购一条,又等了几天才能接上开发板用

坑2:PC主机使用的是虚拟机安装的Ubuntu 16.04,磁盘预留空间不足,导致安装中途磁盘空间耗光,安装失败
解决方法:将虚拟机建在一个空闲空间大的的磁盘上,
不要信网上说的只要10G左右空间就好,那只是要安装到板子上的镜像大小,还需要下载的资源空间,以及虚拟机系统自身所要的空间。
最后总的虚拟机镜像需要35G不到一点。其中写到板子上的系统空间约11G,下载的cuda开发包等下载文件需要4G左右,PC端的程序安装了几个G
安装完成后,可以将安装目录下的板子镜像相关文件删除,可回收约10来G磁盘空间。

坑3:安装过程中,需要联网下载资源包,速度太慢,耗了一天没有下载完毕。
解决方法: 选择一个靠谱的源,开始相信阿里,选择阿里的源,结果不用说了,换了163的源,速度一下飞起

坑4:这个问题是坑3带来的,因为速度太慢,中间终止掉了安装进程,结果换源 apt-get update 命令时会报
“无法下载 http://mirrors.163.com/ubuntu/dists/xenial/multiverse/binary-arm64/Packages 404 Not Found [IP: 2001:67c:1560:8001::14 80]”
等错误,不应该的
解决方法:google搜索了一下,只需要两个命令即可解决
sudo apt-get remove .*:arm64
sudo dpkg –remove-architecture arm64
然后 sudo apt-get update 一下

坑5:向板子上写入系统前,选择的网络是第一个PC和板子公用路由的方式,结果因为虚拟机是NAT方式,给板子写入系统后,没有能找到板子的IP
解决方法:退出安装程序,重新运行安装命令,选择自定义安装,不要选将系统写入板子。
一路next,提示输入IP地址和账号时,在板子上用ifconfig 看下板子的IP,输入账号密码,继续安装即可

坑6:按照提示信息以恢复模式启动板子后,PC上lsusb没能看到有Nvidia Corp字样的行
解决方法:很简单,拔掉usb线,重新接一下,然后lsusb可以看到了,之前怀疑步骤错误,反复关电源重启好多次,都以为是板子坏了.

基本系统刷好,后面就可以安装Tensorflow, Caffe等框架了,有空再慢慢研究。
安装Caffe: https://blog.csdn.net/wyr_rise/article/details/79620903
安装Tensorflow: https://github.com/peterlee0127/tensorflow-nvJetson
使用别人编译好的whl直接安装,免去漫长的编译时间

Popularity: 2% [?]

Random Posts

网站部署https遇到的一些坑

由于被运营商时不时的劫持篡改页面内容导致客户投诉,下定决心部署https彻底解决数据被劫持问题,
部署https过程中刚碰到了如下一些坑,逐个解决
1. ssl证书问题,部署后部分浏览器打开会提示证书链不完整,请求不会发送到服务端
解决方法:证书商那里签发的有两张证书,一个是我们网站的证书,一个是他们的中间证书,需要将两个证书的内容拷贝合并到一起(自己的要放在前面)
2. 部分页面打开后,浏览器上还是http协议头, 但是在公司测试服务器上同样配置确没有这个问题
因为使用的阿里SLB将443端口反向到后端80端口上,在nginx服务器上有配置一些rewrite跳转,自动适配请求的 $schema, 需要强制设置为 https
3. 部分页面js/css资源地址还是引用的http地址
原因同2,部分代码中是使用请求来的协议决定输出http还是https的,修改强制地址https问题解决

– 前面问题 2和3 都是配置 SLB 将443端口透传到后端80端口造成的,如果配置 443 到 443 则没有上面的问题

Popularity: 2% [?]

Random Posts

MySQL的JDBC驱动保存数据出现 java.lang.AbstractMethodError: Method .. is abstract的问题解决方法

软件使用JDBC连接数据库,因为使用MySQL数据库,于是将机器上以前安装其他软件备份的Mysql驱动拷贝了过去,没有想到在软件中保存数据时出现

Exception in thread “main” java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setCharacterStream(ILjava/io/InputStream;J)V is abstract
at com.mysql.jdbc.PreparedStatement.setBlob(PreparedStatement.java)

错误,折腾了软件的各项配置好久,一保存数据就出错。到软件官网上看了下也没有人提到这个问题,应该是我这边自己的问题。想着到MySQL官网上看看有无新版本的JDBC驱动程序,发现果然有,
下载后替换原有驱动,重新运行软件,可以正常保存。以后安装软件还是先检查一下是否有依赖的新版本,防止不必要的麻烦。

不是总是安装新的依赖包就是好的,有些软件安装了最新的依赖包,反而不能正常运行,如果软件有说明适配的依赖软件版本,最好还是按照软件说明中明确说明的依赖版本来,减少不必要的麻烦。

Popularity: 2% [?]

Random Posts

Tomcat配置SSL支持出现java.lang.IllegalArgumentException: None of the [protocols] specified are supported by the SSL engine : [[TLS]] 问题解决

一个Java的应用要配置TLS支持,按照软件的安装说明,给Tomcat的Server.xml中添加


重新启动Tomcat后,提示如下严重出错信息

严重 [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["https-jsse-nio2-9443"]
 java.lang.IllegalArgumentException: None of the [protocols] specified are supported by the SSL engine : [[TLS]]
        at org.apache.tomcat.util.net 

.SSLUtilBase.getEnabled(SSLUtilBase.java:90)

经过一番网上搜索和尝试,发现添加如下几行内容到端口8443的配置中,重启Tomcat后问题解决

 SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
 ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
 SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"

Popularity: 2% [?]

Random Posts

树莓派登陆密码忘记的处理方法

买来玩的树莓派长时间没有登陆,忘记登陆密码了,网上找了一些重置密码的方法多是是使用命令行要外接显示器的方式,对我ssh登陆的不适用。
想来因为树莓派是linux系统,直接修改shadow文件将pi账号的密码修改为一个已经知道的密码,再登陆后修改一下就好。
首先拆卸下树莓派上的SD卡,使用USB连接器接到电脑上,直接接的windows系统,看不到shadow文件,于是安装一个linux虚拟机,在虚拟机中挂载。
首先在Linux虚拟机中用root账号创建一个临时测试账号,对账号设置一下密码

  1. useradd test
  2. passwd test
  3. cat /etc/shadow

提示密码输入的时候输入 test 作为密码,可以看到如下一行

test:$6$AVQjiImu$S.cv1b2ZgI32ddDye6ehRYPCI/hpfPDofuZXUQHTXpBgUA3kFVLUYsOPXybaAX7EwZfrvkT0Udcw36Ye.6P140:17429:0:99999:7:::

test后面两个冒号之间的字符串,就是密码test对应的值
拷贝出来,修改树莓派中shadow的pi那行的值,得到

pi:$6$AVQjiImu$S.cv1b2ZgI32ddDye6ehRYPCI/hpfPDofuZXUQHTXpBgUA3kFVLUYsOPXybaAX7EwZfrvkT0Udcw36Ye.6P140:17429:0:99999:7:::

保存,将SD卡弹出插回到树莓派中,开机重连,使用密码 test 做为登陆密码,顺利进入。

Popularity: 3% [?]

Random Posts

cygwin下strptime函数找不到的解决方法

一段代码使用到了 strptime 这个函数,之前在cygwin下gcc 4.9.3 可以编译通过,重装cygwin后,新的gcc 6.3.0 编译不通过,strptime是不可识别的,
在cygwin的include目录下执行

 find . -name "*.h" |xargs grep strptime

发现定义在 /usr/include/time.h 中,需要先定义 __XSI_VISIBLE 才会有,查看了一下__XSI_VISBLE定义出现的地方
在Make文件中添加 -D_XOPEN_SOURCE=700 重新编译,问题解决

Popularity: 3% [?]

Random Posts

关于PKCS5Padding与PKCS7Padding对齐方式的区别

近日使用C++写一DES加密算法和对方java写的接口做加解密的通信处理,碰到加密后的数据对方界面不了的问题,发现两边对齐方式不一致,对方使用PKCS5对齐,我这边使用了PKCS7做数据对齐。修改为PKCS5方式对齐后问题解决。
借此重新温习了一下两个对齐方式的处理过程。
以8个字节为一组,如果数据不足8位,则以8位做对齐,末尾填充缺少的字节数量。
比如有数据 FF FF,
缺少6个字节,则需要补充6个字节的06,达到8位长度
补充对齐后 FF FF 06 06 06 06 06 06

PKCS5 对齐 和 PKCS7 对齐的区别在于
PKCS7 末尾的值区间为 1,2,3,4,5,6,7 也就是最多补充7个字节
PKCS5 末尾的值区间为 1,2,3,4,5,6,7,8 也就是最多补充8个字节,
也就是PKCS5在数据长度刚好能为8整除时,后面继续补充8个字节的08,而此时PKCS7是不做字节补充的
想比较PKCS7而言PKCS5能更好的还原实际加密数据的长度,
比如有8字节长度数据 FF FF FF FF 04 04 04 04,
在PKCS7时是不做字节补充的,当解密完成后就不知道是否需要移除尾部的4个字节的04
而PKCS5时,则需要再补充8个字节的08,得到 FF FF FF FF 04 04 04 04 08 08 08 08 08 08 08 08 解密后可以正确还原得到 FF FF FF FF 04 04 04 04

Popularity: 3% [?]

Random Posts

VS2015下CUDA代码编译异常的一点小问题解决方法

安装了 VS2015后,下载了CUDA 8.0安装,试了一个.cu文件编译正常通过,
继续安装了一个Intel parallel_studio_xe_2016, 然后使用 Intel 的C++编译器进行编译,结果nvcc编译.cu文件时候报错,一些c++库的头文件解析不通过,
网上搜索了一下,没有找到解决方法。

自己对比了一下使用VS 的C++编译器和 Intel 的C++编译器时,在控制台输出的nvcc命令,发现 –cl-version 参数值不同

使用VS2015的C++编译器时,出现的参数是 –cl-version 2015
而使用Intel的C++编译器时,出现的参数是 –cl-version 2010

进一步查找CUDA的自定义编译配置,在 Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations\ 目录下的 CUDA 8.0.props 中对编译器做了检查,

...
<CudaClVerson Condition="'$(PlatformToolset)' == 'v140'">2015</CudaClVersion>
<CudaClVersion Condition="'$(CudaClVersion)' == ''">2010</CudaClVersion>
...

CUDA的自定义编译配置中没有对Intel C++编译器做判断处理,自己修改下面那个为空时默认为2010的行,
将2010修改为2015,保存后重新编译,两个编译器都可以编译通过,问题解决。

Popularity: 3% [?]

Random Posts

Next Page →