Linux 的介绍和云服务器上web 程序部署

目录

一.linux的介绍

1.1linux是什么

1.2linux的发展历程

1.3linux发行版

二.Linux环境搭建

2.1阿里云-云服务器配置

2.2使用终端软件连接Linux

三.操作Linux,部署web程序

3.1Linux指令

3.2部署web程序

第一步:认识yum

第二步:安装jdk

第三步:安装Maven

第四步:安装Tomcat

第五步:管理安全组

第六步:MySql的安装和启动


本文开头简单介绍了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种方式:

  1. 直接安装在物理机上 . 但是由于 Linux 桌面使用起来非常不友好 . [ 不推荐 ].
  2. 使用虚拟机软件, 将 Linux 搭建在虚拟机上 . 但是由于当前的虚拟机软件 ( 如 VMWare 之类的 ) 存在 一些 bug , 会导致环境上出现各种莫名其妙的问题 , 比较折腾 . [ 非常不推荐 ]
  3. 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能 , 在 Windows系统内集成了一个 Linux. 但是目前这个技术还不够成熟 . [ 暂时不推荐 ].
  4. 使用云服务器, 可以直接在 腾讯云 , 阿里云或华为云 等服务器厂商处直接购买一个云服务器 . [ 推荐 ]

注: 使用云服务器不仅环境搭建简单 , 避免折腾 , 同时还有一个最大的好处 , 部署在云服务器上的项目可以直 接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别 . 也就能让我们自己写的程序 真的去给别人去使用

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 提供了两种授权方式.

  1. 企业版: 收费.
  2. 家庭/教育版: 免费.

使用XShell登陆主机

  1. 终端输入:ssh 服务器外网ip地址
  2. 输入用户名(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"

注:

  1. 使用tab键补全:我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.
  2. 使用 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上的是一样的,只不过我们需要学习如何配置。

相关推荐
安全系统学习36 分钟前
网络安全之RCE分析与利用详情
服务器·网络·安全·web安全·系统安全
longze_737 分钟前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs1 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue111 小时前
ubuntu 操作记录
linux
风吹落叶花飘荡3 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
AmosTian4 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
YC运维5 小时前
RIP实验以及核心原理
运维·网络·智能路由器
阿蒙Amon5 小时前
C#随机数生成全面详解:从基础到高级应用
服务器·网络·c#
leo__5206 小时前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible