Linux学习

  1. 为什么要学习Linux

1.1.  原因

1、应用程序开发完成之后,一般都会部署到专门的服务器上.由于Linux长时间运行比较稳定,性能高。可以把linux作为服务器,并且作为服务器linux是王者.******

2、会把Linux的个人版作为开发环境。很多开源项目(redis,ngnix等)都只提供C语言源码,需要我们在C语言编译环境进行编译、打包为软件包,需要在Linux上面就集成了编译环境。

1.2.  服务器

购买服务器:

      应用访问人数比较少:单台linux服务器:tomcat,mysql,jdk

      应用访问人数比较多:集群,负载均衡(后面阿里云课程)

租用服务器:

      一般现在企业都是买云计算服务,阿里云,新浪云,华为云

1.3.  目标

了解linux系统,了解linux系统的安装,掌握linux的常用命令,掌握java项目部署。

1.4.  重点

掌握linux的常用命令,掌握java项目部署。

  1. Linux

2.1.  Linux是什么

Linux是一种类似于Windows的操作系统,与windows最大的区别:

1、是一个完全免费、开源的操作系统。

2、一般在服务器电脑上安装该操作系统。

比如百度新浪,网易的服务器就安装Linux操作系统。

而windows作为办公环境。

2.2.  常用Linux版本

目前流行的几种Linux

1.红帽(RedHat)公司的:面向个人用户的Fedora和面向企业的RedHat。

2.Ubuntu:目前用户量最大,社区最活跃,用户体验最好的,个人版本的Linux。

3.OpenSUSE:大家都说好。

4.CentOs:很多企业都在用,很稳定,完全免费,一般会把它作为服务器

5.Debian:Ubuntu就是建立在Debian系统之上

2.3.  企业现状

巨头支持:IBM、甲骨文、CA、HP、Dell……

 2010 年1 月开始,《网络世界》发起“Linux 企业应用现状”调查

 64.5%已将或计划将Linux 用于企业中的Web 服务器,比例不断在上升

  39.7% 在邮件服务器上采用了Linux 服务器

  11.6%的受访者表示拟将Linux 用于其他用途

  89.3%看好Linux 的未来发展及在企业中的应用

  2.5%表示并不看好

  1. 虚拟机软件

3.1.  说明

Linux需要在一台电脑上进行安装,获得一台电脑的方式有很多,比如网上或者实体店购买。

当然现在有了更加便宜的解决方案,那就是虚拟机软件,使用虚拟机软件可以模拟出一台或者多态计算机,从而可以在上面安装各种操作系统。

虚拟机软件:虚拟计算机的软件

3.2.  常见的虚拟机软件

vmware workstation 虚拟机软件中的NO.1,特点,模拟完善,有商业授权,收费软件,内存大户

virtualbox 原来的sun公司,现属于Oracle,免费开源,更新及时,体积小,内存优化

virtual PC 微软的免费产品,仅支持windows系统(微软官方说只支持windows,其实别的系统也可以安装)现已停止更新

Hyper-V 微软最新的虚拟机软件

3.3.  安装virtualbox失败的原因

操作系统:可能安装了精简版的操作系统,去掉了某些组件。

电脑主机:主板,CPU不支持虚拟化技术

建议安装顺序:先安装高版本的vbox,不行在低版本,在不行vm

3.4.  安装虚拟机软件

3.5.  添加虚拟网卡

安装完成,会多一个虚拟网卡

3.6.  VirtualBox简单使用

3.6.1.   全局配置虚拟机存储位置

3.7.  虚拟机操作

3.7.1.   创建

详见ubuntu安装之虚拟一台裸机

3.7.2.   导入、导出

3.7.3.   备份和还原虚拟机

在启动的虚拟机窗口操作:

在visualbox 管理界面操作

  1. Ubuntu安装

4.1.  虚拟一台裸机

4.1.1.   点击新建虚拟电脑

4.1.2.   选择系统

4.1.3.   选择内存:一般为电脑物理内存的1/3

4.1.4.   新建虚拟磁盘

4.1.5.   选择虚拟磁盘扩展名:默认

4.1.6.   选择动态扩展磁盘还是固定

一般选择固定磁盘,性能高些

选择固定磁盘大小8G,修改存放位置,一般修改为非C盘,

最好直接在位置什么添加盘符路径就可以了,如d:ubuntu9

4.1.7.   创建虚拟磁盘过程中

4.1.8.   直到创建完成

4.2.  对虚拟裸机做一些配置

