Mac osx 下安装iTerm2,并使用Nginx在虚拟机中实现rz sz上传下载部署静态资源(附homebrew配置)

2,895 阅读10分钟

今天忽然需要亲自操作部署静态资源,弄了半天发现上传下载用不了,很是伤心。最后定为到iTerm配合rz和sz来实现上传下载。

先说一下为什么写这个文章,因为在网络上真的是看了好多的文章,良莠不齐,有的好使,有的根本就是*,所以打算记录一篇文章,不能说很好,但是是我亲测到凌晨两点确实可行的,所以记录下来,希望给同行人一些帮助。

环境

  • Mac ox 10.13.6
  • iTerm2-4

安装iTerm2

安装方式和苹果的安装方式是一样的,解压双击 把他拖进application中就可以了。

安装rz sz

吐槽一下 好多的博客写的是很简单,一个命令 brew install lrzsz。。。可是也许有很多人没有brew这个命令 比如我之前下载的版本不是最新的导致一直报错伤心。。

安装rz sz 前的准备 安装brew

简单介绍一下,一般我们在unix或者类unix的linux系统上,使用yum或者apt-get,不过抱歉,在mac osx上好像不好使,所以几经周折找到homebrew简称brew,它的功能就类似yum或者apt-get。它是max osx上的软件包管理工具。

  • 安装homebrew 只需要下面一条语句即可
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

注意: 我在安装过程中看了很多博客,也尝试过很多链接,甚至打算翻墙来着,不过上面这条语句我一次执行就通过了(没翻墙),并看到了成功的标记 successful。

注意 在安装过会有一次卡顿,建入回车 接着我们会看到让我们输入密码,输入密码后等待安装就可以了。

好了,安装成功后输入 brew 查看是否有提示信息

harryliangdeMacBook-Pro:~ harryliang$ brew
Example usage:
  brew search [TEXT|/REGEX/]
  brew (info|home|options) [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]
Troubleshooting:
  brew config
  brew doctor
  brew install -vd FORMULA
Developers:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
  https://docs.brew.sh/Formula-Cookbook.html
Further help:
  man brew
  brew help [COMMAND]
  brew home

如果看到如上信息,则表示brew安装成功了。

安装lrzsz

  • 这里安装才可以说简单了,使用如下命令即可
brew install lrzsz

配置rz sz 进行上传下载

要想使用rz 和sz进行上传下载我们要尽兴一些配置这里介绍两种方案

方案二:

将两个sh 脚本保存在 /usr/local/bin/

拉取 github.com/aikuyun/ite… 两个sh文件,将他们拷贝到/usr/local/bin文件夹中。

sudo cp /Downloads/iterm2-zmodem-master/iterm2-* /usr/local/bin

如此就可以放肆的配置iTerm2,强烈推荐使用方案一

方案二:

  • 进入到/usr/local/bin 目录下
cd /usr/local/bin
  • 这个目录下需要两个配置文件,这个配置文件可以自己粘贴,也可以去github网站下载。
  1. github网址: github.com/mmastrac/i.…
  2. 如果不会下载就在github上打开文件 自己创建两个文件 并把内容粘贴进去
  • 这里把我的配置过程和配置文件内容粘贴出来给大家,方便大家操作。
  1. 在/usr/loal/bin 目录下创建两个文件

image.png

命令:

vi iterm2-recv-zmodem.sh
vi iterm2-send-zmodem.sh

创建好两个文件后分别添加内容:

  1. iterm2-recv-zmodem.sh
#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required 
# Remainder of script public domain
osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
else
    FILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
fi
if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    cd "$FILE"
    /usr/local/bin/rz -E -e -b
    sleep 1
    echo
    echo
    echo \# Sent \-\> $FILE
fi
  1. iterm2-send-zmodem.sh
#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required 
# Remainder of script public domain
osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
else
    FILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
fi
if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    /usr/local/bin/sz "$FILE" -e -b
    sleep 1
    echo
    echo \# Received $FILE
fi
  1. 将文件写好后保存好,使用如下命令添加权限

chmod +777 iterm2-*

  • 配置好配置文件之后,开始对iTerm2进行配置

