
最近在公司本地的服务器用nginx部署了一个单页面的应用程序,做之前想想感觉过程挺简单的,无非就是打包静态资源,修改server的nginx配置然后就可以访问了,后来发现需要安装node环境,一方面需要安装前端工程的依赖包,另一方面需要使用nodejs起一个express的server…一般三折之后还是打算记录一下….
链接远程服务器
这个没啥可说的,一般都是使用xshell连接服务器,然后使用xftp将打包好的前端静态资源传输上去部署,在这分享一个工具—finalShell,这个工具是一个集成xshell和xftp的工具,还可以通过mstsc链接远程桌面。
linux基础
一般来说著名的linux操作系统基本上分为两大类:
1)RedHat系列:RedHat\Centos\Fedora等
- 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
- 包管理工具 yum,yum可以用于运作rpm包
- 支持tar包
yum: 是redhat, centos 系统下的软件安装方式,基于Linux,
全称为 Yellow dog Updater, Modified,
是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
1 | 安装:yum install |
可以配置-y参数 yum install nginx -y 标识默认命令行交互的时候都是以yes
2)Debian系列:Debian\Ubantu等
- 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
- 包管理工具 apt-get,可以用于运作deb包
- 支持tar包
ap-get是ubuntu下的一个软件安装方式,它是基于debain。
1 | 安装:apt-get install |
可以配置-y参数 apt-get install nginx -y 标识默认命令行交互的时候都是以yes
Linux 命令行下载文件,马上就能想到两个工具:wget 和 cURL
curl和wget的区别和使用
curl和wget基础功能有诸多重叠,如下载等。
非要说区别的话:
- curl由于可自定义各种请求参数所以在
模拟web请求方面更擅长; - wget由于支持ftp和Recursive所以在
下载文件方面更擅长。
类比的话curl是一个精简的命令行网页浏览器,而wget是迅雷9
wget
不是安装方式,它是一种下载工具,类似于迅雷。通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理,名字是World Wide Web”与“get”的结合,如果要下载一个软件,可以直接运行:
1 | wget 下载地址 |
- 安装wget
1 | sudo apt-get update / yum update |
curl
curl的用法具体可以参考阮老师的教程,这里就不重复赘述了…
curl 的用法指南
linux常用shell操作
1)
>和>>linux中>表示覆盖原文件内容,>>表示追加内容
2)
cat
1 | -n 或 --number:由 1 开始对所有输出的行数编号。 |
查看已经存在的文件
cat filename
新建文件 (只能创建新文件,不能编辑已有文件.)
cat > filename
合并副本(拷贝)
cat sourcefile > distfile
将几个文件合并为一个文件。
cat file1 file2 > file// file1 和file2都写入到file中
在linux shell脚本中我们经常见到类似于cat << EOF的语句,EOF是文件的结束符-EOF是“end of file”,表示文本结束符,EOF只是一个标识符。可以换成别的标识。
1
2
3
4 // 将EOF之间输入的内容写入到filename中
cat > filename <<EOF
(内容)
EOF
1 | // 将EOF之间输入的内容"追加写入"到filename中 |
- 3)echo
在控制台输出文本
echo xxxxx// 打印xxxxx
显示结果定向至文件
echo xxxxx > filename // xxxxx写入到filename中
4)touch
touch命令用于创建不包含任何内容的文件
touch xxxx5)mv
mv命令将文件或目录从一个位置移动到另一个位置
mv sourcefile1 sourfile2 /etc/app
重命名
mv sourcefile1 sourcefile2
- 6)pwd
命令用于打印当前工作目录
查看操作系统(uname -a)
1 | uname -a // 可以查看操作系统 |
查看版本(cat /etc/redhat-release)
1 | CentOS Linux release 8.0.1905 (Core) |
所以根据上面的信息可以购买的华为云是Linux 64位的Centos 6.8版本
安装nodejs
要安装nodejs,最通俗的做法无非是查看远程服务器的操作系统和版本,然后从nodejs官网下载,然后通过解压工具解压文件
使用上面说的wget/curl/手动官方下载
1 | // 使用curl下载 |

解压gz文件- tar命令是类Linux中比较 常用的解压与压缩命令。
1 | // 基本用法 |
当然也有uzip等方式可以解压zip后缀的压缩文件…以上就是将file.tar.gz文件解压到/opt/webs/folder/文件夹下
另外补充一句如果下载的文件需要–重命名/移动/复制的话可以使用
1 | 移动文件:mv 文件名 移动目的地文件名 |
nginx基本操作
1 | nginx -s reload // 重启 |
后台进程相关
1 | netstat -apn | grep 3000 // 查看3000端口启动的进程 一般可以看见进程id和进程类型 如: 11321/nginx,11321就是进程id,nginx就是进程类型 |
- PS是LINUX下最常用的也是非常强大的进程查看命令
ps命令将某个进程显示出来,grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
中间的|是管道命令 是指ps命令与grep同时执行
1 | ps -ef | grep 3000 |
| UID | PID | PPID | C | STIME | TTY | TIME | CMD |
|---|---|---|---|---|---|---|---|
| root | 27391 | 2049 | 0 | 17:42 | pts/0 | 00:00:00 | grep 8089 |
- 具体含义如下:
UID:程序被该 UID 所拥有
PID:就是这个程序的 ID
PPID:则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME:使用掉的CPU时间。
CMD:所下达的是什么指令
nohup做后台进程
之前一直用pm2做进程守护,一般都是在线上环境,这次用nphup…
1 | // 使用nohup在指定的host和port启动并记录进程id在pidfile,记录日志到mockserver的log文件 |
这样杀死进程的时候就可以通过
1 | kill -9 `cat pidfile.txt` |

通过公网IP访问
华为云服务上部署程序,部署成功之后,发现它的公网IP不能被外网访问,一直以为只能通过域名访问,但是域名也是通过DNS域名解析之后获取真实的公网ip地址啊,不应该啊,怀着这个疑问查了一下….
原来云服务器需要添加一些配置,才可以通过公网ip访问部署的应用:
- 云服务器要添加安全协议
- 服务器要添加入站规则
我个人的理解就是需要开放云服务器各个端口的使用权限。配置一下哪些ip地址来请求可以访问我的云服务器,然后对它开发那些端口…类似这样的规则
如上图所示就是就是协议/应用选择TCP,输入你开放的端口号82,源地址选择IP地址,四个零,点击确定;为什么源地址选择IP地址,四个零,因为开放全部用户访问,然后就可以通过外网ip进行访问了…..