node
Linux教程
linux是操作系统。一般来讲,我们的应用程序完成开发之后, 是会把它部署到服务器上的。
windows系统的稳定性不高,linux操作系统的稳定性比windows高。目前来说,国内选择使用linux操作系统来做应用服务器的操作系统。
linux是基于unix的,开放源代码。任何个人或者公司都可以修改linux内核的源代码,实现或者增强自己想要功能。
unix之父:丹尼斯.里奇,肯.汤姆逊
linux之父:林纳斯.托瓦兹
linux是一个性能稳定的多用户网络操作系统。
目前市面上比较知名的发行版:redhat、ubuntu、debian、centos等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MccdSaQF-1640589170422)(linux内核.jpg)]
比较 | windows | linux |
---|---|---|
操作界面 | 界面形式统一,快捷键几乎相同。 | 图形界面风格依发布版本不同而不同,可能互不兼容的。 |
驱动程序 | 驱动程序丰富,版本更新频繁。 | 由志愿者开发,由linux核心开发小组发布,由于linux开源,硬件厂商基于版权考虑并未提供驱动程序。 |
使用 | 使用比较简单,容易入门。 | 如果是图形界面,使用简单。但如果是文字界面,需要专门的学习才可以使用。 |
学习 | 易学难精。 | 难入门,入门后想学精,比较容易。 |
软件 | 商业软件多,且需要购买相应授权。 | 大部分软件可以自由获取,同样功能的软件选择范围小。 |
Linux安装
安装虚拟机和linux。
虚拟机:vmware
linux:centos7
安装步骤
安装VMware后,在VMware中选择创建虚拟机,选择自定义安装(典型安装有可能失败)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szr88BDJ-1640589170422)(centos_install_1.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5e6ZuBMb-1640589170423)(centos_install_2.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-un35Logq-1640589170423)(centos_install_3.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8nEGrAZl-1640589170424)(centos_install_4.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdNqAQs8-1640589170424)(centos_install_5.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k0oesN2K-1640589170425)(centos_install_6.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zKRNhBly-1640589170425)(centos_install_7.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTr7dAFU-1640589170426)(centos_install_8.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jv1nnMpL-1640589170426)(centos_install_9.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCIV5gT2-1640589170426)(centos_install_10.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZik1rDC-1640589170427)(centos_install_11.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7V9vDM7F-1640589170427)(centos_install_12.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Qg8Xw7u-1640589170428)(centos_install_13.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FEmio6qc-1640589170428)(centos_install_14.png)]
centos7启用网卡步骤:
- cd /etc/sysconfig/network-scripts
- vi ifcfg-ens33
- 按i或insert键进入编辑模式
- 将onboot=no改为onboot=yes
- 按esc退出编辑模式
- 输入:wq保存退出
- 使用systemctl restart network重启网卡
- 使用ip addr命令查看ip地址
系统目录和分区
目录介绍
bin:
binary的缩写,这个目录存放的是经常使用的命令。
boot:
存放的是启动linux时使用的一些核心文件。
dev:
是device(设备)缩写,存放linux外部设备。
etc:
存放所有系统管理的配置文件和子目录。
home:
用户的主目录,在linux中,每个用户都会有一个自己的目录,一般该目录名以用户的账号命名。用户对自己的home目录有完全操作权限。
lib:
存放着系统最基本的动态连接共享库,作用类似于windows中的dll文件。
lost+found:
一般来说,该目录都是空的。当系统非法关机时,这里就存放了一些文件。
media:
存放的是一些外接设备。linux系统会自动识别U盘和光驱等设备,当识别后,会将这些设备存放到media目录中。
mnt:
系统提供该目录用于让用户临时挂载别的文件系统,把光驱挂载在mnt目录,我们可以进该目录查看光驱内容。
opt:
给主机额外安装软件所摆放的目录。
proc:
这是一个虚拟的目录,它是系统内存的映射。
使用以下命令可以屏蔽主机的ping命令,让别人无法ping你的机器
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
root:
系统管理员目录,也称作超级权限者的用户主目录。
sbin:
super user,存放的是系统管理员使用的系统管理程序。
selinux:
redhat/centos所特有的目录,类似于windows的防火墙,是一个安全机制。
srv:
存放着一些服务启动后的需要提取的数据。
sys:
该目录下安装了linux2.6内核中新出现的一个文件系统sysfs。
tmp:
存放临时文件。
usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在该目录下,类似于windows系统中program files目录。一般会在usr/local下新建一个tmp,再把所有压缩包上传到tmp目录中,当外部资源使用完成后,可以直接删除该目录。
var:
这是一个非常重要的目录,存放着一些不断扩充着的东西。我们习惯于将那些经常被修改的目录放到该目录下,包括各种日志文件。
常用命令
ls
显示当前目录下所有子目录及文件。
常用参数:
-a:显示隐藏文件和隐藏目录。在linux中,目录或文件名以.开头是隐藏文件或隐藏目录。
-l:显示文件或目录的详细信息。ll命令与ls -l等效。
linux的命令中,参数个数可以是0到多个。
cd
进入某个目录。
cd 路径
路径:相对路径和绝对路径。
. 当前目录
.. 上一级目录
相对路径不能以/开头,因为以/开头是绝对路径的表示方式。
相对路径从当前目录开始查找,绝对路径从根目录开始查找。
mkdir
创建空目录。
-p:在创建过程中,如果路径中的某一级目录缺失,会自动进行创建。
如果不使用-p参数,创建时如果路径中缺失了某一级目录,创建失败。
touch
创建空文件。
vi
进行文件编辑。
vi:类似于普通文本编辑。
vim:类似于高级文档编辑器,自带颜色。
文件编辑的步骤:
1、进入文件编辑界面时,按insert或i进入可编辑状态;
2、编辑文件内容结束后,按esc退出可编辑状态;
3、退出文件编辑(有3种方式可退出)
没有对文件进行任何修改时,可以使用:q退出
对文件进行了修改,但不想保存该修改时,可使用:q!强制退出
对文件进行了修改,并要保存修改后的状态,可使用:wq保存退出
使用vi/vim进行文件编辑时,如果该文件不存在,会自动创建空文件以供使用。
cat
查看文件内容。
cat 文件1 文件2 >> 文件3:将文件1和文件2的内容联合起来放入到文件3中。
head [-n]
查看文件的前n行内容。如果不加参数n,默认查看前10行内容。
tail [-n]
查看文件的后n行内容。如果不加参数n,默认查看后10行内容。
tail [-f]
动态查看文件的后n行内容。
less
分页查看文件内容。j ->向上 k->向下
ctrl+c
不是复制的意思,而是中断某个正在进行的操作。
echo
输出内容并向文件中添加。
echo '内容' >> 文件名称
cp [-r]
复制文件或目录。
复制文件:
cp 要复制的文件 想要粘贴的路径/粘贴后文件的名称
注意:复制文件完成在粘贴时,可以修改文件名称(这不是对原文件进行重命名操作,是复制文件)
复制目录:
cp -r 要复制的目录 想要粘贴的路径/粘贴后目录的名称
mv
移动文件或目录。mv命令移动目录时,不需要-r参数。
可使用该命令完成目录或文件的重命名。
rm [-rf]
删除文件或目录。
删除文件:
rm 文件名
-f:直接执行删除操作,用户无需再次确认是否删除。
-r:操作的是目录时,需要使用此参数。
注意:删除操作需谨慎,不要直接进行删除操作,如果要删除,应该先备份再删除。
ip addr
查看IP。
clear
清屏。
df
查看磁盘可用空间及空间节点信息。
free
查看内存
reboot
重启虚拟机。
shutdown/halt
关机。
shutdown -h 时间(分钟) 多久之后关机
halt 直接关机
ln [-s]
创建软链接,类似于windows系统中创建快捷方式。
不跟参数是创建硬链接
tar
解压。
tar -zxvf 文件名
压缩
tar -zcvf 文件名 被压缩文件
常用参数:zxvf
z:先解压gzip格式文件
x:解包
v:显示解压详细信息
f:使用文件,紧跟f参数后一定是空格加文件,也就是说,f是tar命令的最后一个参数
c : 建立压缩档案
find
find 路径 方式 表达式
-name
find 路径 -name “java”
?
一个字符
*
任意多个字符
[]
任何一个 [H|d]* 以 H或者d开头的文件
- [a-z] 小写字符
- [A-Z] 大写字母
- [a-Z] 大小写字母
- [0-9]数字
find . -name "[a|A].*"
find / -name "boot.*"
-type
find 路径 -type 文件类型符号
- f:普通文件,如文本文件,可执行文件
- d:目录
- l:软链接文件
- c:字符设备,如终端,磁带机等
- b:块设备,如光盘,硬盘等
ps
查看进程
ps -ef | grep tomcat | grep -v grep 查看tomcat进程号,排除grep自身产生的进程号
kill
杀死进程
kill -9 进程编号
service(systemctl)
系统服务
service 服务名 start|stop|restart|status
systemctl 服务名 start | stop | restart |status(查看状态)
跟权限相关的命令
linux中的用户:所有者(u-user),所属组(g-group),其他用户(o-other)
所有者是文件或者目录的创建者。
- — — —
- 表示文件的类型,是目录还是文件,还是其他类型的。
第一个—表示所有者u,第二个—表示所属组,第三个—表示其他用户。
‘r’:读权限
‘w’:写权限
‘x’:执行权限
‘-’:没有权限
chmod
授权。
+表示增加权限
-表示减少权限
=表示指定权限
在实际应用中,权限使用数字进行描述。
使用3个数字(0-7)来描述目录或文件的当前权限。 chmod 000 tmp chmod 777 tmp
第一个数字表示所有者的权限;
第二个数字表示所属组的权限;
第三个数据表示其他用户的权限。
‘r’:4
‘w’:2
‘x’:1
‘-’:0
授权时,目录和文件是有区别的。
对文件而言:
r表示可以对文件进行读取:cat\head\tail\tailf
w表示可以对文件进行修改:vi/vim
x表示当前文件可以被执行,一般来说,只有scripts(脚本)和command(命令)是可以执行的。
对目录而言:
r表示可以访问当前目录:cd
w表示可以对当前目录中的子目录或文件进行创建和删除操作。touch\mkdir\rm
chmod 指定的权限 指定的目录或文件
chmod [[u|g|o][+|-|=][r|w|x|-] | 3个0-7的数字] 指定的目录或文件
含义为将指定的目录或文件的权限修改为指定的权限。注意:只有目录或文件的所有者和root用户可执行此操作。
chown
修改文件或目录的所有者。
chown 指定的用户 指定的目录或文件
含义为将指定的目录或文件的所有者修改为指定的用户。注意:只有root用户可执行此操作。
groupadd
创建一个新的用户组。
chgrp
修改文件或目录所属的用户组。
chgrp 指定的用户组 指定的目录或文件
含义为将指定的目录或文件的所属用户组修改为指定的用户组。注意:只有root用户可执行此操作。
useradd
创建新用户。
useradd 用户名
passwd
修改用户密码。
passwd 用户
id
查看用户信息。
id 用户
whoami
查看当前用户。
su
切换用户。root切换到其他,不需要输入密码。其他切换root,需要输入密码。
su 用户名
常用辅助工具
xshell:建立本地与服务器之间的远程连接,从而可以开发人员在本地对远程服务器进行操作。
xftp:文件上传。
安装软件源
yum -y install epel-release
yum -y install 软件名
常用的如下:
vim 文档编辑
wget 远程下载
curl 客户端(client)的URL工具,用来请求 Web 服务器
lrzsz 在linux中可以代替ftp的上传和下载 使用rz命令可实现上传,只适合传输小文件,大文件应使用专业工具实现
安装JDK
步骤1:
下载资源:一定保证本地版本和远程服务器版本保持一致。jdk-11.0.6_linux-x64_bin.tar.gz
下载时应注意:下linux版本的,后缀以.tar.gz结束的。
步骤2:
文件上传。/usr/local/tmp
步骤3:
解压。
[root@localhost tmp]# tar -zxvf jdk-11.0.6_linux-x64_bin.tar.gz
步骤4:
剪切至/usr/local/jdk。
[root@localhost tmp]# mv jdk-11.0.6 ../jdk
步骤5:
配置环境变量。
[root@localhost local]# vim /etc/profile.d/自定义.sh
增加以下内容:
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
如果javac和java命令不能使用,则需要手动配置CLASSPATH。可用则无需配置。
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
系统级环境变量可以在/etc/profile.d/下面去自定义.sh文件,profile会自动加载
步骤6:
导入环境变量。
[root@localhost local]# source /etc/profile
步骤7:
测试: java -version, javac
yum安装mysql、jdk
一键安装,会将所有该软件需要的依赖也同步进行安装。强烈推荐!!!
#语法
yum -y install 软件名 安装软件:-y表示安装过程中所有询问都为yes
yum remove 软件名 删除已安装软件
yum update {软件} 更新当前软件版本,如果有新版本的话
yum info {软件} 查看软件信息
yum list 软件名 查询可供安装的软件
yum search 软件名 查询可供安装的软件
yum安装jdk1.8(openjdk)
# 安装前先检查系统中是否已安装jdk,如有,应先删除
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
# 如检测到,可使得以下命令删除原有的jdk
rpm -qa | grep java | xargs rpm -e --nodeps
# 查看可供安装的1.8版本
yum list java-1.8*
# 安装jdk
yum -y install java-1.8.0-openjdk*
# 验证
java -version
注意:使用yum安装openjdk,无需配置环境变量。
yum安装mysql5.7
# 1 下载mysql57
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# 2 安装rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
# 3 安装mysql
yum -y install mysql-community-server
# 4 启动mysql服务
systemctl start mysqld.service
systemctl status mysqld.service
# 5 获取mysql安装时生成的随机密码
grep "password" /var/log/mysqld.log
# 6 登录mysql,注意:如果密码中有特殊字符,需要在特殊字符前加\进行转译
mysql -uroot -p密码
# 7 在修改密码前,关闭mysql密码验证规范,避免过于简单的密码设置失败
set global validate_password_policy=0;
set global validate_password_length=1;
# 8 设置密码,修改用户以提供远程访问
set password for 'root'@'localhost' = 'root';
rename user 'root'@'localhost' to 'root'@'%';
# 9 放行3306端口
firewall-cmd --add-port=3306/tcp --zone=public --permanent
firewall-cmd --reload
#10 防止自动更新,删除下载的mysql源
#yum -y remove mysql57-community-release-el7-10.noarch
部署Springboot项目
-
再windows上面通过maven打包自己的项目,再打包之前需要设置你的项目的主函数类的地址
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.woniu.TaskDemoApplication</mainClass> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build>
如果该项目引入你自己的其他maven项目(非web)包,需要先把引入的项目安装到仓库且不要设置boot的编译插件
mvn package -DskipTests
-
打包完成之后把项目的target文件里面的xxxx.jar传到linux操作系统里面
-
通过命令来再后端运行项目
nohup java -jar xxxx.jar &
&符号代表再后台运行
nohup代表执行日志输出的文件
可以通过查看nohup文件来看项目的运行日志
-
项目运行起来之后是以进程的方式存在的,可以通过查看进程来观察项目是否启动
ps -aux | grep “项目名关键字” 查看进程
如果要关闭项目可以通过kill命令杀死进程来进行关闭
kill -9 进程号
前段项目部署
-
安装NodeJs
1、在官网http://nodejs.cn/download/下载linux版本的二进制压缩包,传送到linux操作系统
2、在linux操作系统里面解压该包
tar -xvf node-v16.9.1-linux-x64.tar.xz
3、解压之后进行环境变量的配置,类似java安装
在/etc/profile.d目录下面创建一个node.sh文件,进行配置
export NODE_HOME=/usr/local/node-v16.9.1-linux-x64
export PATH= P A T H : PATH: PATH:NODE_HOME/bin 让配置生效 source /etc/profile
-
通过npm安装淘宝镜像以及vue-cli(跟windows一样)
-
在windows上面打包前段项目传送到linux
-
由于windows打包的是zip格式的文件,linux不能使用tar去解压,所以要安装解压zip的命令
yum -y install unzip
-
通过unzip解压项目
unzip xxxx.zip
-
解压之后可以直接通过cnpm run serve来进行执行,如果有文件权限问题可以去设置项目文件的执行权限
node-project/node-test/node_modules/.bin/vue-cli-service该文件就需要设置X权限
进入到项目的node-project/node-test/node_modules/.bin目录
执行chmod 744 vue-cli-service
-
后端去运行项目
nohup cnpm run serve &
如果前段项目是通过window来进行访问,这样的前段链接后端的地址就不应该是localhost,需要在ajax上面设置linux的ip地址
注意:当我们启动了前段以及后端项目之后需要在防火墙上面放行端口,或则关闭防火墙
.tar.xz
3、解压之后进行环境变量的配置,类似java安装
在/etc/profile.d目录下面创建一个node.sh文件,进行配置
export NODE_HOME=/usr/local/node-v16.9.1-linux-x64
export PATH=
P
A
T
H
:
PATH:
PATH:NODE_HOME/bin
让配置生效 source /etc/profile
-
通过npm安装淘宝镜像以及vue-cli(跟windows一样)
-
在windows上面打包前段项目传送到linux
-
由于windows打包的是zip格式的文件,linux不能使用tar去解压,所以要安装解压zip的命令
yum -y install unzip
-
通过unzip解压项目
unzip xxxx.zip
-
解压之后可以直接通过cnpm run serve来进行执行,如果有文件权限问题可以去设置项目文件的执行权限
node-project/node-test/node_modules/.bin/vue-cli-service该文件就需要设置X权限
进入到项目的node-project/node-test/node_modules/.bin目录
执行chmod 744 vue-cli-service
-
后端去运行项目
nohup cnpm run serve &
如果前段项目是通过window来进行访问,这样的前段链接后端的地址就不应该是localhost,需要在ajax上面设置linux的ip地址
注意:当我们启动了前段以及后端项目之后需要在防火墙上面放行端口,或则关闭防火墙