iTerm2 配置添加rz sz 功能

  • 点击 iTerm2 的设置界面 Perference-> Profiles -> Default -> Advanced -> Triggers 的 Edit 按钮

image.png

image.png

image.png

--- 在最后一个图片的位置进行配置,上图是配置好的样子,配置文件如下:

Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh

按照上面的配置文件信息的格式填写即可。

ok!到此为止我们的rz sz安装配置就可以了,接着我们介绍一下rz 和 sz 的使用

rz 上传功能

  • 在bash中,也就是iTerm2终端输入rz 就会弹出文件选择框,选择文件 choose 就开始上传,会上传到当前目录

image.png

sz 下载功能

  • sz fileName(你要下载的文件的名字) 回车
  • 会弹出窗体 我们选择要保存的地方即可。

Nginx下载

安装前准备

对于nginx编译安装需要先安装编译 的工具,然后再安装nginx依赖

yum -y install gcc gcc-c++ autoconf automake make      

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

添加www用户

1、添加www用户,如果没有可能会报错nginx: [emerg] getpwnam(“www”) failed

#添加www 用户
groupadd -f www
useradd -g www www

下载nginx

#管网镜像

http://nginx.org/download/

#获取nginx,官方地址

wget http://nginx.org/download/nginx-1.10.1.tar.gz

#1.6.2 这个老版本,不支持 --with-stream 模块,1.9.0后,才支持的,建议大家使用的时候注意

#wget http://nginx.org/download/nginx-1.6.2.tar.gz

#这个是我自己七牛的服务器

wget http://yellowcong.qiniudn.com/nginx-1.10.1.tar.gz

#nginx 2019/4/2  新得版本

wget http://nginx.org/download/nginx-1.15.9.tar.gz

#解压 /usr/local/nginx 目录

tar -zxvf nginx-1.10.1.tar.gz

3、安装nginx

第一步是配置,第二步是编译安装

配置nginx

#进入到nginx-1.10.1 ,并配置nginx
cd nginx-1.10.1 

#配置nginx
#--prefix 指定安装的目录
#/usr/local/nginx 是安装目录,不能和自己下载的文件目录重了
#./configure --prefix=/usr/local/nginx

#带ssl  stub_status模块 添加strem模块 –with-stream,这样就能传输tcp协议了
#http_stub_status_module  状态监控
#http_ssl_module    配置https
#stream  配置tcp得转发
#http_gzip_static_module 压缩
#http_sub_module  替换请求
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream

#带用户得方式
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module

到nginx的目录下,然后配置nginx

image.png

看到了结果,就差不多 代表成功了

image.png

编译安装

只要出现上面的,差不多就是完事了,可以编译了,如果还是有错误,可以使用yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel命令,安装所有依赖

#编译安装
make && make install

image.png

安装成功

安装成功后,会在./configure --prefix=/usr/local/nginx,指定的目录/usr/local/nginx创建4个 文件夹。具体功能下面有介绍。

#启动 nginx服务
/usr/local/nginx/sbin/nginx
#停止服务
/usr/local/nginx/sbin/nginx -s stop

#重启服务
/usr/local/nginx/sbin/nginx -s reload 

#查看启动情况
ps -ef|grep nginx

#查看是否启动成功
curl 192.168.100.10

#查看端口情况
netstat -ano|grep 80

#查看nginx版本
./sbin/nginx -V 

查看nginx的版本

image.png

nginx正常运行

image.png

目录结构

目录作用
conf用于存储nginx配置文件
html用于存放静态网页
logs存放日志
sbin用于存放 nginx这种工具

Nginx服务器部署资源

上面我们已经完成了一系列的配置,接下来我们开始上传我们的资源并进行nginx.conf的简单配置

1、首先进入我们的虚拟机

通过命令 ssh root@服务器名称

2、找到我们的资源文件一般我们会放在如下目录例如:

cd /usr/local/www/web/

3、随后通过命令

rz 会自动弹出选择我们需要的文件,这里必须是压缩文件,tar、gz、zip

image.png

dist就是上传以后的文件,下面对上传的文件解压缩rar/tar/zip等文件的命令

