Docker 启动wordpress

docker启动要注意是什么平台,要选择对应的系统平台的镜像才能正常运行,否则不限无法启动的情况。

1、MacOS 本地用docker启动,mac 平台选择amd64 平台的镜像

docker run --name orhonedu-cms-wordpress --link mysql:mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=root -p 8080:80 -v $PWD:/var/www/html  -d amd64/wordpress

JS 随机生成字符串和随机数

生成随机字符串(数字和字母)


function randomString(len) {
  len = len || 32;
  var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
  var maxPos = $chars.length;
  var pwd = '';
  for (i = 0; i < len; i++) {
    pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  }
  return pwd;
}
console.log(randomString(16));

生成随机数(只是数字)

//生成从minNum到maxNum的随机数
function randomNum(minNum, maxNum) {
  switch (arguments.length) {
    case 1:
      return parseInt(Math.random() * minNum + 1, 10);
      break;
    case 2:
      return parseInt(Math.random() * ( maxNum - minNum + 1 ) + minNum, 10);
      //或者 Math.floor(Math.random()*( maxNum - minNum + 1 ) + minNum );
      break;
    default:
      return 0;
      break;
  }
} 
console.log(randomNum(0,20));

mac下ssh空闲自动中断

默认情况下,ssh连接到服务器后,如果长时间没有操作,服务器会自动断开这个连接。现象就是mac终端上的操作不再有相应。
可以通过修改mac上的ssh配置解决此问题:

vi ~/.ssh/config
// 加入这句:
ServerAliveInterval 30

每隔30秒,mac客户端会主动向服务器发出一次请求。
这样就使得服务器端认为客户端是一直在线状态,也就不会主动断开连接了。

 

 

git 在开发中等的应用

1、git在什么场景下使用、能解决我的什么问题。

2、git等的安装使用。

参考文档:

1)、官方网站 https://git-scm.com/

2)、git教程 、廖雪峰:  https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

3、git的常用工具。

1)git 命令行 git bash/git gui 。 (windows 平台)

2) terminal / cmd /powershell / subsystem linux (windows 10)

3) source tree (windows/Mac/linux)

4)jetbrains 系列都自带git 可视化管理工具。

5) zsh 工具。https://ohmyz.sh/

4、git的常用操作及命令。

1)、 初始化仓库

(本地): git init

(服务端): git init –bare

2)、添加暂存

3) 、提交变更

4)推送远程

5)拉取远程

6)合并分支

7)解决冲突

8)放弃追踪

 

 

 

 

 

 

 

Nginx配置指定媒体类型文件强制下载

由于业务需要,在点击显示链接(如www.xxx.com/2015-01-15/xxx.png)显示媒体资源(如图片、视频、音频、文档),而在点击下载链接(如www.xxx.com/2015-01-15/xxx.png?download=true)请求静态资源时,强制下载而不是在浏览器中直接显示。可以采用nginx配置加前端js方法来实现。

1、配置NGINX配置、在nginx的站点配置server { } 里面添加如下:

location ~ .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|mp4|swf|txt)$
 {
     if ( $query_string ~ "download=true$" )
     {
         add_header Content-Disposition "attachment; filename=$request_filename";
     }
 }

2、前端js 实现方法、在vue中定义方法、在下载按钮上调用即可:

// JS 方法、传入文件URL。点击事件上调用download方法即可
download (data) {
    if (!data) {
        return
    }
    let filename = data.replace(/(.+)[\\/]/,"");
    let url = data + "?download=true";
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', filename)

    document.body.appendChild(link)
    link.click()
}

 

Linux命令行导出MySQL备份及定时批量导出

1、数据库导出

用命令行导出数据库

mysqldump -uDatabaseUserName -pPassword DataBaseName  > /home/backup/DataBaseName_$(date +%Y%m%d_%H%M%S).sql

导出并压缩为.gz

mysqldump -uDatabaseUserName -pPassword DataBaseName | gzip > /home/backup/DataBaseName_$(date +%Y%m%d_%H%M%S).sql.gz

2、导出脚本

创建脚本文件如 databaeBackup.sh。

