Linux的基本使用和web程序部署

4 篇文章 0 订阅
1 篇文章 0 订阅

注意:本文章不适合C++学习者(知识点远远不够),只适合Java学习者,学习简单的Linux命令

1.Linux的背景知识

1.1Linux是什么

Linux是一个操作系统,和Windows是“并列”的关系。经过多年的发展,Linux称为了世界第一大操作系统。Linux系统被广泛应用于服务器领域、嵌入式设备,还是有移动端。

有人可能表示,Linux都是世界第一大操作系统,我怎么没有听说过呢?其实你听说过,安卓系统本质上就是Linux系统

1.2Linux发行版

Linux严格意义上只是一个“操作系统的内核”

一个完整的操作系统 = 操作系统内核 + 配套的应用程序

由于Linux是一个完全开源免费的内核,因此有些公司/开源组织基于Linux内核,提供了不同的配套程序,也就构成了不同的“发行版”

 企业中主要使用的发行版本有RedHat(红帽)(收费),我们要使用的是CentOS(免费)(红帽上方)。

CentOS和RedHat的关系

CentOS和RedHat没有什么区别,却别就是在于logo不同。CentOS因为属于免费的,不会提供任何的商业服务。RedHat因为是收费,会提供相应的商业服务,在服务器上可以上他们的技术人员定位软件的问题所在。因为比较便宜,所以很多公司使用。

1.3关于LInux我们学习什么

1)基础命令

Linux虽然有图形化界面,但是在 服务器/嵌入式设备上往往是通过命令的方式操作的。因此学习Linux命令就是使用Linux的重要基础。

使用命令相比于使用图形化界面有什么好处?

  • 节省系统资源:运行图形界面需要让系统付出一些额外的开销,如果对于嵌入式设备,可能没有这个条件。
  • 节省网络宽带:如果通过网络访问服务器,图形化界面需要一帧一帧的传输图像,而命令只需要传输字符串。
  • 便于批量执行任务:可以通过一些“脚本”代码来批量完成一些任务,完成一些简单的工作。

2)系统编程 & 网络编程

Linux自身提供了一些API,供程序员调用来完成一些更加复杂的编程任务(比如文件操作,多线程编程,socket编程等)

但是由于Java跨平台的特性,这些功能已经被Java自身封装好了(流对象,Thread对象,Socket对象)

3)JavaWeb项目

我们自己写web程序,要想让其他用户能够访问,就需要发布到服务器上。这也是我们接下来学习的重点。

2.Linux环境搭建

2.1环境搭建方式

我们使用云服务器,可以在 阿里云、腾讯云、华为云 等服务器厂商购买一个云服务器。

如阿里云等都为在校大学生提供了优惠,我们只需注册和认证学生省份,基本是10元每月,还是比较便宜的。在选择的时候我们配置最低的服务器就行。

使用云服务器我们不仅环境搭建简单,可以避免反复的折腾,同时还有一个好处,部署在云服务器上可以被外网访问到。

2.2使用云服务器

我们以腾讯云为例(如果购买过程中,有什么操作不了的,我们可以联系腾讯云客服小姐姐)

  •  并选择镜像(CentOS 7.6),并购买

  •  购买后进入控制台,点击进去就能看到服务器的IP地址

  •  设置root密码:我们勾选服务后,我们要重置密码,root密码建议设置的复杂一些,否则会被黑客入侵

 2.3使用终端软件链接到Linux

2.3.1什么是终端软件

终端软件是一类工具,可以和远程的主机简历网络连接,从而对主机进行一些操作。

常见的终端软件有:

  • Xshell
  • Putty
  • MobaXterm
  • ....

我们使用的是XShell

2.3.2下载安装XShell

安装地址:XSHELL - NetSarang Website

  • 点击下载

  •  下拉,获取免费授权页面

  •  点击下载即可

 2.3.3使用XShell登录主机

在XShell终端下输入

ssh 服务器外网ip地址

关于复制粘贴问题

复制:ctrl + insert

粘贴:shift + insert

ctrl + c / v 是在win环境下的操作,上面的操作在win环境也是成立的

3.Linux常用命令

ls