4.2.1.   一个空的虚拟磁盘裸机

4.2.2.   默认从硬盘,光驱启动,调整内存大小

系统:设置启动顺序:硬盘->光驱

硬盘不能启动就从光驱启动,此为安装模式

4.2.3.   修改显存大小

显示:显存30-40M

4.2.4.   光驱(Storage)设置

加载iso安装文件

4.2.5.   网络(安装时候可以关闭网络,防止网络更新)

4.3.  安装Ubuntu操作系统

4.3.1.   点击开始出现,右边Ctrl键(操作快捷键)

4.3.2.   选择安装系统的语言:简体中文

4.3.3.   安装开始

4.3.4.   安装过程

4.3.5.   一般选择最近的更新点,看是否要更新

4.3.6.   手动建立分区

目的:类似功能的文件在一个分区,便于磁盘内部优化

建立分区:

       新建分区表,点击继续

       空闲分区:添加

           主分区:3587MB,Ext4日志文件系统,挂载点:/

           逻辑分区:余500mb,Ext4日志文件系统,挂载点:/home(类似C:Usersadmin)

           逻辑分区:500mb,交换空间

类似于

4.3.7.   主分区,类似C盘

windows下有多个根分区,比如C D E

在linux下也有很多个分区,但是根分区只有一个,其他分区通过挂载的方式放在/下

4.3.8.   创建用户home目录

4.3.9.   创建交换空间,类似于windows系统的虚拟内存

4.3.10.        创建用户名

4.3.11.        最后的安装

4.3.12.        安装完成页面,安装到98%会等待很久

windows系统:administortra,itsource

ubuntu:root,itsource

4.4.  安装后操作备份&全屏

4.4.1.   必须备份,完成之后更改iso文件

4.4.2.   开启网络

4.4.3.   处理全屏

全屏快捷键:右边Ctrl+F(Host)

安装增强功能能全屏、拷贝命令等高级功能

加载安装目录C:Program FilesOracleVirtualBoxVBoxGuestAdditions.iso光盘

进入系统,运行光盘跟目录的autorun.sh,需求输入登录用户密码

Linux里面.sh类似于window系统的.bat

一直等到显示close window

4.4.4.   重启系统

重新加载ubuntu-9.10-dvd-i386.iso,后面安装需要里面的软件

  1. Ubuntu图形界面操作

5.1.  常规操作

文件扩展名:linux deb结尾就是windows里面exe结尾

查看端口:netstat -an | more

(window cmd):应用程序->附件->终端:放置到桌面,面板

gedit(window 记事本) 123.txt 如果当前目录存在此文件就显示,没有的创建

在终端里面只有需要权限的地方,相应的命令前面加上sudo

Linux图形桌面窗口没有标题栏,不能移动,关闭,最小化的解决方法

在终端中输入命令sudo metacity

sudo命令把当前登录的普通用户升级为root超级管理员

5.2.  获取ip地址:

window:ipcofig  ubuntu:ifconfig

5.3.  配置软件源

A.先挂载ubuntu9-dvd-iso

B.sudo gedit /etc/apt/sources.list(|DVD光盘作为软件源)

成都电子科大软件源:http://ubuntu.uestc.edu.cn/

系统->系统管理->软件源:设置安装软件的源头:虚拟机加载的光盘

5.4.  配置输入法(拼音、五笔)

  1. 在Linux进行pss项目部署

6.1.  修改pss项目配置:提高部分性能

6.1.1.   log4j.properties

#log4j.logger.cn.itsource.pss=DEBUG

6.1.2.   struts.xml

<constant name="struts.devMode" value="false" />

6.1.3.   jdbc.properties

hibernate.show_sql=false

hibernate.hbm2ddl.auto=validate

6.1.4.    pom.xml:降低编译的jdk等级

<configuration>

       <source>1.6</source>

       <target>1.6</target>

</configuration>

先删除targer目录,在重新编译

6.1.5.   打包pss.war

cd G:eclipseworkspacepss

mvn package -Dmaven.test.skip=true

6.2.  怎样拷贝文件

1.通过终端服务客户端,本地资源->添加我的磁盘至远程计算机作为本地磁盘

2.网络下载

修改apache-tomcat-7.0.57confweb.xml  listings:true可以把目录已列表的形式显示

把需要拷贝的文件放入webappROOT目录

confserver.xml里面的HOST不要配置Context

3.把文件打包ISO,加载光盘

