2018-12-10 12:25:15    12    1    0
云端(管理端) ``` 云端有个简单的CRM系统,记录用户信息及对应客户端电脑加密算法, 看到远端用户设备状态(在线/离线否,并可以看到客户端所在设备信息等),并经过客户端授权后链接到远程客户端进行升级/更新/优化等一系列操作. -用户可以登录系统看到他们名下的设备状态等. 新的工业相机等必要输入设备(供应商提供SDK通过云端管理)到系统中以清单形式列出,可以推送到远程客户端调试并调用,或浏览
2018-11-19 14:37:46    0    0    0
输入命令后发现不少连接超过100,最高1万都有,去看了下nginx日志,都有2G大了,说明有人在进行攻击行为 ``` netstat -nat|grep -i '80'|wc -l ``` 对连接的IP按连接数量进行排序,查看TCP连接状态 ``` netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
2018-11-19 03:13:13    5    0    0
---------- - 盘名称改为繁体的“歷代古琴文獻彙編”: ![](/api/file/getImage?fileId=5bf1b9d3ed294d03cd000030) ---------- - 图标需要改为Logo,且文字为简体,需要改为繁体“歷代古琴文獻彙編”: ![](/api/file/getImage?fileId=5bf1b9d3ed294d03cd000
2018-11-08 04:26:28    10    0    0

注册用户多了,特别是防止自动机器人注册,需要在后台只管看到用户注册和登录时间。通过下面这款插件可以记录用户注册的时间,上次登陆时间。

插件下载地址:https://pan.baidu.com/s/1MoV11_aXXB1mUKv-VOJEew   或附件下载.记录用户IP地址.rar

 

使用方法如下:

把 user_ip.php 放到主题目录下,然后编辑主题的funct

2018-09-17 00:13:42    18    0    0

基于Virtualbox的虚拟机安装,需要运行下列命令,注意是管理员运行:


cd "C:\Program Files\Oracle\VirtualBox\"
.\VBoxManage.exe modifyvm MacOS10.11 --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
.\VBoxManag

2018-09-12 03:24:11    12    0    0

mongodb v3 创建用户如下:

# 首先切换到abc数据库下
> use abc;
# 添加一个用户root, 密码是abc123
> db.createUser({
user: 'root',
pwd: 'abc123',
roles: [{role: 'dbOwner', db: 'abc'}]
});
# 测试下是否正确
db.auth("root", "abc123");
1 # 返回1表示正确


远程连接mongodb失败,虽然安全组和本机防火墙都打开,可能是下面原因:

mongodb的配置文件中的bind_ip 默认为127.0.0.1,默认只有本机可以连接,需将bind_ip配置为0.0.0.0,接受任何IP的连接。

此外,Studio 3T for MongoDB可以多数据库复制,转移时候比较方便.


2018-09-06 07:53:05    118    0    0

docker run --restart=always \
-p 25:25 \
-p 80:80 \
-p 110:110 \
-p 143:143 \
-p 443:443 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/data:/data \
--name "example.com" \
-h "example.com" \
-t analogic/poste.io

加上 --restart-always实现poste持久化运行.


这个部署太方便了,几分钟就可以起一个邮件服务器.

装好docker环境后记得运行下面这样开机可以docker自动启动:

systemctl enable docker

 

另外可以方便加上portainer来管理container/images更方便:

https://www.portainer.io/


 

 

2018-09-05 04:43:18    24    0    0

docker ps -as 看到关闭/开放的容器

docker start 容器名

docker images 查看docker镜像以方便停止/删除

docker rm images(id) 删除镜像

docker system prune(清除docker留下的缓存/碎片等)


 Docker 内操作

docker exec -it

2018-08-28 22:45:55    22    0    0

CentOS 7之前使用iptables

安装iptables: yum install -y iptables-services

关闭iptables:   service iptables stop 

检查iptables状态: service iptables status

临时关闭: service iptables stop

禁止开机启动: chkconfig iptables off


CentOS 7 中使用firewall

临时关闭: systemctl stop firewalld

禁止开机启动: systemctl disable firewalld


列出所有端口:

netstat -nltp

若提示没有netstat, 安装即可: yum install net-tools

 

检查端口被哪个进程占用:

netstat -lnp|grep 80   #80换为需要的端口


 

2018-08-28 22:45:40    22    0    0

首先新建一个脚本,比如在/root下:

cd /root

touch forever.sh

并加入开机时候自动执行的命令,如启动forever,mysql,oracle等等.

#!/bin/bash

cd /etc/pool

forever start init.js

 

将该脚本添加可执行的权限

chmod +x  forever.sh

 

同时/etc/rc.d/rc.local需要赋予可执行权限.,这是因为在centos7中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行脚本是不能起动一些服务.

chmod +x  /etc/rc.d/rc.local

然后 vi /etc/rc.d/rc.local 把需要运行的脚本文件加到最后就可以,这样的话 forever.sh的脚本就会在开机时候自动执行.


 

 

 

 

 

2018-08-28 22:45:33    44    0    0

node 开发及快速更新或者切换 node 版本, 可以使用 nvm 来安装node 开发环境, 保持系统的干净.

直接从 github clone nvm(我一般在/etc下mkdir git)

cd /etc/git
git clone https://github.com/cnpm/nvm.git

安装nvm非常简单,进入/etc/git目录然后执行./install.sh 就会把git源码克隆到本地的~/.nvm目录下

配置终端启动时自动执行(方法一) 

echo ". ~/.nvm/nvm.sh" >> /etc/profile

source /etc/profile

 

或者

配置终端启动时自动执行(方法二)
在 ~/.bashrc~/.bash_profile~/.profile任一文件添加以下命令:

source /etc/git/nvm/nvm.sh

 

查看一下你当前已经安装版本: nvm ls-remote

重新打开你的终端, 输入 nvm 看到最新版本nodejs.


 通过 nvm 安装任意版本的node,但目前测试发现v8.11.3最合适:

nvm install v8.11.3

nvm use 8.11.3

参考链接: https://cnodejs.org/getstart  及 https://cnodejs.org/


或者通过下面方法安装:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash 

查看是否安装成功: command -v nvm 

 

重要提示: 使用nvm管理node包的时候,当重新启动shell。会发现所有的命令消失了。再也不能使用node --v等命令.

这里有两种方法:

使用node之前,先use: 

nvm use node  或

nvm use v8.11.3

nvm use 8.11.3

nvm default alias 8.11.3

还有种就是上面source ~/.bash_profile(建立全局调用nvm)

注意大坑:Nvm安装2个Node版本后重启后才不会丢失.


此处开始填坑,非常重要:

把有可能存在的依赖全部提前装上:

yum install g++ gcc* libssl-dev git  screen bzip unzip zip

2018-08-28 22:45:22    58    0    0
修改网站主体/Theme:
/var/web/yaamp/modules/site
/var/web/yaamp/ui/css
 
如果需要在首页增加各种文字描述,直接在路径web/yaamp/modules/site/index.php这个文件手动编辑.
 
移除首页下面twitter链接可以通过
在路径web/yaamp/modules
2018-08-04 02:30:40    32    0    0

进入redis根目录:

cd /etc/redis/redis-4.0.2/src

然后进入到cli下:

redis-cli 

 然后可以执行:

dbsize

 

如果想删除所有缓存:

flushall

如果单个库所有key数据,Redis Flushdb 命令用于清空当前数据库中的所有 key

flushdb


 redis集群指定key值的缓存清理:

首先登录至指定端口的redis服务器:

cd /etc/redis/redis-4.0.2/src

然后进入到cli下:
redis-cli -h 127.0.0.1 -p 6379

其中,127.0.0.1可以写成服务器的IP地址,6379为端口号。

查看所有key值:
keys *

删除指定索引的值
del key


 

2018-07-30 03:16:51    43    0    0

下载Redis:

wget http://download.redis.io/releases/redis-4.0.2.tar.gz

解压redis :

tar -xzvf redis-4.0.2.tar.gz

编译安装redis:

cd redis-4.0.2    然后运行 make & make install

make install安装完成后,会在/usr/local/bin目录下生成下面几个可执行文件,它们的作用分别是:

redis-server:redis服务器端启动程序 
redis-cli:redis客户端操作工具。也可以用telnet根据其纯文本协议来操作 
redis-benchmark:redis性能测试工具 
redis-check-aof:数据修复工具 


设置redis随系统启动: ./utils/install_server.sh

启动redis:systemctl start redis_6379

关闭redis:  systemctl stop redis_6379

查看redis的状态: systemctl status redis_6379


设置redis远程访问和密码:

cd /etc/redis 

vi 6379.conf 

找到 bind 127.0.0.1 ::1 并注释掉. 

找到requirepass,注释掉并设置密码为password


设置密码后,使用systemctl stop redis_6379无效的解决办法:

cd /etc/init.d  以及  vi redis_6379     并在stop项中增加密码 -a password

也就是大概第18行找到 $CLIEXEC -p $REDISPORT -a password shutdown


监控redis建议使用redis-commander:

https://github.com/Davis-Ping/redis-commander

 

 

 

2018-07-29 01:39:32    62    0    0
看文件夹大小: du --max-depth=1 -h 
du -sh 系统只显示当前文件夹所占用的总空间
du -a 显示的是所有的文件.包括子文件夹下所有文件也显示(不常用)

ll-h 查看某个文件夹占用空间的大小 
ls -a  列出所有文件
ls -ls 列出隐藏文件

df -h 磁盘大小用G为单位来查看.
df -a 查看全部文件系统 
利用fdisk命令操作磁盘的添加,删除,转换分区等(待更新补充)
2018-07-28 12:33:40    50    0    0

可以简单直接通过下面命令创立2G swap

dd if=/dev/zero of=/var/swap bs=1024 count=2097152
mkswap /var/swap
chmod 0600 /var/swap
swapon /var/swap

然后运行下面把swap加入到开机自动启动:

echo "/var/swap swap swap default 0 0" >> /etc/fstab 

或者 vi /etc/fstab把下面加入到最后一行也可以:

 /var/swap  swap swap default 0 0


也可以下面一步一步的创立:

Step 1: Verify that swap does not exist
To prevent any issues during this tutorial, you will need to run the following to verify that a swap space is currently not active:

free -m

Alternatively, you can run the following command to see if there is a configured swap file:

swapon -s
If you do not see any output from swapon, then proceed to step 2.

 

Step 2: Create swap file(建立swap文件)
You will need to choose a location for your file. In this tutorial, it will be stored at the root of the server. We will create a 2GB swap file by running the following command:

dd if=/dev/zero of=/swapfile count=2048 bs=1M
The dd command will produce output in a similar format to:

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 1

2018-07-23 02:38:59    44    0    0

全局下默认地址改为中国镜像地址:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

 

中国镜像地址还原成默认地址(国外):

composer config -g repo.packagist composer https://packagist.org


单个项目下修改需要进入到项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:

默认地址改为中国镜像地址:

composer config repo.packagist composer https://packagist.phpcomposer.com

 

中国镜像地址还原成默认地址(国外):

composer config repo.packagist composer https://packagist.org


手动 vi/vim composer.json 修改上述repo地址也可以.

 

2018-07-22 09:52:43    40    0    0

https://studygolang.com/dl 找到最新版本使用wget下载.

然后解压并直接放到 /usr/local 目录下,不用再次 make && make install 安装了, 直接使用.

tar -C /usr/local/ -zxvf go10.3.linux-amd64.tar.gz

直接通过命令添加环境变量:

export PATH=$PATH:/usr/local/go/bin

验证:

go version


 

2018-07-09 01:50:46    48    0    0

 

Wordpress不错的Makrdown编辑器: WP-Editor.md  (github)


Woocommerce Email Verification  (Woo注册用户邮件验证)

Email Verification / SMS verification / Mobile Verification (Woo邮件/短信/手机验证)- 待验证

Mo

2018-07-02 02:04:04    36    0    0

主要是php5.6后强制要求验证邮件服务器证书有效性,通过在config/mail.php 最下面增加下面语句就关闭了有效性验证并解决问题了.

'stream' => [

   'ssl' => [

       'allow_self_signed' => true,

       'verify_peer' => false,

       'verify_peer_name' => false,

   ],

],

 


同理Wordpress如果php版本过高也会如此,smtp接口用587/tls加密,并在文件mail.php中增加下面语句来关闭有效性验证,各种Smtp插件就可以通过这个来解决无法发信的问题.

2018-07-02 02:01:20    63    0    0

有时候灰名单很麻烦,导致一些不可控因素出现,所以考虑关闭来确认问题所在:

cd /opt/iredapd/tools/

python greylisting_admin.py  --disable –to '@.' -关闭灰名单

python greylisting_admin.py  --enable –to '@.'  -重新启用灰名单


 

2018-07-02 01:58:50    58    0    0

Linux 系统默认的连接数是1024,当应用连接数过多的时候,就会受到很多的限制,所以要把连接数调大.

查看当前的连接数:

ulimit -n

 

修改方法如下:

vi /etc/security/limits.conf

 

在文件最后面添加:

* soft nofile 65535

* hard nofile 65535


2018-07-02 01:57:30    43    0    0

使用下面命令修改,可以永久性的修改主机名称,非常方便:

hostnamectl set-hostname xxx


CentOS7 可在修改DNS /etc/sysconfig/network-scripts/ifcfg-eth0 来更改默认的DNS.

DNS1=8.8.8.8
DNS2=8.8.4.4

2018-07-02 01:55:40    54    0    0

首先安装

yum -y install yum-cron

vi /etc/yum/yum-cron.conf

修改下列为

apply_updates = yes

update_messages = yes

download_updates = yes

 

然后重启服务:

systemctl start crond

systemctl start yum-cron


 

2018-06-19 22:08:34    54    0    0
导出数据库:   mysqldump -uroot -p  密码 数据库 > 导出到的位置及名称  
-例如:mysqldump -uroot -proot demo > demo.sql

导入数据库: mysql -uroot -p密码 数据库 < 数据库     
-例如: mysql -uroot -proot demo < demo.sql


2018-06-19 22:02:07    65    0    0

Let's Encrypt 只有 90 天的有效期,一旦我们忘记了就会失效更新也很麻烦.必须使用 crontab 进行自动续期,保证证书一直有效.

crontab -e 添加下以下规则即可:

15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

保存后crontab -l 看看规则是否存在,没问题的话每隔两个月凌晨2点15自动更新证书,没到期什么都不会做.


 

2018-06-19 03:56:26    57    0    0

申请Lets encrypt后,需要对应的把iRedMail证书路径更新才能启用,分别是Nginx,Postfix,Dovecot(Mysql/MariaDB暂不考虑),否则客户端例如outlook会反复提示让你确认证书.

Nginx找到/etc/nginx/templates/ssl.tmpl增加下面语句:

ssl on;
ssl_certificate /etc/letsencrypt/live/mx.abc.com/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/mx.abc.com/privkey.pem


Postfix使用postconf命令直接更新SSL,设置如下:

postconf -e smtpd_tls_cert_file='/etc/letsencrypt/live/mx.abc.com/cert.pem'
postconf -e smtpd_tls_key_file='/etc/letsencrypt/live/mx.abc.com/privkey.pem'
postconf -e smtpd_tls_CAfile='/etc/letsencrypt/live/mx.abc.com/fullchain.pem'


Devecot找到文件/etc/dovecot/dovecot.conf对应更新路径到Letsenctrypt的证书文件:

ssl = required
ssl_cert = </etc/letsencrypt/live/mx.abc.com/cert.pem
ssl_key = </etc/letsencrypt/live/mx.abc.com/privkey.pem
ssl_ca = </etc/letsencrypt/live/mx.abc.com/fullchain.pem

 

2018-06-19 03:02:16    53    0    0

首先安装composer

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

 

Referring Links:

https://getcomposer.org/download/

https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx


继续执行composer self-update完成composer升级.


 ####开始安装Laravel框架
sudo composer create-project laravel/laravel (项目名称放到你想放的目录下执行)

composer init 在项目中生成json文件,然后开始.
php composer.phar install
php artisan key:generate
chown -R www:www storage/
chmod -R 777 storage/


Laravel-admin配置注意事项:
走https的话,需要config/admin.php中https改为true
rewrite需要提前在nginx中设置好.
根据安装出错提示修改/database/migrations中"2014_10_12_100000_create_password_resets_table.php"数值为191

2018-06-19 03:01:21    67    0    0

https://codex.wordpress.org/Multilingual_WordPress

看了一下,中英双语最简单的做法是架设两套网站。就是我把同一个网站部署两套,使用不同的域名。

例如:

中文的是 www.krisdiary.com
英文的是 en.krisdiary.com
然后,官网首页加个中英文切换的按钮。

中文首页自动判断用户浏览器的语言,如果是英文的自动跳转到英文的域名。

开发流程:
先把中文版定稿,确定功能及布局之后。

添加 en 的二级域名解析
nginx 设置 en 的配置
部署一套英文版的环境,即 copy 一份中文版的代码目录
copy 一份英文版得数据库
修改配置参数
数据库中的域名替换为 en
两端首页分别添加不同语言的链接
修改 uploads 目录权限


2018-06-19 00:51:46    49    0    0

基本命令

crontab -e #编辑定时任务
crontab -r #移除定时任务
crontab -l #查看定时任务


使用命令
添加的命令必须以如下格式:

* * * * * /root/xx.sh #前5个*指时间,后面为命令
前5个*分别表示:

分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:

*: 表示任何时刻
,: 表示分割
-:表示一个段,如:1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如:*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1


定时任务设置举例

43 21 * * * #21:43 执行
15 05 * * * #05:15 执行
0 17 * * * #17:00 执行
0 17 * * 1 #每周一的17:00 执行
0,10 17 * * 0,2,3 #每周日,周二,周三的17:00和17:10 执行
0-10 17 1 * * #毎月1日从17:00到7:10毎隔1分钟 执行
0 0 1,15 * 1 #毎月1日和15日和一日的0:00 执行
42 4 1 * * #毎月1日的4:42分 执行
0 21 * * 1-6 #周一到周六21:00 执行
0,10,20,30,40,50 * * * *  #每隔10分 执行
*/10 * * * * #每隔10分 执行
* 1 * * * #从1:0到1:59每隔1分钟 执行
0 1 * * * #1:00 执行
0 */1 * * * #毎时0分每隔1小时 执行
0 * * * * #毎时0分 执行
2 8-20/3 * * * #8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * * #1日和15日的5:30 执行

2018-06-19 00:49:23    45    0    0

yum install screen #CentOS
apt-get install screen #Debian或者Ubuntu


创建一个screen会话:

screen -S xx #xx为创建会话的名称


隐藏并保留当前会话窗口:

按Ctrl+A,再按"D"键
如果怕中途掉线或者要离开的话,可以使用。


恢复会话窗口:

screen -r xx #恢复名字为xx的会话
如果在恢复会话的时候忘记了或者没有设定会话名称我们就要执行:

screen -ls
他会列出你所有的会话列表,然后使用:

screen -r 会话名称
来恢复会话窗口。


关闭会话窗口:

exit
screen的好处就是不会因为远程的操作因网络问题中断掉。

2018-06-19 00:43:20    114    0    0

一直不想让别人用Shadowsocks账号访问特定域名,但是通过Hosts屏蔽域名的话比较麻烦,Shadowsocks服务端是启动的时候才会读取Hosts,且Hosts的方法屏蔽域名,只支持单域名,并不支持泛域名,很不方便。

通过iptables防火墙匹配字符串的方法,那就是string 模块就可以匹配字符串,匹配到泛域名的URL,然后就把数据包丢弃,就实现了屏蔽泛域名的功能。

(备注:如果使用某些特定DNS服务器也能达到同样效果)


以下规则是屏蔽以 youtube.com 为主的所有一级 二级 三级等域名。

  1. iptables -A OUTPUT -m string --string "youtube.com" --algo bm -j DROP
  2. # 添加屏蔽规则
  3. iptables -D OUTPUT -m string --string "youtube.com" --algo bm -j DROP
  4. # 删除屏蔽规则,上面添加的代码是什么样,那么删除的代码就是把 -I 改成 -D

 

规则解释:

  1. -A
  2. # 添加iptables规则;
  3. -D
  4. # 删除iptables规则(把添加防火墙规则时代码中的 -A 改成 -D 即可删除添加的规则);
  5. -string
  6. # 指定模块;
  7. --string "youtube.com"
  8. # 指定要匹配的字符串(域名、关键词等);
  9. --algo bm
  10. # 指定匹配字符串模式/算法(还有一种更复杂的算法:kmp);
  11. -j DROP
  12. # 指匹配到数据包后处理方式,这里是丢弃数据包。

这个模块的作用就是匹配字符串,这个字符串可以是URL普通文本文件后缀(后两者时,如果目标网站启用了GZIP类压缩算法,就会无法过滤匹配,毕竟都压缩了)

比如屏蔽: .zip ,就会把包含 .zip 的数据全部丢弃,这样就会无法下载 .zip 类型的文件了!

其他的作用大家可以慢慢研究。