语法:ls[选项][目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

常用选项

  • -a 列出目录下的所有文件,包含以.开头的隐藏文件
  • -d 只列出目录(不递归列出目录内的文件)。如ls -d 指定目录
  • -k 以k字节的形式表示文件的大小。 ls - alk 指定文件
  • -l 列出文件的详细信息
  • -r 对目录反向排序
  • -t 以时间排序
  • -R 列出所有子目录下的文件。(递归)

pwd

语法:pwd

功能:显示用户当前所在的目录,用户防止用户迷路,忘记自己所在的位置

cd

Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个节点都是目录或文件

语法:cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下。

举例:

cd .. :返回上级目录

cd ~ :返回根目录

cd -  :返回最近访问目录

相对路径VS绝对路径

形如:/usr/share/tomcat/logs/以根目录开头的的,称为绝对路径

形如:./logs以.或者..开头的,称为相对路径

使用tab补全

我们敲的所有的Linux命令,都可以使用tab键来尝试补全,加快效率

使用ctrl + c重新输入

如果命令或目录敲错了,可以ctrl + c取消当前的命令

touch

语法:touch [选项]... 文件 ...

功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

举例:

touch text.txt

cat

语法:cat [选项][文件]

功能:查看目标文件的内容

常用选项:

-n 对输出的所有行编号

cat test.txt

mkdir

语法:mkdir [选项] dirname...

功能:在当前目录下创建一个名为"dirname"的目录

常用选项:

  • -p, --parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好哪些尚不存在的目录,即一次可以建立多级目录

举例:

mkdir -p test/test1 :递归建立多个目录

rm

语法:rm [-f-i-r-v] [dirName/dir]

功能:​​​删除目录或文件

常用选项:

  • -f 即使文件属性为只读(即写保护),亦可直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下的所有文件

举例:

rm -rf test    (注意此代码谨慎使用)

注意事项:

千万不要运行 rm -rf /, 尤其是在公司的生产服务器上,这将不仅仅会导致大量的数据丢失,也会导致系统无法使用

cp

语法:cp [选项] 源文件或者目录 目标文件或目录

功能:复制文件或者目录

说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则他会把前面指定的的所有文件或目录复制到此目录中。如果同时指定多个文件或目录,而最后的目的地并非一个已经存在的目录,则会出现错误信息

常用选项:

  • -f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r 递归处理,将指定目录下的文件和子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

举例:

cp test1.txt texs2.txt      复制test.txt当前目录下面,并更改名字成test2.txt

mv

语法:mv [选项]源文件或目录 目标文件或目录

功能:

  • 视mv命令中第二个阐述类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其转移到一个新的目录中
  • 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名
  • 当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移动到目标目录中。

选项:

  • -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件已经存在时,就会询问是否覆盖

举例

mv test1.txt text2.txt

man

Linux的命令有很多的参数,我们不可能全部记得,我们客户以通过查看联机手册获取帮助

语法:man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能看到man手册中的若干各章节及其含义

举例:

man ls

vim

vim时一个知名的文本编辑器,使用vim可以对文本进行编辑

vim 就相当于Windows的记事本,之不够功能比记事本强大一些

1)创建/打开文件

vim [文件名]

2)进入插入模式

vim打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键(例如按下 j 并不是输入字母'j',而是表示光标往下移动一样。需要进入插入模式才能进行文本编辑

使用 i 键可以进入到插入模式。(左下角会提示 --INSERT-- )然后就可以像记事本一样正常编辑了

3)保存

在插入模式下不能保存文件,需要先回到普通模式。按下Esc就可以回到普通模式

在普通模式下输入 “:w",再按下回车,就可以保存文件了

4)退出

在插入模式下,不能退出,需要先回到普通模式

在普通模式下输入 “:q:,再按下回车,就可以退出了

也可以直接使用“:wq"同时执行保存和退出

关于Vim的用法,还有很多,感兴趣的可以参考vimtutor(直接再终端输入vimtutor即可进入官方教程)和<<Vim实用技巧>>

grep

语法:grep [参数]... [文件]...

功能:用于查找文件中是否包含指定字符串,并显示对应的行

