linux(ubuntu16.04)
1、准备工作
1) linux操作系统安装方式
1. 双系统 ubuntu / windows
2. 虚拟机
3. 云服务器(阿里云/腾讯云)
服务器
阿里云/腾讯云
客户端 -- 用来连接服务器
1、终端工具
xshell
putty
2、ssh
ssh user@ip
ip 47.93.255.92
user root
password 重置密码
2) linux特点
1. 性能强劲,运行稳定,一般作为服务器(可长时间不关机,windows不行)
2. 整个操作系统可以被压缩成很小的一个文件,容易植入一些硬件设备中
飞行器、冰箱
3. 开源免费(linux源代码在github上免费提供)
版本控制工具
git github
svn svn服务器
4. 对于初学者容易建立编程思维,是学习编程语言最好的环境
linux
c vc
java eclipse/myeclipse
c++ vc
php eclipse
web dw/ws
hello.html -> 浏览器
hello.c -编译-> hello.o -> 运行
5. 文件系统
没有盘符的概念,所有的文件都处于根目录下,目录也是一种特殊的文件
2、环境搭建
服务器
阿里云服务器
终端工具
xshell
3、使用
登录方式:
win10 ssh / xshell
mac ssh
$ ssh root@ip
登录成功:
root@VM-0-9-ubuntu:~$
root 当前账号
@ 分隔符号
VM-0-9-ubuntu 主机名称
: 分割符号
~ 当前所在目录
$ 分割符号
windows
c:/users/znn
linux
/home/znn
4、linux目录结构
小区某栋楼 /
该楼的住户 ~
/ 根目录【cd /】
/bin 常用命令
/home 普通用户家目录
zhangsan
lisi
默认情况下,普通用户只能在用户家目录中进行更新操作(增加、删除、修改)
/opt 第三方文件解压安装目录
/var 下面有www/html部署目录,还能存放各种服务的日志
/root 超级管理员的家目录
/etc 系统管理和配置文件
...
~ 家目录【cd】
5、用户管理(超级管理员身份)
使用root登录到ubuntu系统中
用户名:root
密码:阿里云控制台中重置密码
1) 创建新用户
$ adduser 用户名称
过程:
1. 新建组,组名与用户名保持一致
/etc/group 保存了组信息
2. 新建用户,并且将用户放到刚刚新建的组中
/etc/passwd 保存了用户信息
/etc/shadow 保存了用户的密码信息
3. 创建了一个家目录 /home/xxx
4. /etc/skel拷贝到用户家目录
2) 删除用户
$ userdel -r zhangsan
删除用户信息、密码、家目录
创建完用户后,如果从root切换到当前新建的用户下,进行了一些操作后,再回到root用户下,想要删除新建的用户时,报错当前用户被进程xxx所占用
解决:
ctr + d 退出root用户,回到新建的用户
ctr + d 退出新建的用户,回到root用户
再执行userdel -r 用户名即可删除
参考:
https://blog.csdn.net/qq_27610647/article/details/100055786
信息:userdel: user 'znn1' does not exist
命令:rm -rf /home/znn1
原因:因为你仅删除了用户,可以带参数运行连目录一起删除
userdel znn1 删除用户,不删除用户主目录
userdel -r znn1 -r表示连用户主目录一起删除
若删除用户后主目录还在,可手动删除 rm -rf /home/znn1
3) 修改用户
1. 密码
$ passwd zhangsan
2. 信息
$ usermod -g 1008 zhangsan
将zhangsan的组id换成1008
$ id zhangsan
表示查看当前用户的id
4) 切换用户
$ su - 用户名
$ su 用户名
5) sudo
sudo命令表示当前普通用户以root的身份运行某个命令,但是需要将当前的普通用户配置到/etc/sudoers中才能使用
$ vi /etc/sudoers
6、常用命令
$ pwd
打印当前文件所在路径
$ ls
ls
列出当前目录下所有的文件
ls 目录/home
列出家目录的所有的目录以及文件
zhangsan/zhangsan123
/home$ ls -l
以长格式列出当前目录下所有的文件
drwxr-xr-x 22 test test 4096 Jul 19 20:02 test
d 文件类型
d 目录
- 文件
rwxr-xr-x
rwx read write execute 拥有者权限
r-x read - execute 同组人权限
r-x read - execute 其他人权限
22
test 拥有者
test 拥有者所属组
4096 文件大小
Jul 19 20:02 最近访问时间
test 文件名称
$ cd
切换到指定目录
$ cd / 切换到根目录
$ cd ~ 或者 $ cd 切换到家目录
$ cd .. 退到上一级目录
$ cd day01 切换到day01目录
$ clear
清理终端屏幕
$ history
列出历史命令
$ man 命令
查看指定命令的手册
q quit 退出手册
回车 下一行
空格 下一页
$ more 预览
$ less 预览
$ cat 连接后显示
$ tac 连接后显示
$ nl 添加行号后显示
$ tail 预览末尾10行
$ head 预览头10行
7、文件系统
1) 新建目录
$ mkdir linux es5 es6
$ mkdir -p day01/a/b/c
mkdir -p xx/yy的好处就是一次可以创建多级文件夹,若xx文件夹不存在,则先创建xx文件夹,然后在xx文件夹下创建yy文件夹
mkdir xx/yy会报错
2) 新建文件/修改最近访问时间
$ touch 文件名
如果指定的文件名不存在,创建该文件
如果指定的文件名存在,修改最近访问时间为当前时间
3) 拷贝文件或者目录
$ cp a.txt b.txt 将文件a.txt复制一份为b.txt
$ cp -r dir1 dir2 将目录dir1复制一份为dir2
4) 移动
$ mv a.* dir1
$ mv a b
5) 连接
创建硬链接(防止误删除,多个指针指向同一个inode)
$ ln a.txt a.txt.h
创建软连接(linux里的软连接类似于windows系统中的快捷方式)
$ ln -s a.txt a.txt.s
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
6) 删除
$ rm -rf * 删除当前目录下的所有文件
所删除的文件,一般都不能恢复
$ rm -f
f参数忽略不存在的文件,不显示任何信息
$ rm 命令删除一个目录中的一个或者多个文件或者目录,只用rm命令不会
删除目录,通常文件通常可以恢复
$ rmdir 只能删除空目录
7) 压缩与解压缩
1. 压缩
gzip 压缩
bzip2 压缩
zip 打包压缩
$ gzip a.txt
=> a.txt.gz
$ bzip2 b.txt
=> b.txt.bz2
$ zip all.zip *.txt
=> all.zip (a.txt b.txt c.txt)
gzip只能压缩文件 , 不能压缩目录 ,后缀名为.gz , 而且不保留原文件
bzip2压缩文件,压缩文件后缀为.bz2
bzip2 [-k] [文件]
-k:产生压缩文件后保留原文件
zip压缩文件,压缩文件后缀为.zip
-r 压缩目录
eg:zip services.zip /etc/services 压缩文件;
zip -r test.zip /test 压缩目录
如果不加-r选项,压缩后的文件没有数据。
2. 解压缩
$ gunzip a.txt.gz
=> a.txt
$ bunzip2 a.txt.bz3
=> a.txt
$ unzip all.zip
=> a.txt b.txt c.txt
$ unzip all.zip -d dir2
=> dir2/a.txt b.txt c.txt
3. 归档
tar
-c 创建归档文件
-x 拆档
-v 打印细节
-f 指定归档/拆档文件
-j bzip2格式 xxx.tar.bz2
-z gzip格式 xxx.tar.gz
$ tar cvf all.tar *.txt
$ tar cvzf all.tar.gz *.txt (gzip)
$ tar cvjf all.tar.bz2 *.txt (bzip2)
4. 拆档
$ tar xvf all.tar.gz
归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和
压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小
8、软件安装
1) apt命令安装
更新源
# apt update
安装软件包
# apt install xxx
# apt install zip
# apt install git
# apt install mysql-server-5.7
apt与apt-get的区别
apt是apt-get的升级,apt-get中很多命令已经被apt取代
优先推荐使用apt
2) 解压缩安装
jdk
nodejs
9、文件内容查看
cat 将多个文件内容显示出来
tac
10、权限
使用者与群组
拥有者 u user
同组人 g group
其他人 o other
所有人 a all
权限类型
读 r read
写 w write
执行 x execute
权限
rw- 110 6
r-x 101 5
如何查看同组的人
$ more /etc/passwd
修改文件权限
1. 通过表达式来修改
$ chmod g-r a.txt
g 表示是同组人还是拥有者还是其他人
- 移出权限
+ 添加权限
= 设置权限
$ chmod g-r a.txt
$ chmod o+w a.txt
2. 通过二进制方式修改
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
$ chmod 644 a.txt
$ chmod -R 777 a.txt 赋予当前文件最高权限
filezilla上传文件失败
1)在linux下进入/var/www目录下,输入如下命令
$ sudo chmod -R 777 html
2)上传文件成功后,但是在浏览器无法访问时,在linux下进入/var/www/html目录,输入如下命令
$ sudo chmod -R 777 项目名
11、vim编辑器
1) 作用
1. 修改配置文件
2. 快速修复部署到服务器上的代码
3. 编写js代码
2) vim与vi
vim是vi的升级版本
3) 模式
命令行模式
切换到输入模式,以输入字符 i
删除当前光标所在处的字符 x
复制 yy
粘贴 p
删除 dd
回退 u
切换到底行模式 :
编辑模式【左下角 insert】
写代码
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACKSPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式
ESC,退出输入模式,切换到命令行模式
底行模式【底行可以输入】
保存 :w
另存为 :w other.txt
退出 :q
保存退出 :wq
不保存退出 :q!
查找 /larry n表示查找下一个
替换 :1,$s/larry/8888/g
复制 :1,4co55
4) vi配置
1. 自定义vimrc
~/.vimrc
2. 使用第三方插件
spf13-vim
下载spf13
$ apt update
$ apt install git
$ git --version
$ apt install vim
$ vim --version
$ curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh
如果下载失败
1. 先试着换网多执行几次该命令
2. 重新创建一个用户,在新用户中下载
卸载spf13
apt remove vim
apt remove vim-runtime
apt remove vim -tiny
apt remove vim-common
apt remove vim-doc
apt remove vim-scripts
12、其他重要命令
$ find ./ -name '*.txt'
查找当前目录中所有的.txt文本文档
$ grep 1003 /etc/passwd
查找passwd文件中的包含1003行的内容
$ sleep 1000s
$ sleep 1000s &
将当前进程放到后台执行
$ ps -ef | grep java
在所有进程中找到java相关的进程
$ kill -9 pid
$ reboot
重启云服务器卸载软件步骤:
1. 关闭进程:
# ps -ef | grep vsftpd
# kill -9 pid
# 或者
# killall vsftpd
2. 删除软件
apt install -> apt remove --purge
解压 -> 删除
下载所有软件之前更新源
apt update
13、apache2
1) 安装
apt-get下载报错时,使用apt下载,apt是apt-get的升级
# sudo apt install apache2
默认情况下安装后会自动启动
# sudo service apache2 status
# sudo service apache2 start
# sudo service apache2 restart
# sudo service apache2 stop
apache的部署目录
/var/www/html/
wangyi/index.html
2) 测试
浏览器地址栏
http://47.93.255.92
=> /var/www/html/index.html
http://47.93.255.92/wangyi
=> /var/www/html/wangyi/index.html
3) 部署
将本地的项目代码上传至服务器的/var/www/html/目录下
解决方案
windows : fillzilla
linux : vsftpd
14、vsftpd安装
作用:可以使用ftp工具或者命令将客户机上的文件上传到服务器上。
/etc/profile
export NODE_HOME=/opt/node-v10.16.2
export PATH=$PATH:/usr/sbin:$NODE_HOME/bin
export JAVA_HOME=/opt/jdk1.8.0_221
export PATH=$PATH:/usr/sbin:$JAVA_HOME/bin
配置文件的路径为/opt下的解压缩后的文件名
安装过程:
1) 使用apt安装
# sudo apt install vsftpd
2) 测试
# vsftpd -version
vsftpd: version 3.0.3
报错:
/usr/sbin不在PATH中
解决方案:
# sudo vi /etc/profile
追加
export PATH=$PATH:/usr/sbin
在/etc下执行该命令
# source profile 【使配置文件生效】
3) 连接测试
# ftp 47.93.255.92
1. 提示输入用户名密码,说明可以访问ftp服务器
2. 提示timeout,说明网络有可能不同,对方(阿里云)添加了防火墙
解决方案:
去阿里云的管理页面中打开21端口即可
4) 使用fillzilla
将被动模式变为主动模式
这时候可以查看,但是无法上传文件
解决方案:
配置vsftpd
# sudo vi /etc/vsftpd.conf
将31行的注释给删除即可
write_enable=YES
5) 重启vsftpd
# sudo service vsftpd restart
15、安装nodejs 解压安装
1) 下载安装包
windows
https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.xz
下载完之后通过filezilla上传至服务器/opt
linux
# wget https://nodejs.org/dist/v10.16.2/node-v10.16.2-linux-x64.tar.xz
下载完之后将该压缩包移动到/opt下
# sudo mv node.xxx.tar.xz /opt
2) 解压
# sudo tar xvf node.xxx.tar.xz
3) 重命名
# mv node-v12.18.2.xxx node-v12.18.2
此时无法使用node进入到node环境,需要配置环境
4) 配置环境变量
配置步骤:
# sudo vi /etc/profile
文件的最后追加
export NODE_HOME=/opt/node-v10.16.2
export PATH=$PATH:/usr/sbin:$NODE_HOME/bin
# source /etc/profile
4) 测试
# node -v
v10.16.2
16、安装jdk
1) 下载
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2) 移动到/opt下解压缩
# sudo tar xvf jdk-8u102-linux-x64.tar.gz
3) 配置环境变量
# sudo vi /etc/profile
文件的最后追加
export JAVA_HOME=/opt/jdk1.8.0_102
export PATH=${JAVA_HOME}/bin:$PATH
# source /etc/profile
4) 测试
# java -version
17、安装mysql
1) 卸载mysql
# sudo apt autoremove --purge mysql-server-5.0
# sudo apt remove mysql-server
# sudo apt autoremove mysql-server
# sudo apt remove mysql-common
清理残留数据
# dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
2) 下载
# sudo apt install mysql-server
根据提示输入数据库的用户名与密码
# mysql -uroot -p4444