Write the Code. Change the World.

分类目录
4月 17

https 测试

https://myssl.com

nginx 配置

ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
add_header Content-Security-Policy "default-src 'self';script-src * 'unsafe-inline';style-src * 'unsafe-inline';";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options 'SAMEORIGIN';

TLS 1.3 也渐渐流行。可以自行配置。

4月 14

owasp 安全测试,其中一项就是关于请求头中的 servers 信息和 x-powered-by 信息要隐藏。该怎么隐藏呢。servers 对应的是 nginx 或 apache 的信息,x-powered-by 可能是 php 的版本号。

如下图:

用户,可以很方便的看到你服务器环境的版本信息。想要隐藏只需下边这样操作即可。

隐藏 servers

nginx

vim nginx.conf

# http 里边添加下边的设置

server_tokens off;

然后重启 nginx 。 ../sbin/nginx -s reload

隐藏 php 版本

# 找到 php.ini 的位置
php -i|grep php.ini

vim php.ini

# 设置下边的值即可。即将 on 改成 off
expose_php = Off

然后重启 php 。 /etc/init.d/php-fpm restart

4月 02

想做聊天这样的app或页面,就会使用到长连接。websocket 是一种方式。服务方可以用 nodejs 这些。对于 php,还是使用 workman 或 swoole 比较方便。这里就记录下 laravel 框架使用 swoole 的过程。

编译安装 swoole 扩展

http://pecl.php.net/package/swoole
当前,最新版本是 4.31。所有一切都是新的,服务器是新的,装的环境也是最新的。所以没有心理压力,都用最新的。

cd /usr/local/src

wget http://pecl.php.net/get/swoole-4.3.1.tgz

tar -xzvf swoole-4.3.1.tgz

cd swoole-4.3.1

phpize

# 对 ssl 的支持。这个还是比较重要的
./configure --enable-openssl 

make && make install

make test

vim /alidata/service/php/etc/php.ini

# 尾部追加
extension=swoole.so

# 重启 php
/etc/init.d/php-fpm restart

# 查看扩展
# php -m|grep swoole

继续阅读

3月 19

本来 php7.3 使用的蛮好的。突然有一个旧项目,框架所使用的 php 版本是 php5.6。这个时候就尴尬了。不可能一一去修改源码。这个时候,就得再安装一个 php5.6。还好 nginx 配合多版本 php 使用非常的方便。

PHP 下载地址: http://php.net/releases/

下载编译安装

# 还是一样,习惯将文件下载的 `/usr/local/src` 下

cd /usr/local/src

wget http://cn2.php.net/get/php-5.6.40.tar.gz

tar -xzvf php-5.6.40.tar.gz

cd php-5.6.40

# 下边就开始配置

配置如下:

# 因为之前有一个 /alidata/service/php 目录,这里使用 php5.6 加以区分
./configure --prefix=/alidata/service/php5.6 \
--with-config-file-path=/alidata/service/php5.6/etc \
--enable-inline-optimization --disable-debug \
--disable-rpath --enable-shared --enable-opcache \
--enable-fpm --with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--enable-session \
--enable-ftp \
--enable-xml \
--with-curl --with-zlib \
--enable-zip \
--with-bz2 \
--enable-pdo \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-readline

注意要使用的库一定要带上。比如 gd 库。要不额外弄,伤脑筋。
继续阅读

3月 08

centos 使用 yum 安装的时候,很多程序不是最新的。这个时候,就得下载源码包进行安装。 libzip 就是这样的。下边进行操作。

# 先卸载旧的
yum -y remove libzip-devel

# 找到最新版本的,并下载
# https://libzip.org/ 官网

wget https://libzip.org/download/libzip-1.5.1.tar.gz

tar -zxvf libzip-1.5.1.tar.gz

cd libzip-1.5.1

mkdir build

cd build

cmake ..

make && make install

如果安装过程中,出现 cmake 版本过低 ,请参考:
centos 安装最新版本的 camke

当然,安装旧版本的 libzip可能不这样。请参考下边的链接:
https://www.cnblogs.com/itbsl/p/10208926.html

3月 08

找到最新版本的 cmake

https://cmake.org

