【熟练使用linux操作系统】
- 部署(命令 scp ssh)
- 学习(es5 - 学习)
> vi hello.js
> node hello.js1. 准备工作
阿里云(ubuntu16.04)
ip
root
root密码
2. linux
windows pc操作系统(使用便捷)
unix 收费
linux 命令行 【 图形化界面(ubuntu desktop)】,用于服务器
稳定,不需要关机
内核非常小 - 安装在板子上(嵌入式开发)
飞行器、android操作系统、macos(类linux)
开源(源码是开放的)- 思想、文化
3. 要求
阿里云 ip
39.106.19.183
root
root密码
符号
> windows/macos (客户机)
$ linux (服务器-普通用户)
# linux(服务器-超级管理员)
1) 远程登录、远程文件传输
1. 图形化界面方式(简单直观、安装图像化界面软件、配置)
xshell
filezilla
2. 命令行模式
> ssh [email protected]
使用root账号,登录ip为39.106.19.183的主机
通常情况下,我们不直接使用root进行登录,务必将root的密码设置的较为复杂(但是不要忘记)
# exit
退出登录
> scp ./app.zip [email protected]:/var/www/html
将当前目录下的app.zip上传到ip为39.106.19.183 /var/www/html(使用root账号登录,如果使用普通账号登录,只能将文件传输到家目录中)
> scp ./app.zip [email protected]:/var/www/html
报错!没有权限!
> scp ./app.zip [email protected]:~window(DOS命令)
c:/users/王五
桌面
下载
影音
收藏
...
win+R 打开了dos, dos默认所在目录为 c:/users/王五
> dir
类似于linux中的ls, 打印出当前目录下的文件及子目录
> cd 桌面
2) 文件系统(路径、文件、目录)
/
/root 超级管理员的家目录
/home/charles charles用户的家目录
/home/jacky jacky用户的家目录
/etc 配置文件目录
group 组信息
passwd 账号信息
shadow 账号敏感信息(普通账号无法查看)
/var 可变目录
/opt 第三方软件安装目录 jdk,nodejs
/usr/local 默认软件安装目录 apt install
...命令模板
命令 [options] [arguments]
options
-la
$ pwd
打印当前所在目录
$ ls
列出当前目录下的子目录或文件
$ ls -a
$ ls -l
$ ls -R
$ more
$ more /etc/group
预览/etc/group这个文件
回车:换行
空格:换页
q: 退出
$ tail -10 /etc/group
查看/etc/group这个文件的后10行
$ man groupadd
manual 手册,查看groupadd这个命令的使用手册
# reboot
重启
当修改了/etc/hostname的时候,需要重新启动电脑才能生效
# vi /etc/hostname
$ history
查看历史命令
!命令序号
执行命令序号对应的命令
!!
执行上一条命令
目录相关
普通账号默认只能对自己家目录进行目录操作
$ cd [目录]
切换目录, 如果没有指定目录,默认进入自己家目录下
目录:
/ 根目录(操作系统的根)
~ 家目录(相对目录)
. 当前目录
.. 上一级目录
$ mkdir a
创建目录
$ rmdir a
删除空目录
$ touch f
新建文件(f不存在的时候)或者修改文件最近访问时间(f存在的时候)
$ rm f
删除文件(由于目录也是文件,所以rm也可以删除目录)
rm -r a
删除a及a目录下的所有子目录及文件
(删库跑了 sudo rm -r /)
$ date > a
将date函数的输出重定向到a文件中,a如果不存在,创建。会覆盖
$ date > a
将date函数的输出重定向到a文件中,a如果不存在,创建。不会覆盖
$ cp a b
如果a是文件,b不存在或者b也是一个文件:将a的内容复制到b中
如果a是文件,b是目录:将a复制到b中
$ cp -r a b
如果a为目录,必须使用-r,表示级联操作
$ mv
$ mv a b
如果a是文件/目录,b不存在,表示重命名
如果a是文件,b是目录,表示将a移动到b中
3) 用户、权限
普通用户只能在自己的家目录中创建文件、删除文件、修改文件
用户组
# groupadd web-ui
# more /etc/group
...
webui:x:1019:
用户
# adduser vicky
创建用户 vicky
创建组 vicky
将vicky添加到 vicky组中
创建一个加目录 /home/vicky
将家目录的默认文件/etc/skel进行拷贝->/home/vicky
# adduser --gid 1019 vicky
创建用户 vicky
将vicky添加到 1019组中
创建一个加目录 /home/vicky
将家目录的默认文件/etc/skel进行拷贝->/home/vicky
# userdel -r zhangnn
将zhangnn彻底删除
# id [用户名]
查看账号信息
# usermod --gid=1009 larry
$ su - 账号
切换到指定账号下,账号如果缺省,表示切换到超级管理员下
root 超级管理员
sudoer 可以执行超级权限的用户(管理员)
# vi /etc/sudoers
$ sudo more /etc/shadow
4) 文件权限
普通用户拥有自己家目录中所有的权限。
$ ls -l
-rw-r--r-- 1 vicky webui 44 Aug 24 07:36 hello.js
drwxr-xr-x 2 root root 4096 Aug 24 09:29 bin
-rwxr-xr-x 1 root root 8600 Aug 24 09:34 hello.o- 文件
d 目录
rw-r--r--
角色:
拥有者u、同组人g、其他人o
权限
读r、写w、执行x
修改权限
一个文件的权限拥有者可以修改、超级管理员、普通管理员也可以修改
chmod
$ chomd g+w hello.js
为hello.js添加同组人编写的权限rw-rw-r--
110 110 100
6 6 4
$ chmod 664 world.js5) vim 编辑器(命令行、插入模式、底行模式)
vi 、vim(linux)、sublime 、vscode(轻量级的编辑器)、webstom(集成开发工具)三种模式:命令行模式、插入模式、底行模式
1. 命令行模式
打开vim编辑器,默认进入的模式,字符表示特殊的命令
x 删除一个字符
u 回退
cc 替换当前行:删除当前行;进入到插入模式
cw 替换单词
r 替换一个单词
...
2. 插入模式
命令行模式 -> 插入模式
i insert 插入
o other 在下一行插入
a append 追加
I 从行首插入
O 在上一行插入
A 在行尾追加
3. 底行模式
命令行-> 底行模式
保存 :w
另存为 :w 文件名
退出 :q
保存退出 :wq
强制退出 :q!
搜索 /words 回车表示查询(高亮)n/N查询下一个
替换 :1,$s/旧串/新串/g
...
6) vim配置
用户配置
~/.vimrc
全局配置
/etc/vim/vimrc
----------------------
set nu
set autoindent
set tabstop=2
syntax on
----------------------------懒人配置
spf13
$ curl http://j.mp/spf13-vim3 -L -o - | sh
7) 软件安装(mysql、apache2、jdk、nginx...)
1. 后台相关软件
jdk1.8
mysql
jar
2. 前端相关软件
apache2 (httpd)
npm run build:prod -> dist -> /var/www/html
nginx (nuxt.js)
门户系统 -> vue-admin-template (nuxt.js 适于seo检索)
node.js
nodeJS(io模块,网络模块,数据库模块,任务[线程]...)
3. 工具类型软件
gitlab(内存不低于2G);gitee、github(开源)
svn-server
8) 软件安装方式
1. 命令行安装
mysql、apache2
# apt update (更新源)
1) 安装
# apt install xxx
2) 配置
/etc/xxx
2. 解压安装
jdk、nodejs
1) 下载 wget ; 本地下载,上传阿里云 (.tar.gz , .tar.xz , ...)
2) 解压
/opt # tar -xvf xxx.tar.gz
xxx 该软件的家目录
例:
/opt $ sudo tar -xvf node-v14.17.5-linux-x64.tar.xz
/opt/node-v14.17.5 nodejs的家目录
3) 环境变量配置
1. 全局
/etc/profile
2. 本地
~/.bashrc
shell编程
export NODE_HOME=/opt/node-v14.17.5
export PATH=$NODE_HOME/bin:$PATH
4) 生效
$ source .bashrc
3. 编译安装
nginx、fastdfs
c开发 -> 编译 -> 运行
1) 编译
2) 执行4) 实例安装nodejs
1) 下载压缩包
/opt $ sudo wget https://nodejs.org/dist/v14.17.5/node-v14.17.5-linux-x64.tar.xz
2) 解压
/opt $ sudo tar -xvf node-v14.17.5-linux-x64.tar.xz
3) 环境变量配置
用户环境变量配置
~/.bashrc
~/.profile
系统环境变量配置
/etc/profile
export NODE_HOME=/opt/node-v14.17.5-linux-x64
export PATH=$NODE_HOME/bin:$PATH
4) 使生效
$ source .bashrc
$ node --version
9) 进程监控、端口号查询、磁盘查询...
$ ps -aux | grep java
$ kill -9 进程编号
$ service 服务名 status/restart/start/stop
$ java -jar xxx.jar
ctrl + z
将当前正在运行的进程停止下来
$ bg %1
将1号任务在后台运行
$ fg
$ wget https://nodejs.org/dist/v14.17.5/node-v14.17.5-linux-x64.tar.xz
$ curl 解析url,将url内容展示到终端中
-----后台接口------
Hello.java
World.java
->
Hello.class
World.class
->
app.jar(接口服务,一直运行, 按下ctrl+c键后,停止运行)4. docker
39.106.19.183 【csj】1) 作用
2) 安装
# docker version
1. 更新源
# apt update
2. 安装必备软件
# apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
3. 安装 GPG key
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. 安装
# echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 更新源
# apt-get update
# apt-get install docker-ce docker-ce-cli containerd.io
防火墙开放端口
tcp/ip 80803) 三要素
1. 镜像(模板 -> 源码)
# docker images
# docker search ubuntu
# docker search httpd
# docker pull ubuntu
2. 容器(实例 -> 运行吗)
容器由镜像创建而来以伪终端交互方式创建一个ubuntu容器
# docker run -it ubuntu
彻底退出
# exit
暂时退出
# ctrl + p +q
# docker attach查看docker进程
# docker ps
退出容器
# docker kill 616bc49f0fb1tomcat 动态服务器(javaweb servlet/jsp 、 ssm)
# docker run -d tomcat
http://39.106.19.183:80803. 仓库(存储镜像的地方 -> gitee/github)
5. docker工作流
开发后端接口(Java)4套 jar
基础镜像(ubuntu)
-> 搭建环境(jdK、mysql、apache2、nodejs、tomcat、...)
-> 部署代码
jar/war
数据库
前端
-> 提交镜像 ubuntu-briup-webui
发布镜像(阿里云)
-------------------
# docker pull ubuntu-briup-webui
# docker run ubuntu-briup-webui