vi /home/backup/databaeBackup.sh

脚本内容如下:

#!/bin/bash
mysqldump -uDatabaseUserName -pPassword DataBaseName | gzip > /home/backup/DataBaseName_$(date +%Y%m%d_%H%M%S).sql.gz

修改脚本权限使其可执行。

chmod u+x  ./databaeBackup.sh

3、定时任务

crontab -e

0 3 * * * * /home/backup/databaeBackup.sh

每天凌晨3点运行备份命令。

4、实时同步文件到另一台服务器

请参考本站文章 两台linux服务器之间同步文件

两台linux服务器之间同步文件

1、前提条件

服务器A为主服务器,服务器B为备份服务器。我们将服务器A的/home/backup/data 目录同步到B服务器的/home/orhon/backup/data/ 目录。

思路是在A服务器上通过inotify监听文件夹的变化、如果有变化就运行rsync命令同步到B服务器。B服务器上以守护进程deamon的形式运行rsync。

  1. 两台服务器必须都需要安装rsync软件。安装方法不讲了。
  2. 源服务器安装inotify软件。

2、源服务器上的配置和操作(本文中的A服务器)

  • 打开或创建备份相关文件夹,进入备份目录。
mkdir /home/backup & cd /home/backup
  •  安装inotify先查看服务器是否支持inotify
    ll /proc/sys/fs/inotify

    会有三个文件,这说明此服务器是支持 inotify的。可以yum源安装的,如epel源。

  • 创建同步任务脚本vi rsyncData.sh
#!/bin/bash
host=192.168.100.100
src=/home/backup/data
des=web
user=orhon
rsyncd_secrets=/home/backup/rsync.passwd
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -zrtopg --delete --progress --password-file=$rsyncd_secrets $src $user@$host::$des
echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1
done

# –delete 参数为本地删除的话远程也会被删除。

# rsyncd_secrets 参数为密码文件的路径,本文中将文件放到了备份相关的目录里了。

  • 创建同步文件所需要的密码文件,这样做是为了安全
touch /home/backup/rsync.passwd
echo 'newpassword' > /home/backup/rsync.passwd

注:这里的newpassword可以是任意字符

出于安全考虑要把此文件的权限改成600:

chmod 600 /home/backup/rsync.passwd

至此A服务器的改配置的项目基本完成,但是根据服务器和环境的不同可能会会出现不同的报错情况,如防火墙原因、读写权限、端口配置等,更多问题可以参考文章rsync 常见问题记录 进行查看。

 

3、备份服务器上的配置操作(本文中的B服务器)

  • 1、建立密码文件:
touch /etc/rsyncd.secrets
echo "webuser:newpassword" >/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

同样要给此文件一个600的权限,注:在源服务器A建立的密码文件,只有密码,没有用户名;而在目标备份服务器B里建立的密码文件,用户名与密码都有。

  • 2、写rsync的配置文件:
[web]
path = /home/orhon/backup/data/
comment = Data base files
ignore errors
read only = no
write only = no
hosts allow = 192.168.100.103
hosts deny = *
list = false
uid = root
gid = root
auth users = orhon
secrets file = /etc/rsyncd.secrets
  • 3、目标备份服务器 启动 rsync (进程模式) (B服务器)
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
  • 查看rsync进程是否开启.
    ps -ef |grep rsync
    root     12450     1  0 10:50 ?        00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
    root     13254 13234  0 15:04 pts/0    00:00:00 grep --color=auto rsyn

    说明已开启

  • 实现开机自启动rsync守护进程

使用 rsync –daemon 然后放到 /etc/rc.local中的最后一行即可.
使用 echo “rsync –daemon” >>/etc/rc.local  就行了。切记是 >>  不是>  .
然后使用tail -2 /etc/rc.local查看一下是否追加成功.

  • 4、源服务器启动同步脚本:
/usr/bin/rsyncData.sh &

 

到这里,所有的都已完成。可以到源服务器下的/home/backup/data 目录下建一个文件,然后再看一下目标服务器下的/home/orhon/backup/data/ 下是否有?