注意:如果next主题在5.1.1以上的话就不用我这样设置,直接在主题配置文件中找到canvas_nest: false,把它改为canvas_nest: true就行了(注意分号后面要加一个空格)
其实挺简单的︿( ̄︶ ̄)︿
修改_layout.swig
打开 next/layout/_layout.swig
在 < /body>
之前添加代码(注意不要放在< /head>的后面)
1 | {% if theme.canvas_nest %} |
生活心情
注意:如果next主题在5.1.1以上的话就不用我这样设置,直接在主题配置文件中找到canvas_nest: false,把它改为canvas_nest: true就行了(注意分号后面要加一个空格)
其实挺简单的︿( ̄︶ ̄)︿
_layout.swig
打开 next/layout/_layout.swig
在 < /body>
之前添加代码(注意不要放在< /head>的后面)
1 | {% if theme.canvas_nest %} |
web开发的过程中一定会遇到 cgi、wsgi 之类的名词,然后看着他们十分相似的解释估计还没开始写代码就晕了,这都什么鬼?
今天我就聊聊这些容易搞混的名称。
CGI(Common Gateway Inteface)
字面意思就是通用网关接口,它是外部应用程序与Web服务器之间的接口标准,规定一个程序该如何与web服务器程序之间通信。
当然,CGI 只是一个很基本的协议,在现代常见的服务器结构中基本已经没有了它的身影,更多的则是它的扩展和更新。
操作系统: CentOS6.5
MySQL:mysql-5.6.34
Linux 系统自带了 MySQL 数据库,但是对于我们来说版本低了点,所以我们还是自己重新安装一遍 MySQL,为防止冲突,我们需要将原先版本的 MySQL 卸载。
1 | rpm -qa | grep -i mysql |
1 | yum -y remove mysql-5.1.71-1.el6 |
通过 wget
命令下载 MySQL 的 tar.gz 文件
1 | cd /usr/local |
1 | mv mysql-5.6.34-linux-glibc2.5-i686/ mysql |
1 | cd mysql/ |
从 mysql 安装目录下拷贝一份 my.cnf 文件到 /etc/ 目录下,如果原先 /etc/ 存在 my.cnf 文件,则覆盖。
在 [mysqld]
中添加:
1 | basedir = /usr/local/mysql |
1 | cp support-files/mysql.server /etc/init.d/mysqld |
1 | ps -ef | grep mysqld |
分别在两台服务器上按上述步骤安装 MySQL。
1 | vi /etc/my.cnf |
在 my.cnf 文件中添加
1 | log_bin = master_mysql_bin |
该参数配置表示开启 MySQL 的二进制日志。
1 | service mysqld restart |
1 | mysql> show master status; |
记录下红色标记处的信息,配置 slave 节点时需要。
1 | mysql> grant replication slave on *.* to 'repl'@'192.168.222.%' identified by 'replsafe'; |
1 | vi /etc/my.cnf |
在 my.cnf 文件中添加
1 | log_bin = slave_mysql_bin |
修改从库上的二进制日志和中继日志的命名规则
1 | service mysqld restart |
1 | mysql> change master to |
1 | start slave; |
1 | mysql> show slave status\G |
通过 show slave status\G
显示出来的内容如上,则表示主备环境搭建成功。
在主库上创建一个数据库,创建一张表,并想表中插入数据,查看从库能否有相同数据。
1 | mysql> create database master_slave; |
查看从库上是否有相同数据
1 | mysql> show databases; |
验证复制功能成功。
问题一:
在启动复制功能时,查看 slave 节点状态发现:
原因:主库服务器上防火墙开启导致,从库连接不上主库
解决方案:在主库服务器上关闭防火墙 service iptables stop
作为一个码农对于那些NO.1的开发工具爱不释手,它们对框架的支持、界面、插件都是那么的优秀,
大大加快了开发的速度以及开发的乐趣,酷炫的界面也能大大的装一个逼。
对于暂时经济不宽裕的同学,比较明智的选择是Google一台active服务器即可,
有能力的同学不妨尝试自行架设,这也就是本文的目的啦。
喝水不忘挖井人,在此向服务器软件的作者Lanyu表示衷心的感谢。
学习Linux的时候,避不开的就是需要学习Linux中的分区。学习Linux的分区,有很多概念性的东西需要学习,比如分区类型啊,文件系统类型啊…等等,对于我来说,并不是很喜欢这种概念性的东西,上来一大段文字对于我一点都不友好。所以整理了一篇笔记,记录怎么对Linux中的磁盘进行分区、创建文件系统以及挂载。首先能实操使用,接着再慢慢理解其中的内容。
操作系统:CentOS6.6
fdisk可用于查看硬盘分区情况,也可以使用fdisk进行分区。
选项:1
2
3
4
5-b SECTOR_SIZE:指定每个分区大小
-l:列出指定硬盘的分区情况
-s PARTITION:输出指定分区的大小,单位为块
-u:在列出硬盘分区情况的时候,使用块为单位列出分区大小而不是以柱面为单位
-v:显示版本信息
子选项:1
2
3
4
5
6
7
8p:print,显示已有分区
n:new,创建
d:delete,删除
w:write,写入磁盘并退出
q:quit,放弃更新并退出
m:获取帮助
l:列表所分区id
t:调整分区id
**选项:1
2
3
4
5-a:通知内核重新读取硬盘分区表
-d:删除分区硬盘分区表信息
-l:列出分区
--type YTPE:指定分区类型
--nr M-N:指定分区范围
选项:1
2
3-t TYPE:指定穿件的文件系统类型
-v:显示版本信息
-c:创建文件系统之前,先检查分区是否存在坏块
选项:1
2-c:创建交换分区之前,先检查分区是否存在坏块
-f:强制执行
mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25-t vsftype:指定要挂载的设备上的文件系统类型
-r :readonly,只读挂载
-w:read and write,读写挂载
-n:不更新/etc/fstab
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L 'LABEL':以卷标指定挂载设备
-U 'UUID':以UUID指定要挂载的设备
-B,--bind:绑定目录到另一个目录上
-o options:挂载文件系统的选项
async:异步模式
sync:同步模式
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载
exec/noexec:是否支持将文件系统上的应用程序运行为进程
dev/nodev:是否支持在此文件系统上使用设备
suid/nosuid;
remount:重新挂载
ro:只读挂载
rw:读写挂载
user/nouser:是否允许普通用户挂载此设备
acl:启用此文件系统上acl功能
defaults:rw,suid,dev,exec,auto,nouser,and async
umount [-dflnrv] {dir|device}…
选项:1
2
3
4
5
6
7-a:卸除/etc/mtab中记录的所有文件系统;
-h:显示帮助;
-n:卸除时不要将信息存入/etc/mtab文件中;
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;
-t<文件系统类型>:仅卸除选项中所指定的文件系统;
-v:执行时显示详细的信息;
-V:显示版本信息。
swapon [-f] [-p priority] [-v] specialfile…
选项:1
2-a :激活所有的交换分区
-p PRIORITY:指定优先级
swapoff [-v] specialfile…
选项:1
-a:禁用所有的交换分区
查看硬盘以及分区情况
1 | [root@sg-pc /]# lsblk |
使用fdisk对/dev/sdb硬盘划分分区,划分3个主分区,每个主分区5G大小,并且划分一个扩展分区,4G大小。
1 | [root@sg-pc /]# fdisk /dev/sdb |
将新划分的分区加载到硬盘分区表中,并查看分区状态
1 | [root@sg-pc /]# partx -a /dev/sdb |
为分区创建文件系统,这边就选择/dev/sdb1分区作为示例
1 | [root@sg-pc /]# mkfs -t ext4 -L 'backup' /dev/sdb1 |
通过blkid命令,可以查看硬盘设备的信息
1 | [root@sg-pc /]# blkid |
将创建完文件系统的分区挂载指定目录下
1 | [root@sg-pc /]# mkdir /backup |
检查分区挂载情况
可以看到/dev/sdb1已经被挂载到/backup目录下了。
交换分区的创建与挂载步骤与普通分区一致,也是先划分分区,然后在分区上创建文件系统,接着是激活交换分区。因为交换分区与普通分区有一点不同,需要先调整分区的分区ID。
将/dev/sdb2分区作为交换分区,首先需要修改/dev/sdb2分区的分区ID
1 | [root@sg-pc /]# fdisk /dev/sdb |
创建交换分区的文件系统
1 | [root@sg-pc /]# mkswap -L 'myswap' /dev/sdb2 |
激活交换分区
1 | [root@sg-pc /]# free -m |
上述的硬盘的分区都是在系统中临时挂载使用的,当系统重启的话,目前我们挂载的分区并不会自动挂载上去,又需要我们执行挂载的步骤,这样很不方便。如果我们需要硬盘分区在系统重启的时候也能自动挂载,我们需要将分区的配置写到/etc/fstab这个文件中。
/etc/fstab文件中每一行代表一个启动的时候需要自动挂载的硬盘分区。
每一行记录友6个字段组成,按照顺序分别为:
我们以上面划分的./dev/sdb1分区为例,将其设置为每次机器重启的时候都会将/dev/sdb1分区挂载到相应的挂载点。
在/etc/fstab文件中添加如图所示的一行,表示每次机器重启的时候,都会将/dev/sdb1分区挂载到/backup挂载点上,并且该分区的文件系统类型为ext4类型,挂载选项是defautls,不备份,不自检。
总的来说,Linux下的硬盘分区以及挂载主要是三个步骤:
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,
可以很方便的用来启动、重启、关闭进程(不仅仅是Python进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,
有时候服务器出问题导致所有应用程序都被杀死,此时可以用supervisor同时启动所有应用程序。
awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能,它几乎可以完成grep和sed所能完成的全部工作,
同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。
它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:样式扫描和处理语言。
它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
在linux中通常要进行文本处理,sed是一个非常强大的文本处理命令工具。
配合正则表达式可以进行文本搜索、替换、插入、删除等操作。
sed基本上就是正则模式匹配,所以你的正则表达式要比较强才能玩的好它。
sed是一种新型的,非交互式的编辑器。它能执行与编辑器vi和ex相同的编辑任务。
sed编辑器没有提供交互使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。
sed编辑器没有破坏性,它不会修改文件,除非指定-i选项,默认情况下,所有的输出行都被打印到屏幕上。
这里只介绍最常用的一些用法,如果要看sed全部东西,请参考[sed参考手册]
(http://www.gnu.org/software/sed/manual/sed.html)
MySQL的高可用方案一般有如下几种:
mysql自带的主从、keepalived+双主、MHA、MMM、Heartbeat+DRBD、PXC、Galera Cluster
我在前面一篇博客讲解过mysql自带的主从复制,不过更加常用的是keepalived+双主,MHA和PXC。
对于小公司,一般推荐使用keepalived+双主,简单。