此系列文章是探索大数据道路的记录,有些记录是为了备忘,有些记录是为了学习心得内容,有些是为了给大家提供一个好的学习资料。持续更新中…大家也可以到我的私人blog查看该系列文章。blog.cuteximi.com ,也可以关注【码省理工】公众号与我交流技术。
写在前面
时刻提醒自己!
今日学习目标
- 网络进程
- 系统服务
- 定时任务
- Linux安全
- 常用命令操作
- Tomcat
- JDK环境配置
- 克隆虚拟机
- mysql安装以及简单配置
- 免密登录配置
日间阶段总结
MORNING
6:00 - 8:00
8:00 - 10:00
1.chkconfig 可以列出系统的服务
2.service 的四种操作 start ,stop ,restart ,status, 比如可以使用 __service iptables status __查看防火墙的状态。
__service __的开启或者关闭都是临时关闭或者开启,要想永久生效就要修改系统服务层的东西。
使用 chkconfig 服务名 off / on 对某个服务进行永久关闭或开启、
3.添加自己的服务
__/etc/init.d __文件夹下面有很多服务脚本。
可以编写一个自己的服务脚本:
复制脚步到 __/etc/init.d __目录下面 cp
添加服务到系统:chkconfig --add 脚本名字
chkconfig --del 服务名
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig --add servicename
使用chkconfig工具在服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
4.chkconfig --level 35 mysqld on
修改服务的默认启动等级。
init.d 是一个软连接指向 rc.init.d, 软连接会指向真实的文件,软连接的权限都是777
NOON
10:00 - 11:00
1.定时调度
使用命令 cront -e 打开一个编辑器。编写格式如下:
分钟 小时 天 月 dayofmonth command 的格式编写定时任务即可。
使用 cront -l 查看所有的定时任务。
2.Linux的一个安全策略 selinux ,推荐关闭。
使用 sestatus -v 查看状态,使用 setenforce 0 临时关闭
编辑 /etc/selinux/config 修改 selinux=disabled ,重启计算机。
11:10 - 12:00
进程:
ps 命令 一般加上参数 -ef 代表所有、全格式
动态的查看:
使用 top 命令
使用 & 符号,加在命令后面,可以使得命令进入后台运行。
比如 ping www.baidu.com & 执行之后,就会进入后台一直执行,直到被挂起。
jobs -l 可以查看当前连接(终端)下的后台进程。
依次显示后台程序的jobnum ,pid ,状态,以及命令
如果想查看系统的后台进程使用 ps -ef | grep 某进程
如果不想让你的后台进程被挂起 ,可以使用 nohup(不挂断) 命令。
总结:一般 & 和 nohup 结合使用。例子:nohup ping www.baidu.com &
有一部分内容参考了这里:https://blog.csdn.net/u013846293/article/details/74003051
杀掉进程,使用 kill 命令
可以根据 jobs 显示的jobnum, kill jobnum
或者根据 ps 显示的pid , kill -9 pid
如果是一个前台命令的话,使用 ctrl+c 就停止了。
但是一个后台命令,也可以变成前台命令吗?可以的。
使用 fg 命令可以使得一个后台的命令变至前台执行。fg jobnum
使用 bg 左右正好相反。bg jobnum
例子:nohup ping www.baidu.com > log 2>&1 &
就会在后台运行一个程序。
使用tail -f log 可以追踪查看该文件的内容。tail 默认展示10行,-n 参数可以指定行数
yum安装程序。配置yum源是在 /etc/yumrespo.d目录下。
rpm 也能安装 .rpm 安装包。
rpm -aq | grep 程序 可以查看是否安装
rpm -ivh xxx.rpm 进行安装
rpm -e 程序,卸载
tar
解压:tar -zxvf XXX.tar.gz
压缩:tar -zcf 文件夹 xx.tar
zip
解压 unzip 包
压缩 zip -r 文件夹 XX.zip
谨记,下载程序包去官网下载:
jdk7链接
12:00 - 14:00
整理上午所学的内容,休息一下。预习一下下午的内容,
AFTERNOON
14:00 - 16:00
centos 安装 使用 yum 安装mysql
1.yum install mysql-server -y
2.yum install mysql-devel -y
等待安装完毕。
3.启动
service mysqld start 启动 mysql 服务器。
除出安装是木有 root 用户的,因为可以直接使用 mysql 命令进入mysql服务器、
4.连接
mysql
然后可以在这个交互界面里面,进行一些操作,比如:
show databases;
show tables;
select * from …
等等
exit; 是退出这个交互终端。
使用 mysqladmin 来新增一个 root 用户。
5.新增 root 用户
mysqladmin -u root password 123456
此时再想单纯的使用 mysql 命令是无法登录的,会报错,如下:
这是就必须使用用户和免密登录。
mysql -uroot -p 意思是使用 root 登录访问 mysql 服务器。成功如下图
6.使用 物理机连接 mysql 服务器
这里有一个小限制,mysql 默认是不接受远程访问的。所以需要改一下配置。
有两种方案:
修改 user 表。
select user,host,password from user;
把上图所示的host改一下,改成 % 代表什么都可以就好了!!开放了远程连接。也就是远程也可以使用root用户。
16:00 - 18:00
18:00 - 20:00
EVENING
20:00 - 22:00
22:00 - 24:00
学习进度
一天总结
进程
1.查看进程
ps 命令可以查看进程,用法一般是:
ps -ef 或者 ps -ef | grep 进程名
ps 命令 一般加上参数 -ef 代表所有、全格式
动态的查看:
使用 top 命令
2.后台进程
使用 & 符号,加在命令后面,可以使得命令进入后台运行。
比如 ping www.baidu.com & 执行之后,就会进入后台一直执行,直到被挂起。
jobs -l 可以查看当前连接(终端)下的后台进程。
依次显示后台程序的jobnum ,pid ,状态,以及命令
nohup 保证后台进程不会被挂起。
结:一般 & 和 nohup 结合使用。例子:nohup ping www.baidu.com &
有一部分内容参考了这里:https://blog.csdn.net/u013846293/article/details/74003051
3.杀掉进程
杀掉进程,使用 kill 命令
可以根据 jobs 显示的jobnum, kill jobnum
或者根据 ps 显示的pid , kill -9 pid
4.前后台进程转换
如果是一个前台命令的话,使用 ctrl+c 就停止了。
但是一个后台命令,也可以变成前台命令吗?可以的。
使用 fg 命令可以使得一个后台的命令变至前台执行。fg jobnum
使用 bg 左右正好相反。bg jobnum
系统服务
简单的,以networking为例:service network start
service 会到 /etc/init.d/目录下寻找 network 脚本。start 是 network 脚本里面的一个参数。然后告诉系统,运行这个脚本
1.查看系统服务
使用 chkconfig 命令,直接列出系统服务信息;
2.设置开机启动或关闭
使用chkconfig 服务名 on 或者 off
3.添加服务
编写脚本,并赋权755即可。格式如下:
#chkconfig 2345 85 90
#description:auto_run
......
将脚本 cp 到 /etc/init.d 中, 此时就可以使用 service 脚本 来运行了,但是如果你想弄成开机启动的服务,就得加到开启启动列表里面了,使用 chkconfig --add COMMAND 就把这个脚本加到了启动列表里里面。
4.删除服务
chkconfig --del 服务名
定时任务
crond 命令,周期性的执行某些定时任务,是一个守护进程。
使用: crond -e 命令会打开定时任务的配置文件。
Linux 安全
selinux 是一个 Linux 的一个安全策略 DAC–MAC。
1.sestatus -v 查看 selinux 的状态
2.编辑 /etc/selinux/config 将 selinux 的值改为 disabled, 需要重启机器。
3.如果只想临时关闭呢,使用 setenforce 0, 不会修改文件,下次重启恢复默认的。
一些其他的常用命令
yum 软件包管理器
更改成在线的yum源,换成阿里的,操作步骤如下:
1.备份原来的 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
2.下载阿里的源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
3.运行 yum makecache(目的是将服务器上的软件包信息下载到本地,以加快软件包的搜索速度)
查看当前的 yum list
wget
支持 HTTP,HTTPS,FTP 三种协议,可以下载网络资源。
wget -O 指定文件保存到哪
安装wget , yum install wget -y
rpm 软件包管理器
安装:rpm -ivh 包
查看:rpm -a 包
卸载 : rpm -e 包的全名
tar
解压 tar -zxvf xxx.tar.gz
压缩 tar -zcvf xxx.tart.gz 要压缩的文件夹
zip
zip -r 包名 目标目录
unzip filename
JDK环境配置
jdk7 下载地址 : https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
使用 rpm -ivh xxx.rpm 进行安装
编辑编辑变量,添加 JAVA_HOME即可
克隆虚拟机
注意克隆之后,要更改 hostname ,还要删除网卡的规则,修改网卡的ip
vim /etc/sysconfig/network
rm -rf /etc/udev/rules.d/70-persistent-net.rules
mysql安装以及简单配置
使用 yum 安装
1.yum install mysql-server -y
2.yum install mysql-devel -y
3.启动 service mysqld start
此时 root 用户是没有免密的,可以直接使用 mysql命令 就可以连接上服务器。
4.使用 mysqladmin -u root password 123456 给 root 用户指定密码123456
5.登录:使用 mysql -uroot -p ,根据提示输入密码即可。
完成上述步骤之后,只能在本地连接 mysql 服务器、要想可以远程连接,必须修改 user 表的 host 字段
1.直接修改 hosts为%
2.使用grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
免密登录配置
配置简单。主要涉及到的原理需要理解。
原理
SSH以__非对称加密__实现身份验证,所以它是比较安全的。
身份验证有多种途径,例如①其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;②另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程私钥本身中不会传输到网络中。
如何新建密钥对呢?
1.查是否已存在密钥对,打开终端(Terminal):
输入:ls -al ~/.ssh
2、如果没有,则需要我们手动创建
输入:ssh-keygen -t rsa -b 4096 -C "your_email"
ssh-keygen 是生成秘钥的工具之一。
-t 参数指定加密算法,-b 参数指定长度
用法如下:
ssh-keygen -t rsa -b 4096
3.将公钥发送到服务器
使用 ssh-copy-id 工具。
用法:
ssh-copy-id -i 公钥位置 user@host
之后会提示输入密码进行认证。
在这之后,公钥就会被添加到 服务器上的 ~/.ssh/authorized_keys 文件了里面。
一旦在服务器上配置了公钥,服务器会允许任何具有私钥的客户端进行连接用户登录,在登录的过程中,客户端会通过数字签名交换来证明拥有私钥。
免密登录图解
创建密钥并添加到服务器上。
登录认证流程
值得注意的是:服务端的 .ssh目录权限必须是700(rwx------),authorized_keys文件的权限是600(rw-------)
部分参考https://www.ssh.com/ssh/keygen/#sec-What-Is-ssh-keygen
Linux安装Tomcat
Tomcat 是一个免费开源的 web 服务器。
- Tomcat 7 下载地址:https://tomcat.apache.org/download-70.cgi
- 也可以镜像下载:
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/src/apache-tomcat-7.0.91-src.tar.gz后面出问题了,验证这个源选错了,应该是下面这个:选bin下面的包,http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz
- Tomcat 7 的官方文档,https://tomcat.apache.org/tomcat-7.0-doc/introduction.html
Tomcat 是免安装的,直接把环境变量配置好就 OK 的。 - 启动使用 ./startup.sh 关闭使用 ./shutdown.sh
- 配置环境变量
遇到的问题以及解决方案
问题1
【问题描述】
修改hostname 并立即生效,但是不想重启服务器
【问题思路】
【解决方案】
修改了/etc/sysconfig/network下的HOSTNAME后,然后使用 hostname name 生效一下。
问题2
【问题描述】
连接远程 mysql 服务器,需要注意的地方
【问题思路】
【解决方案】
- 注意防火墙要关闭
- 注意 user 表的host 的字段是否设置好了。
两种设置方式:
?grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
?直接修改user表的hosts字段,改为 %
3.注意能够ping 同服务器。
问题3
【问题描述】
指定明文密码报错,ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
【问题思路】
41位十六进制数:41-digit hexadecimal number
【解决方案】
使用 select password(‘你要设置的密码’)
这就就可以直接指定密码了。
问题4
【问题描述】
下载tomcat之后,目录里面缺少一些东西,比如没有logs ,另外bin 目录下的脚本都没有执行权限。
【问题思路】
修改过脚本的执行权限之后,在bin目录下执行__ ./startup.sh__ ,报错:
Using CATALINA_BASE: /opt/apache-tomcat-7.0.91
Using CATALINA_HOME: /opt/apache-tomcat-7.0.91
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.91/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/apache-tomcat-7.0.91/bin/bootstrap.jar:/opt/apache-tomcat-7.0.91/bin/tomcat-juli.jar
touch: cannot touch /opt/apache-tomcat-7.0.91/logs/catalina.out': No such file or directory
/opt/apache-tomcat-7.0.91/bin/catalina.sh: line 439: /opt/apache-tomcat-7.0.91/logs/catalina.out: No such file or directory
一开始想的是,新增一个 logs 目录不记得了,上网一查才指定,自己下的包是源码包,应该下在一个编译好的包。
下载源:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz
【解决方案】
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz
这个包,解压之后,有logs目录,并且 bin 下面的几个脚本默认有执行权限的。