Linux快速入门04-扩展知识

这部分是快速学习的最后一部分知识,其中最重要的内容就是源码的打包和软件的安装的学习,由于个人的Linux学习目的就是自己能在阿里云Ubuntu上搭建一个简单的nodejs发布环境。

由于现在均是使用云平台,这部分内容已完全透明,因而只做一个简单的了解,整个linux的启动过程包含如下8个步骤:

1.加载BIOS的硬件信息与进行自我检测,并依据设置取得第一个可启动的设备。

2.读取并执行第一个启动设备内MBR的boot Loader(即grub,spfdisk等程序)

3.依据boot loader的设置加载kernel,内核会开始检测硬件与加载驱动程序

4.加载完硬件驱动,内核会主动调用init进程,而该进程回去run-level信息

5.init执行/etc/rc.d/rc/sysinit文件来准备软件执行的操作环境(如网络,时区)

6.init执行run-level的各个服务的启动(script方式,可以添加自己的服务)

7.init执行/etc/rc.d.rc.local文件

8.init执行终端机模拟城西mingetty来启动Login进程,最后等待用户登录。

这部分有关的命令包括:runlevel查看当前runlevel;内核依赖性的查看; lsmod内核模块的查看;modinfo mii查看指定模块信息;insmod载入内核模块;rmmod删除内核模块;modprobe是一个增强性的命令,参数-c列出所有系统模块,-f加载模块,-r删除模块。

在linux世界中,最吸引人的莫过于开源代码了,比如Linux上最标准的程序语言C,我们使用C语法进行源代码飙血,写完后使用gcc进行编译,就可以制作一个可以执行的二进制文件。比如,用C语言编写一个hello.c,然后使用gcc –c hello.c编译生成hello.o目标程序,最后运行hello.o即可,如果需要外部库还涉及链接操作。不过这种方式在源文件很多时非常不便,通常来说,我们下载的源文件中都包含./configure文件用于生成Makefile文件,其用于管理编译过程,接下来介绍完整的安装过程。

1.取得源文件,将tarball文件解压在/usr/local/src目录

2.进入新建目录下,阅读install与readme文件,安装一些前置软件

3.通过./configure自动检测程序检测OS,并建立Makefile文件

4.使用make命令,其通过MakeFile文件中的参数进行编译操作

5.使用make install命令,也通过MakeFile文件中的参数完成安装

之前介绍的源码安装方式当应用程序很少时足以支撑,但当安装涉及大量依赖软件,且版本很多时,将会成为一个巨大的噩梦,这是就要推荐linux发行版推出的便捷安装方式了。通常来说,包括2大阵营,一个是Debian社区的dpkg,比如我用的Ubuntu就是该阵营,适合小微企业;还有一个是RadHat的RPM(RedHat Package Management)阵营,其中包括CentOS等熟知发行版,这部分一般用在集群超过10台服务器的中大型应用。

对于Ubuntu来说,安装命令:sudo apt install xxx

对于RedHat,安装命令:rpm –ivh package_name; 安装/升级软件:yum install pam-devel。可以通过rpm -qa查找包名,之后使用rpm -ql xxxx查找包的安装地址。

Linux中,备份通常都是首先建立完整备份,然后据此进行增量或差异差异备份。通常使用的工具有dd,cpio,dump/restore,也可以使用tar进行备份,使用rsync进行镜像备份,,一个推荐的备份方案如下所示,最后会附上相应的备份脚本。

1.主机硬件:使用一个独立的文件系统来存储备份数据,此文件系统挂载在/backup中

2.每日进行:备份MySQL数据库

3.每周进行:包括/home,/var,/etc/boot,/usr/local等目录与特殊服务的目录

4.自动处理:这方面利用/etc/crontab来自动提供备份的进行

5.远程备份:每月定期将数据传输到另一台机器上

 1 第一部分/backup/backupwk.sh
 2 #!/bin/bash
 3 #每周的备份脚本
 4 # History:2016
 5 PATH=/bin:/sbin:/user/bin:/user/sbin; export PATH
 6 export LANG=C
 7 
 8 basedir=/backup/weekly
 9 named=$basedir/named
