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上的是一样的,只不过我们需要学习如何配置。

相关推荐
Dola_Pan2 小时前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book2 小时前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
prcyang3 小时前
Docker Compose
运维·docker·容器
脚踏实地的大梦想家3 小时前
【Docker】安装全流程与配置完整镜像源(可安装 nginx)
运维·docker·容器
城南云小白3 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
从心归零3 小时前
sshj使用代理连接服务器
java·服务器·sshj
咩咩大主教3 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用
羌俊恩3 小时前
视频服务器:GB28181网络视频协议
服务器·网络·音视频
Zww08913 小时前
docker部署个人网页导航
运维·docker·容器
Flying_Fish_roe3 小时前
linux-网络管理-网络配置
linux·网络·php