选项:

  • -n<行数> 显示的行数
  • -w 全字匹配,要求整个单词都全部相同才能匹配出来,而不仅仅是一个单词的一部分
  • -r 递归查找,可以搜索多级目录下的所有文件
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

举例:

grep "hello" hello.java

ps

语法:ps [参数]

功能:用于查看当前系统上运行的程序

选项

  • a显示一个终端的所有进程
  • u以用户为主的格式来显示进程状况
  • x显示所有进程,不以终端机来区分

举例:

ps aux    # 显示系统上的所有进程

ps aux | grep "进程名"

ps aux | grep "进程id"

netstat

语法:netstat [参数]...

功能:查看系统上的网络状态

选项:

  • -a 显示所有正在或者不在监听的套接字
  • -n 显示数字形式而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称

3.搭建Java部署环境

3.1yum

3.1.1认识yum

yum(Yellow dog Updater,Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,CentOS等发行版上

包管理工具就好比“应用商店”,我们可以在应用商店上下载一些app

yum起到的功能和Maven的依赖管理功能类似,使用Maven能帮我们方便的安装一些第三方jar包,而yum方便我们安装第三方程序

查看软件包列表

yum list | grep [软件包关键字]   #注意最好加上grep,否则罗列的内容会非常多,导致非常卡的情况

安装软件包(需要管理员权限)

yum install [软件包名字]

卸载软件包(需要管理员权限)

yum remove [软件包名字]

注意事项

  • yum 的所有命令必须保证网络是联通的情况下,才能使用(云服务器一般网络都是良好的)
  • yum install / yum remove必须有管理员权限(root用户)
  • 可以使用 ping www.baidu.com 来检测网络的畅通情况

3.2JDK

yum install java-1.8.0-openjdk.x86_64

使用 java -version 验证是否安装成功,成功将会显示信息,不成功会提示找不到命令

3.3Tomcat

由于yum源上默认的Tomcat 7版本,比较旧了,所以我们需要使用手动安装Tomcat 8

1.下载Tomcat压缩包

下载路径可以参考官网Apache Tomcat® - Apache Tomcat 8 Software Downloads

【注意】:我们要下载Tomcat 8版本

现在完安装包后,Linux执行命令 yum install lrzsz.x86_64 ,下载可以从Win上传文件到Linux的软件,并确认安装。然后拖动安装到Linux即可

 2.解压缩Tomcat

unzip apache-tomcat-8.5.47.zip

如果找不到 unzip 命令,则先 yum install unzip

3.修改可执行权限

cd apache-tomcat-8.5.47/bin

chmod  +x  *.sh

4.启动Tomcat

sh bin/startup.sh

验证是否启动成功的方法

# 方法1 查看 tomcat 进程是否存在

ps aux | grep tomcat

# 方法2 查看短裤哦 8080是否被绑定

netstat -anp | grep 8080

# 方法3 使用 curl 命令访问默认 demo

curl 127.0.0.1:8080

如果进程存在或端口状态正确或者能够访问到默认主页,说明启动成功

5.Tomcat的目录结构

Linux的Tomcat目录结构和Windows完全一致(就是同一个zip包解压缩出来的)

6.外网访问tomcat默认demo

在浏览器地址栏中

http://[服务器外网ip]:8080/

即可看到Tomcat的主页

在外网访问这个主页之前我们需要先开启服务器的“安全组”功能

登录自己的云服务账户,在主页中找到 控制台->自己的服务器->安全组

需要配置安全组,允许外部主机访问服务器的8080端口

(1)选择加入安全组(我这是阿里云的服务器)

 (2)选择新建安全组

(3)进行相应的输入

(4)每个云服务器的厂家配置的方式都太一样,如果真的不会,我们可以给客服打电话

 3.4MySQL

MySQL同样可以使用yum安装,但是我们要修改一些配置,稍微复杂一些

【注意】以下操作都以root用户进行操作

我们安装的MariaDB是MySQL的一个分支,完全兼容MySQL的,由于MySQL被甲骨文公司收购,MySQL的创世人又创建了MariaDB

安装

安装mariadb服务

# yum install -y mariabd-server

安装marabd命令行客户端

# yum install -y mariabd

安装mariadb C library

# yum install -y mariadb-libs

安装mariadb开发包

# yum install -y mariadb-devel

启动

启动服务

# systemctl start mariadb

设置服务开启自启动

# systemctl enable mariadb

查看服务状态

# systemctl status mariadb

 测试链接

使用命令行客户端尝试连接

# mysql -uroot

 查看版本号

MariaDB[(none)] > select version();

 由于我们并没有进行相应的配置,在创建相应的数据库时我们要设置字符集为utf8

create database name charset utf8;

在数据库运行过程中出现问题,我们可以查看MySQL的错误日志

mysql> show variables like 'log_error';

使用vim或less查看该文件内容即可

less /var/log/mariadb/mariadb.log

4.部署Web项目到Linux

4.0什么是部署

工作中涉及到的“环境”

  • 开发环境:程序员自己写代码的机器
  • 测试环境:测试人员测试程序使用的机器。一般是退役下来的部署机器
  • 生产环境(线上环境):最终项目发布时所使用的机器,对稳定性要求很高

把程序拷贝到到安装环境上,这个过程称为“部署”,也叫做“上线”

这个过程需要拷贝对应 .class 文件和依赖的资源文件(各种配置文件,html等)

一旦程序部署成功,这个程序就会被所有的用户看到

部署过程至关重要,属于程序开发中最重要的一环,一旦出现问题了,极可能导致严重的事故

为了防止部署错误,一般公司内部都会有一些自动部署工具,如Jenkins等。当前我们先使用手工部署的方式

【注意】我们下面要部署的程序是一个博客系统,源代码可查看blog_system · 风夏/JavaEE初级 - 码云 - 开源中国 (gitee.com)

4.1数据库建表

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构

# 让mysql执行建表脚本

mysql -uroot  <  db.sql

4.2构造项目并打包

使用IDEA的maven针对项目进行打包

4.3拷贝到Tomcat中

将war包拷贝到Tomcat的 webapps目录中

稍等片刻,tomcat会自动解压缩war包,并完成部署

4.4验证

在浏览器上访问项目的连接。看是否部署成功,以及项目是否有问题

【注意】如果我们使用JDBC,开发环境下的数据库密码和Linux环境下的密码不一样,我们要做出修改

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Linux和Nginx发布部署项目的一般步骤: 1. 在Linux服务器上安装Nginx和其他必要的软件。可以使用Linux发行版的包管理器来安装它们。例如,在Ubuntu系统上,可以使用以下命令安装Nginx: ``` sudo apt-get update sudo apt-get install nginx ``` 2. 将你的Web应用程序部署服务器上。可以使用Git或其他工具将应用程序部署服务器上。确保应用程序服务器上的运行环境已经配置好,并且可以正常运行。 3. 配置Nginx,以便它可以正确地提供你的应用程序。默认情况下,Nginx的配置文件位于`/etc/nginx/nginx.conf`。你可以使用任何文本编辑器打开该文件进行编辑,并添加以下内容(将`yourdomain.com`替换为你的域名): ``` server { listen 80; server_name yourdomain.com; root /path/to/your/web/app; index index.html; location / { try_files $uri $uri/ /index.html; } } ``` 这个配置文件将Nginx配置为监听80端口并使用你的域名。`root`选项指定你的Web应用程序的路径。`index`选项指定在请求的URL中不包含文件名时,Nginx应该使用哪个文件作为默认文件。`location`块指定如何处理请求。在这个例子中,Nginx将尝试查找请求的文件,如果找不到,就返回`index.html`作为默认文件。 4. 保存并退出Nginx配置文件。然后使用以下命令重新加载Nginx配置文件: ``` sudo service nginx reload ``` 5. 现在,你应该可以通过访问你的域名来访问你的Web应用程序了。在浏览器中输入你的域名,如果一切正常,你的应用程序应该会显示出来。 这些是一般的步骤,具体的步骤可能因应用程序的不同而有所不同。但是,这个过程应该可以给你提供一个基本的了解,以便你可以开始使用Linux和Nginx来发布和部署你的Web应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值