4.移动硬盘/U盘(需要驱动)

5.linux系统安装好ssh服务,在win系统使用ftp软件(winscp),必须有dhcp动态ip获取

6.3.  安装mysql

重新加载ubuntu-9.10-dvd-i386.iso,后面安装需要里面的软件

6.3.1.   安装命令

sudo apt-get install mysql-server

sudo apt-get install mysql-client 可以不安装客户端

                    

登录mysql                 

mysql -uroot -padmin 

6.3.2.   查看MYSQL字符集:

mysql>show variables like 'character%';

退出mysql:exit,加入终端,修改编码格式:必须重启tomcat

sudo gedit /etc/mysql/my.cnf

查看MYSQL字符集:show variables like 'character%';

6.3.3.   修改字符集

找到[client] 添加:

       #默认字符集为utf8

       default-character-set=utf8

找到[mysqld] 添加:(注意空格对你的影响)

       #默认字符集为utf8

       default-character-set=utf8

       #设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行 

       init_connect='SET NAMES utf8'                       

6.3.4.   修改了mysql的编码格式,必须重启mysql

重启mysql

sudo /etc/init.d/mysql restart

显示以下2行成功:

 * Stopping MySQL database server mysqld                                 [ OK ]

 * Starting MySQL database server mysqld                                 [ OK ]

-------------------mysql-------------------end...

6.3.5.   了解:其他mysql命令

dvd中mysql位置/pool/main/m/mysql-dfsg-5.1

停止mysql:sudo /etc/init.d/mysql stop

启动mysql:sudo /etc/init.d/mysql start

不输人就是参数会有相应提示:sudo /etc/init.d/mysql

itsource@itsource-desktop:~$ sudo /etc/init.d/mysql

Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status

itsource@itsource-desktop:~$ sudo update-rc.d

usage: update-rc.d [-n] [-f] <basename> remove

       update-rc.d [-n] <basename> defaults [NN | SS KK]

       update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .

       update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]

设置自启动:sudo update-rc.d mysql defaults

不自动启动:sudo update-rc.d -f mysql remove

6.4.  导入pss.sql数据到mysql

登录mysql数据库:mysql -uroot -padmin

以下命名都是在mysql>

创建一个pss的数据库

drop database if exists pss;

create database pss default charset utf8;

导入pss数据

mysql -uroot -padmin  pss</home/itsource/下载/pss.sql

进入pss数据库

use pss;

select * from employee limit 0,5;

6.5.  重新安装JDK

6.5.1.   卸载原来JDK1.6

系统->系统管理->新力得软件包管理器

快速搜索:jre  右键

openjdk-6-jre 标记以便彻底删除

openjdk-6-jre-lib 标记以便彻底删除

6.5.2.   安装JDK1.8

选中jdk-6u17-linux-i586.bin,右键,权限,执行(勾上)

cd 到下载目录

执行安装:   ./jdk-6u17-linux-i586.bin

安装查看协议:空格一屏,q直接退出

yes

回车

6.5.3.   配置java环境

sudo gedit /etc/profile.d/java.sh

配置自己安装的jdk的环境变量特别注意:

不能额外添加多余的空格,路径有中文没有问题

export JAVA_HOME=JDK安装路径

export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

6.5.4.   确认配置正常后,必须重启虚拟机

6.6.  Eclipse Hello World

确认jdk安装成功

6.7.  安装Tomcat 并部署软件

6.7.1.   安装运行tomcat

启动  点击运行,不是终端运行

   startup.sh

停止

   shutdown.sh

  查看日志

测试

  http://localhost:8080

6.7.2.   部署pss

下载pss.war,解压缩到tomcat/webapps/ROOT里面

去掉多余的javassist-3.11.0.GA.jar

6.8.  启动tomcat 访问pss系统

启动完成后,查看日志,如果有报错就解决

  1. Linux命令

7.1.  root用户,设置root密码

Linux 默认有一个超级管理员root,和windows的admnistrator一样

可以以root登录,然后在创建用户(itsource/admin),同windows一样

有时候普通用户操作权限是不够的,需要使用root用户来操作,但是Ubuntu默认密码是随机的,不能使用,但是我们进行设置。

ubuntu root默认密码(初始密码)

ubuntu安装好后,root初始密码(默认密码)不知道,需要设置。

1、先用安装时候的用户登录进入系统

2、输入:sudo passwd  按回车

3、输入新密码,重复输入密码,最后提示passwd:password updated sucessfully

此时已完成root密码的设置

