- 为什么要学习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项目部署。
- 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%表示并不看好
- 虚拟机软件
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 管理界面操作
- 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,后面安装需要里面的软件
- 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. 配置输入法(拼音、五笔)
- 在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
查看日志
测试
6.7.2. 部署pss
下载pss.war,解压缩到tomcat/webapps/ROOT里面
去掉多余的javassist-3.11.0.GA.jar
6.8. 启动tomcat 访问pss系统
启动完成后,查看日志,如果有报错就解决
- 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,用到时查看命令文档。 或者网上搜索 |
- 阿里云服务器操作流程
先使用ftp软件winscp把pss.war文件上传阿里云服务器上面
在解压缩命令,进行处理,百度 linux unzip 参数
cp命令,上面pss目录复制到tomcat的webapps下面的ROOT目录
cd 切换到tomcat的bin目录
startup.sh
通过http://221.111.14.5:8080
申请域名,把上面的ip绑定域名上面
- 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、有没有用过linux?ssh默认端口是多少?22
2、你是怎么访问远程的Linux?
Ssh的客户端软件putty来进行连接。目的执行命令。
Sftp的客户端来上传和下载文件
3、你简单说几个命令?
cd ls unzip tar -zxvf cp
4、你都使用Linux来做什么?
开发环境:C语言的编译环境 make gcc
作为服务器