目录
本文开头简单介绍了Linux是什么,后续介绍了Linux的常用指令,最后以阿里云服务器为例,配置了jdk、Maven、Tomcat和Mysql,以及配置了安全组。
一.linux的介绍
1.1linux是什么
Linux 是一个操作系统. 和 Windows 是 "并列" 的关系.

1.2linux的发展历程
- 1969-1970 年, 贝尔实验室的 Dennis Ritchie (左图) 和 Ken Tompson (右图) 开发了 Unix 操作系统
注:这两位大佬,想开发操作系统时,发现开发编程语言有问题,于是创出了C语言编程语言,
- Unix 火了之后 , 衍生出很多的分支 . 其中有一只为 "Minix". 由荷兰的 Andrew S. Tanenbaum 教授开发. MINIX 含义为 " 小型的 UNIX", 源代码开放给大学教学和研究工作 .
- 1991 年 , 还在读大学的 芬兰人 Linus Benedict Torvalds (1969 年 12 月 28 日出生 , 当时 22 岁 ) 基于Minix 的启发 , 开发出了 Linux 的第一个版本 .

注:现如今Linux就是世界第一大操作系统,个人认为或许开源是主要原因。
或许有人问:为什么啊,我使用的电脑是Windows系统,为什么Windows不是第一大系统,而是这个没怎么听过的是第一大系统?
答:安卓系统本质上就是 Linux.
1.3linux发行版
严格而言,Linux只是一个操作系统内核!
一个完整的操作系统=操作系统内核+配套的应用程序
重点:不同公司/开源组织基于Linux内核,提供了不同的配套程序,这就是构成了不同的发行版!
现如今企业中使用的发行版主要是RedHat(红帽),但是由于是需要收费的,不要不要,我们想白嫖,想免费!于是出现了CentOs,这个几乎有RedHat的所有功能。
或许有人问:既然RedHat可以被CentOs平替,为什么还使用RedHat呢?
官方回答:我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。当然我认为主要原因还是:CentOS并不向用户提供商业支持,不负上任何商业责任,因此你踏上企业时,还是需要使用RedHat。
二.Linux环境搭建
Linux环境搭建有4种方式:
- 直接安装在物理机上 . 但是由于 Linux 桌面使用起来非常不友好 . [ 不推荐 ].
- 使用虚拟机软件, 将 Linux 搭建在虚拟机上 . 但是由于当前的虚拟机软件 ( 如 VMWare 之类的 ) 存在 一些 bug , 会导致环境上出现各种莫名其妙的问题 , 比较折腾 . [ 非常不推荐 ]
- 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能 , 在 Windows系统内集成了一个 Linux. 但是目前这个技术还不够成熟 . [ 暂时不推荐 ].
- 使用云服务器, 可以直接在 腾讯云 , 阿里云或华为云 等服务器厂商处直接购买一个云服务器 . [ 推荐 ]
注: 使用云服务器不仅环境搭建简单 , 避免折腾 , 同时还有一个最大的好处 , 部署在云服务器上的项目可以直 接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别 . 也就能让我们自己写的程序 真的去给别人去使用
2.1阿里云-云服务器配置
本文以新人免费试用的阿里云服务器为例,链接:阿里云-计算,为了无法计算的价值
步骤:
1.注册并且申请试用: 搜索云服务器试用,然后进入进行申请免费试用。


只要选择好这个就可以,看个人需求,一般选前者,毕竟都是初学,操作系统选择 CentOS 7.6 64位,其他选项申请试用之后可以后续更改,无需在意!
2.免费试用之后,可以更改一下自己的root密码,需要重置,并且要复杂一点,不然容易被入侵。

3.牢记你的外网IP,之后部署web应用程序,需要使用这个!
2.2使用终端软件连接Linux
所谓的终端软件,就是指:与远程主机建立网络连接的工具软件,从而对主机进行操作。
常见终端软件:XShell Putty MobaXTerm Iterm2 SecureCRT
此处着重讲解:XShell
下载链接:https://www.netsarang.com/en/free-for-home-school/