4、输入:su root

切换用户到root试试.......

7.2.  常用命令

1.查看当前所在目录

pwd

2.切换目录

cd 目录名

3.查看目录文件信息

ls //列出文件信息

ls -l //以详细信息方式列出文件信息

ls -al //以详细信息方式列出所有文件信息,包含隐藏文件

ls 目录名  //查看该目录的文件信息

4.查看当前用户

whoami    //查看当前操作用户 可以看到其他操作用户,可能会有多个

who am i  //查看当前登录用户的信息 只有一个就是我自己(我登录)

5.切换用户

Su

su - //切换到root用户

su - root //切换到root用户和su - 一样

su - user //切换到user用户

su user //切换到user用户,不切换用户权限

exit  //注销当前用户,返回前一用户

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了

7.3.  文件

7.3.1.   文件系统结构

 linux系统的目录结构是一个以/(根目录)为根节点的树形结构

 

Linux有个基本思想:一切都是文件。就是系统中的所有都可以归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。

/bin 存放二进制可执行文件(命令),所有用户都可以使用

/sbin 存放二进制可执行文件,只有root用户可以使用

/boot 系统启动需要的核心文件

/dev 设备文件

/home 用户的主目录

  /home/itsource

  /home/zhangsan

/lib 系统共享动态链接库

/mnt 挂载目录,通常挂载到该目录下

/etc 存放系统配置文件目录

/etc/passswd 用户信息文件

    /etc/group 用户组信息文件

/var 用来存放常态性变动的文件,经常发生变化的文件。比如缓存、登录文件,mysql数据库文件等

/tmp  临时目录,用来存放临时文件

/proc 虚拟目录,是内存的映射,可以访问到内存中的系统信息

/sys 和proc类似,存放和内核相关的信息和数据

/root root用户的主目录

/usr 存放应用程序和文件(类似于windows的system32、program files目录)

/usr/bin、/usr/sbin:这是对/bin、/sbin的一个补充

7.4.  目录(文件夹)操作

7.4.1.   创建目录

mkdir 目录名  //创建一个目录

mkdir -p 目录1/目录2/目录3  //递归创建目录

 

7.4.2.   删除目录

   

rmdir 目录名  //删除目录

rmdir -p d1/d2/d3 //递归删除目录

   rmdir只能删除非空目录

rm -r 目录名  //删除目录和目录的所有内容

rm -rf 路径  //可以删除文件和目录

rm file  //删除一个文件

 

7.4.3.   修改目录

mv dir1 dir2  //dir2不存在,将dir1目录名修改为dir2

mv dir1 dir2  //dir2存在,将dir1目录移动到dir2中

mv d1 d2/d3 //d2存在d3不存在,把d1移动到d2中并且改名为d3

是移动还是改名,就看第二个参数路径是否存在。存在就移动,不存在就改名

 

7.4.4.   复制目录

cp file1 file2  //将文件file1复制一份为file2

cp file1 dir1/file2  //将文件file1复制一份到dir1目录,名称为file2

cp -r dir1 dir2 //将dir1复制一份到dir2目录(包含目录内容一起复制)s

7.4.5.   相对路径和绝对路径

绝对路径:以/(根目录)开头的路径(例如/home、/etc/passwd)

相对路径:以./开头的路径,./可以省略(指相对于当前路径)

./    表示当前目录

../  表示上一级目录

路径的最后一个斜杠可以省略

特殊目录 ~ 表示用户主目录

快速切换目录

cd ~  //切换到用户主目录

cd - //切换到上次目录

 

创建:mkdir -p dir1 dir2/dir3

移动:mv dir1 dir2

删除:rm -rf dir

拷贝:cp -r dir1 dir2

 

7.5.  文件操作

7.5.1.   创建文件

touch 文件路径         //创建一个空白文件

gedit

7.5.2.   查看文件内容

cat  //将文件内容直接显示出来

more  //将文件内容分屏显示(按回车显示下一行,按空格显示下一屏)Ctrl+C退出

less  //将文件内容分页显示(pageup上一页,pagedown或空格下一页,回车显示下一行)

head //显示文件的前面几行内容

head -n 3 1.txt  //显示文件前3行内容

head -n -3 1.txt //显示文件内容,除了最后3行

 

tail  //显示文件后几行内容 查看日志

tail -n 3 1.txt  //显示文件后3行内容

tail -n +3 1.txt //显示文件内容,除了最开始3行

tail -f   //动态显示文件内容