1-1、.tar

打包语法:tar cvf newFileName.tar fileName || dirName

解包语法:tar xvf newFileName.tar fileName(-C dirName)

1-2、.tar.gz

压缩:

方法1 tar czvf newfileName.tar.gz fileName || dirName

方法2 tar cvf tmpfileName.tar fileName || dirName (就是想打包成.tar); gzip -v tmpfileName.tar (删除源文件、变成了tmpfileName.tar.gz、并且显示压缩比---如果-v写成-q的话就不显示压缩比);

解压:

  1、tar zxvf fileName

2、tar xvf fileName(亲测也可以)

3、gzip -d fileName.tar.gz ; tar xvf fileName

解释:压缩的时候两种方式、其实第一种够用了、第二种就是分步进行的、先把打包成tar、然后用gzip压缩成.tar.gz格式、推荐第一种。解压正好相反

1-3、.bz2

压缩:

  方法1、 tar jcvf fileName.tar.bz2 fileName

  方法2、 bzip2 -z fileName.tar.bz2 fileName.tar

解压缩:

方法1、 tar jxvf fileName.tar.bz2

  方法2、 bzip2 -d fileName.tar.bz2; tar xvf fileName.tar

注释:电脑里面简单的测试通过了...如果有错误请指正

1-4、.zip

压缩: tar xvf fileName.zip fileName

解压:upzip fileName.zip

1-5、.rpm

解压:rpm2cpio fileName.rpm | cpio -div
1-6、.rar

今天不小心下载了一个rar的文件= =

因为linux自带没有解压rar的方法、所以得下载一个http://down.itlearner.com/soft/2412.shtml

make 安装好以后

压缩: rar a fileName

解压: rar x fileName.rar

解压:rpm2cpio fileName.rpm | cpio -div

当我运行upzip fileName.zip报错了因为虚拟机并没有unzip这个命令所以,折磨人的时候又来了

image.png

这样我们就成功的可以解压了。

假设当前目录下有多个zip文件 ( data_1.zip data_2.zip data_3.zip )

方法一

unzip '*.zip'
或者

unzip \*.zip

方法二( 先合并为一个zip包,后解压)

cat data* > data.zip

unzip data.zip

小记

1、列一下nginx的常用命令

停止 Nginx:

sudo ./sbin/nginx -s stop
sudo ./sbin/nginx -s quit

*-s都是采用向 Nginx 发送信号的方式。

查询nginx主进程号:

ps -ef | grep nginx

平滑重启

如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx 发送信号,平滑重启。

进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可

平滑重启命令:

kill -HUP 住进称号或进程号文件路径

或者使用

nginx -s reload(推荐)
或
/usr/nginx/sbin/nginx -s reload

注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:

nginx -t -c /usr/nginx/conf/nginx.conf
或者

nginx -t (推荐)

或

/usr/nginx/sbin/nginx -t

2、列一下Vim 保存和退出命令

命令

简单说明

:w

保存编辑后的文件内容,但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。

:w!

强制写文件,即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件,例如,原有的文件为只读文件,则可使用这个命令强制写入。但是,这种命令用法仅当用户是文件的属主时才适用,而超级用户则不受此限制。

:wq

保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。另外一种替代的方法是用ZZ命令。

:wq!

强制保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据强制写到启动vim时指定的文件中,然后退出vim编辑器。

ZZ

使用ZZ命令时,如果文件已经做过编辑处理,则把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。否则只是退出vim而已。注意,ZZ命令前面无需加冒号“:”,也无需按Enter键。

:q

在未做任何编辑处理而准备退出vim时,可以使用此命令。如果已做过编辑处理,则vim不允许用户使用“:q”命令退出,同时还会输出下列警告信息:

No write since last change (:quit! overrides)

:q!

强制退出vim编辑器,放弃编辑处理的结果。如果确实不需要保存修改后的文件内容,可输入“:q!”命令,强行退出vim编辑器。

:w filename

把编辑处理后的结果写到指定的文件中保存

:w! filename

把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有的文件。

:wq! filename

把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有文件,并退出vim编辑器。