注:XShell 提供了两种授权方式.
- 企业版: 收费.
- 家庭/教育版: 免费.
使用XShell登陆主机
- 终端输入:ssh 服务器外网ip地址
- 输入用户名(root)和密码(重置的密码). 输入即可正确登陆
三.操作Linux,部署web程序
3.1Linux指令
想成功部署自己的web程序,第一件事:学会如何使用linux的指令!
1.Linux上的复制粘贴
复制: ctrl + insert ( 有些同学的 insert 需要配合 fn 来按 )
粘贴: shift + insert
2.Is指令
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。
3.pwd指令
语法: pwd
功能:显示用户当前所在的目录
4.cd指令语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下 .
cd .. : 返回上级目录
cd ~ :进入用户家目
cd - :返回最近访问目录
5.touch指令
语法: touch [ 选项 ]... 文件 ...
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
6.cat指令
语法: cat [ 选项 ] [ 文件 ]
功能: 查看目标文件的内容
7.mkdir指令语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 "dirname" 的目录
8.rm指令语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
9.cp 指令语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录
或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
10.mv指令语法: mv [选项] 源文件或目录 目标文件或目录
功能: 将文件重命名或将其移至一个新的目录中,
第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。
选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
11.man指令
语法: man [ 选项 ] 命令
功能:查询Linux指令的作用
选项:
-k 根据关键字搜索联机帮助
num 只在第num章节找
man man 能够看到 man 手册中的若干个章节及其含义
12.head指令
**语法:**head [ 参数 ]... [ 文件 ]...
功能: head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
参数: <行数> 显示的行数
13.date指令date 指定格式显示时间: date +"%Y-%m-%d %H:%M:%S"
date 用法: date [OPTION]... [+FORMAT]
%H : 小时 (00..23) %M : 分钟 (00..59) %S : 秒(00..61) %X : 相当于 %H:%M:%S
%d : 日 (01..31) %m : 月份 (01..12) %Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
14.vim指令vim 是一个知名的文本编辑器,可以编辑文本。
**打开/创建文本:**vim [文件名]
注:vim 打开文件后默认是 普通模式 . 普通模式下键盘的按键表示一些特殊功能的快捷键 . ( 例如按下 j 并不是 输入字母 "j", 而是表示光标往下移动一行 ). 需要进入插入模式才能进行文本编辑 .
进入插入模式: 按下i 键
保存:按下ESC 、 :w
注:插入模式下不能保存文件 , 需要先回到 普通模式 . 按下 Esc 回到普通模式. 普通模式下输入 :w , 再按下回车 , 即可保存文件
退出:普通模式下输入 :q , 再按下回车,
15.grep指令**语法:**grep [参数]... [文件]...
功能:用于查找文件中是否包含指定字符串 , 并显示对应的行 .
参数:
-n<行数> 显示的行数
-w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
-r 递归查找. 可以搜索多级目录下的所有文件.
--color 高亮查找到的结果
--include 指定查找某些文件
--exclude 指定排除某些文件
16.ps指令**语法:**ps [参数]...
功能:用于查看当前系统上运行的进程示例:
ps aux # 显示系统上所有的进程
ps aux | grep " 进程名 "
ps aux | grep " 进程 id"
注:
- 使用tab键补全:我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.
- 使用 ctrl + c 重新输入: 如果命令或者目录敲错了 , 可以 ctrl + c 取消当前的命令
3.2部署web程序
其实在之前dTomcat讲解种,我们就已经知道了怎么部署应用程序了,但是现在是部署在服务器上,又有什么区别呢?其实就是这样,需要jdk环境和Tomcat文件
第一步:认识yum
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上,功能和 Maven 的依赖管理功能类似. 使用 Maven 能帮我们方便的安装一些第三方 jar 包, 而 yum 方便我们方便的安装第三方程序.
- 查看软件包列表:yum list | grep [软件包关键字] # 注意, 最好要加上 grep, 否则罗列的内容会非常多, 导致机器很卡.
- 安装软件包**(****需要管理员权限):**yum install [软件包名字]
- 卸载软件包**(需要管理员权限)**:yum remove [软件包名字]
注:yum 所有的命令必须保证网络是联通情况下, 才能使用(云服务器一般网络都是良好的)
第二步:安装jdk
输入:yum install java-1.8.0-openjdk.x86_64,可使用 java - version 验证是否安装成功 .
第三步:安装Maven
- 查看Maven安装包:yum list | grep maven -w
- 安装 Maven: yum install maven.noarch
- 验证 Maven: mvn -v
第四步:安装Tomcat
由于yum上默认为Tomcat版本,因此我们需要手动安装Tomcat 8.
(1)下载Tomcat压缩包:下载路径可以参考官网 https://tomcat.apache.org/download-80.cgi ,Tomcat压缩包拖到XShell界面来。
(2)解压缩****Tomcat : 先安装解压器:yum install unzip,然后选择好文件夹,解压缩指令:unzip apache-tomcat-8.5.47.zip
(3)**修改可执行权限:输入:**cd apache-tomcat-8.5.47/bin ,进入到tomcat的bin文件夹,然后对里面需要的文件修改可执行权限:chmod +x *.sh 。(为了启动Tomcat)
(4) **启动Tomcat:**sh bin/startup.sh