wc         //统计文件内容行、句、字符数

7.5.3.   添加内容到文件

> 和 >>  //输出重定向,> 覆盖写 , >> 追加写

echo hello > 1.txt     //以覆盖写的方式将hello字符添加到文件1.txt

echo world >> 1.txt    //以追加的方式将world字符添加到文件1.txt

cat 2.txt >> 1.txt      //将2.txt文件的内容追加到1.txt

 

7.5.4.   查找文件

find

直接从硬盘查找文件,搜索速度慢,但是能实时搜索

参数

–name //以文件名作为参数进行查找

-mindepth //最小目录层次

-maxdepth //最大目录层次

其他参数通过man或者--help参数学习

示例:find -maxdepth 3  -name passwd

总结:

Linux有很多命令,不用死记硬背。会使用一些常用的就ok,用到时查看命令文档。

或者网上搜索

  1. 阿里云服务器操作流程

先使用ftp软件winscp把pss.war文件上传阿里云服务器上面

在解压缩命令,进行处理,百度 linux unzip 参数

cp命令,上面pss目录复制到tomcat的webapps下面的ROOT目录

cd 切换到tomcat的bin目录

startup.sh

通过http://221.111.14.5:8080

申请域名,把上面的ip绑定域名上面

  1. Linux ssh

Linux最开始是没有图形界面的,后面为了方便操作一些版本的操作系统把常用的操作作为图形操作,这样我们可以使用图形界面操作ubuntu,但并且不是所有的功能都有图形界面的。

一般服务器都是不安装图形界面。所有要学习命令操作方式

9.1.  本地终端

终端:类似于windows下面的cmd,在应用程序->附件->终端打开,可以把它放置到桌面

 

简单操作:

     获取ip地址:window:ipcofig  ubuntu:ifconfig

     查看端口:netstat -an | more

     gedit(window 记事本) 123.txt 如果当前目录存在此文件就显示,没有的创建

注意:

    在终端里面只有需要权限的地方,相应的命令前面加上sudo,加上以后就是以管理员的方式执行。

    在ubuntu下标题栏消失,窗口不能移动

       在终端中输入命令sudo metacity --replace

9.2.  通过网络远程访问Linux

要能远程连接并上传、下载文件,需要能ping通和安装sshd服务

9.3.  sshd服务安装

安装sshd服务需要配置软件源,可以配置合适的网络路径(该版本不能访问)。也可以配置本地光盘(软件源)

1. 首先在服务器上安装ssh的服务器端。

$ sudo apt-get install openssh-server

2. 启动ssh-server。

$  sudo /etc/init.d/ssh restart

3. 确认ssh-server已经正常工作。

$ netstat -tlp

tcp6    0    0 *:ssh                *:*                   LISTEN     -

看到上面这一行输出说明ssh-server已经在运行了。

4.关闭防火墙

sudo ufw disable

默认的ssh服务器的端口是22 sftp默认端口25

在教室里面的学生不会自动分配IP,需要手动设置。DHCP自动分配,但是我们的环境没开。

先ping通,在使用ssh的客户端来连接。

9.4.  远程连接和上传文件到linux

9.4.1.   远程终端软件

Ssh: xshell,putty等(远程连接,类似windows远程桌面)

Sftp:xftp,winscp等(上传文件)

Putty+winscp 企业用的最多

Xshell,xftp同时属于xmanager的组件

9.4.2.   putty远程连接和winscp远程上传和下载

和xshell和xftp大同小异(略)

9.4.3.   xshell远程连接Linux

启动xshell

输入用户名和密码

连接成功

 Xshell乱码:

1.是不是Linux系统没有安装中文语言包呢?我们来检查一下吧,查看语言包。如下图

2.设置Xshell工具,中文显示

如果系统支持中文语言包,那么显示还是乱码应该是Xshell链接工具的问题。

    打开xshell终端服务,找到菜单--- 属性 如下图

9.4.4.   Xftp 远程上传和下载

  1. 面试题

   1、有没有用过linux?ssh默认端口是多少?22

   2、你是怎么访问远程的Linux?

       Ssh的客户端软件putty来进行连接。目的执行命令。

       Sftp的客户端来上传和下载文件

   3、你简单说几个命令?

      cd ls unzip tar -zxvf cp

   4、你都使用Linux来做什么?

        开发环境:C语言的编译环境 make gcc

        作为服务器

原文地址:https://www.cnblogs.com/Src-z/p/11218877.html