10 postfixd=$basedir/postfixd
11 vsftpd=$basedir/vsftpd
12 sshd=$basedir/sshd
13 sambad=$basedir/sambad
14 wwwd=$basedir/wwwd
15 others=$basedir/others
16 userinfod=$basedir/userinfod
17 
18 for dirs in $basedir $named $postfixd $vsftpd $sshd $wwwd $others $userinfod
19 do
20 [ ! -d "$dirs" ] && mkdir -p $dirs
21 done
22 
23 #1.将系统主要服务的配置文件分别备份下来,同时也全部备份/etc
24 cp -a /var/named/chroot/{etc,var} $named
25 cp -a /etc/postfix /etc/dovecot.conf $postfixd
26 cp -a /etc/vsftpd/* $vsftpd
27 cp -a /etc/ssh/* $sshd
28 cp -a /etc/named/samba/* $sambad
29 cp -a /etc/{my.cnf,php.ini,httpd} $wwwd
30 cd /var/lib
31 tar -jpc -f $wwwd/mysql.tar.bz2 mysql
32 cd /var/www
33 tar -jpc -f $wwwd/html.tar.bz2 html cgi-bin
34 cd /
35 tar -jpc -f $others/etc.tar.bz2 etc
36 cd /usr/
37 tar -jpc -f $others/local.tar.bz2 local
38 
39 #2.关于用户参数
40 cp -a /etc/{passwd, shadow, group} $userinfod
41 cd /var/spool
42 tar -jpc -f $userinfod/mail.tar.bz2 mail
43 cd /var/spool
44 tar -jpc -f $userinfod/home.tar.bz2 home
45 cd /var/spool
46 tar -jpc -f $userinfod/cron.tar.bz2 cron at
47 
48 第二部分backupday.sh
49 #!/bin/bash
50 #每日的备份脚本
51 # History:2016
52 PATH=/bin:/sbin:/user/bin:/user/sbin; export PATH
53 export LANG=C
54 
55 basedir=/backup/daily
56 basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
57 basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2
58 
59 [! -d "$"] && mkdir $basedir
60 cd /var/lib
61 tar -jpc -f $basefile1 mysql
62 cd /var/www
63 tar -jpc -f $basefile2 cgi-bin
64  
65 第三部分vi /etc/crontab
66 30 3 * * 0 root /backup/backupwk.sh
67 30 2 * * * root /backup/backupday.sh

"真正的才智是刚毅的志向。" --拿破仑

Tip:由于ubuntu下没有chkconfig模块,因可以通过安装rcconf小工具来管理默认启动服务。

virtualbox网络配置

1、NAT 网络地址转换模式(NAT,Network Address Translation)  2、Bridged Adapter 桥接模式  3、Internal 内部网络模式  4、Host-only Adapter 主机模式 

选择NAT就好,只需要主机能访问虚拟机的端口,虚拟机能连接外部网络就OK,试验机的需求。

参考资料:https://www.douban.com/group/topic/15558388/

参考资料:

  1. 鸟哥. 鸟哥的Linux私房菜基础学习篇(第三版)[M]. 北京:人民邮电出版社, 2010.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

android个推平台

最近有个朋友想要推送一些消息到自己的APP上,自己用了HTTP轮询的方式比较耗电,也比较占用流量,一旦用户关闭了进程,消息则很难触达,于是,咨询我有没有什么好的...

2186
来自专栏EAWorld

8种至关重要OAuth API授权流与能力

在本文中,Curity的Daniel Lindau概述了重要的OAuth授权流程和能力。

771
来自专栏腾讯大数据的专栏

zookeeper 运营经验分享

Zookeeper作为TDBank系统的一个重要模块,我们运营它已经两年多。在使用过程中,我们也遇到了一些问题及走过很多弯路,本文主要对zookeeper运营经...

2779
来自专栏建站达人秀

如何搭建 Firekylin 博客

FireKylin 是基于国内先进的 Node.js 框架 ThinkJS 2.0 开发的通用博客系统,是由奇虎360公司Web前端工程师组成的专业团队 75T...

3452
来自专栏大数据实战演练

Linux NTP时钟同步

时钟同步在大数据方向,用到的地方很多。举个例子来说吧,像Zookeeper、RegionServer服务都是需要实时和各节点进行通信的。假如各节点差超过30s,...

5092
来自专栏猿天地

hbuilder 开发5+ APP采坑记录

开发一款APP产品需要在安卓和苹果2大平台发布,同时开发团队也需要有安卓和IOS。 HTML5 Plus移动App,简称5+App,是一种基于HTML、JS、C...

7099
来自专栏数据和云

GR运维手册 - 第一册 苦海岸边,GR的基础知识

作者简介: ? 刘伟 云和恩墨开源解决方案事业部首席架构师 多年一线互联网企业DBA经历,对MySQL、NoSQL,PostgreSQL等各类开源数据库均有涉猎...

3076
来自专栏月色的自留地

把路由器改装成git服务器(OpenWRT环境的GIT服务器搭建)

在单位中,通常都标配了git服务器用来管理代码。 对于家庭或者小办公室,这种方式有点不经济。当然如果是开源项目就简单了,刚刚被微软收购的github是理想...

8342
来自专栏编程坑太多

『高级篇』docker之DockerSwarm的了解(27)

PS:假定运行了一个nginx服务2个实例,nginx1 和nginx2,容器内的端口是80,主机内的端口是8080, 这2个容器分别运行在node2和node...

1161
来自专栏腾讯Bugly的专栏

《移动端本地 H5 秒开方案探索与实现》

对 APP 里的一些使用 H5 实现的功能模块,一般体验都比原生差,那么怎么提高h5加载速度?优化 h5 体验?

1.3K13

扫码关注云+社区

领取腾讯云代金券