如上图是安装tomcat的图解,ls -a:是显示当前文件夹的所有文件,cd tq02:是进入tq02的文件夹,本人以及解压了,所以不再操作解压过程。
(5)验证启动成功
方法 1 查看 tomcat 进程是否存在
ps aux | grep tomcat
方法 2 查看端口 8080 是否被绑定
netstat -anp | grep 8080
方法 3 使用 curl 命令访问默认 demo
curl 127.0.0.1:8080
第五步:管理安全组
就是在服务器当中,打开安全组,开放端口8080.

第六步:MySql的安装和启动
安装:
(1)安装 mariadb 服务:yum install -y mariadb-server
(2)安装 mariadb 命令行客户端:yum install -y mariadb
(3) 安装 mariadb C library:yum install -y mariadb-libs
(4) 安装 mariadb 开发包:yum install -y mariadb-devel
启动:
(1)启动服务 : systemctl start mariadb
(2)设置服务开启自启动: systemctl enable mariadb
(3)查看服务状态 : systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2018-11-09 12:49:23 CST; 19min ago
Main PID: 1510 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─1510 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─2030 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-...
11月 09 12:49:15 peixinchen.host systemd[1]: Starting MariaDB database server...
11月 09 12:49:17 peixinchen.host mariadb-prepare-db-dir[1062]: Database MariaDB is probably initialized in /var/lib/m...ne.
11月 09 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
11月 09 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Starting mysqld daemon with databas...mysql
11月 09 12:49:23 peixinchen.host systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.
只需要注意 Active 状态为 active (running)
测试连接:
**(1)**使用命令行客户端尝试连接:mysql -uroot
**(2)**查看版本号:MariaDB [(none)]> select version();
注:创建数据库时,统一使用 utf8mb4 字符集,为了支持中文。
第七步:移入需要压缩包
这一步很重要,在Windows上,需要将配置的项目移入到Tomcat的webapps目录下。因此在Linux上,我们也需要如此。
1.**启动Tomcat:**sh bin/startup.sh
2.将需要的jar包,从windows拖动到Linux的webapps的目录。
3.使用解压缩指令,unzip 压缩包名.jar
**注:**先安装zip(指令: yum install zip)和 unzip(指令: yum install unzip)
第八步:测试web程序
在浏览器里输入你的公网ip,然后是端口号,接着项目名即可。url:公网IP:8080/项目
注:其实在Linux配置web程序,其实配置在windows上的是一样的,只不过我们需要学习如何配置。