进 cmake 官网,找到最新版本的下载地址。当前最新版本是 3.14.0

下载安装

在做安装之前,可以先卸载之前旧版本

yum -y remove cmake

按照以下操作:

wget https://cmake.org/files/v3.6/cmake-3.14.0.tar.gz

tar -xzvf cmake-3.14.0.tar.gz

cd cmake-3.14.0 

./bootstrap

gmake

gmake install

查看编译后的cmake版本

/usr/local/bin/cmake --version

新建软连接

ln -s /usr/local/bin/cmake /usr/bin/

终端查看版本

cmake --version
11月 05

操作步骤

  1. 将 .pem 文件保存到本地磁盘中。
  2. 添加命令。
ssh-add -K /path/to/private_key
  1. 运行 ForkLift,增加一个配置。选择使用 FTPS,在密码处选择 .pem 文件即可。

https://binarynights.com/support

终端中使用命令登录服务器

sudo ssh -i key.pem root@ip

权限不够,带上 sudo

也可以这样使用

ssh-add -K /path/to/private_key
ssh root@ip
9月 18

文档

官方文档:https://laravel.com/docs/5.7/scheduling

中文文档:https://laravel-china.org/docs/laravel/5.6/scheduling/1396

在 Larave 中定义任务,在 crontab 中配置任务

先配置吧

vim /etc/crontab 

# 在末尾添加
* * * * * root cd /alidata/www/mlxiu/ && php artisan schedule:run >> /dev/null 2>&I1

/sbin/service crond start

如果不行,需要再crontab中配置环境变量,或者命令直接写绝对路径。
crontab 参考:https://www.cnblogs.com/intval/p/5763929.html

在 laravel 中定义任务

看文档吧。

9月 17

安装 imagick

PHP建图通常都用GD库,因为是内置的不需要在服务器上额外安装插件,所以用起来比较省心,但是如果你的程序主要的功能就是处理图像,那麼就不建议用GD了,因为GD不但低效能而且能力也比较弱,佔用的系统资源也颇多,另外GD的creatfrom也有bug,而imagick却是一个很好的替代品,为此最近把我的一个项目由GD改成了imagick

官网: https://www.imagemagick.org/script/install-source.php

# 没权限的加上sodu
wget https://imagemagick.org/download/ImageMagick.tar.gz

tar xzvf ImageMagick.tar.gz

cd cd ImageMagick-7.0.8-11

./configure -prefix=/usr/local/imagemagick -enable-lzw -with-modules 

#如果报错:如果configure提示“configure: error: libltdl is required for modules build”,则yum install libtool-ltdl libtool-ltdl-devel

make 

make install

make check

安装 imagick php 扩展

插件地址:http://pecl.php.net/package/imagick

wget http://pecl.php.net/get/imagick-3.4.3.tgz
tar -xzvf imagick-3.4.3.tgz
cd imagick-3.4.3
phpize
./configure --with-php-config=/usr/bin/php-config --with-imagick=/usr/local/imagemagick
# 根据php-config 目录有所不同。这里是 Homestead环境

# 如果提示没有 pkg-config,请先安装
#  apt-get install pkg-config (unbuntu)
# yum install pkg-config (centos)

make test
make
make install

cp /usr/src/imagick-3.4.3/modules/imagick.so /usr/lib/php/20160303/imagick.so
# 这里是 homestead 的配置。

sudo vim /etc/php/7.1/fpm/conf.d/20-imagick.ini
# 添加 extension=imagick.so 保存

参考

https://blog.csdn.net/m0_38004619/article/details/77897406

7月 16

unbuntu 安装 php mongo 扩展的时候,遇到了 configure: error: Cannot find OpenSSL’s libraries 这个错误。

怎么解决了,冥冥已经安装了呀。

sudo apt-get install openssl

可以找找看。

sudo find / -name libssl.so
# 你会发现存在 /usr/lib/x86_64-linux-gnu/libssl.so
# 初步判断它可能只会在 /usr/lib/ 下寻找 libssl.so 文件
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib 
# 重新编译过

其他方法

https://stackoverflow.com/questions/40359817/litespeed-web-server-and-error-cannot-find-openssls-libraries