linux硬盘分区、格式化与挂载

给手上的一台 Windows 安装 CentOS 后,发现 1T 的硬盘没有利用上。所以这一篇介绍怎么将它配置好。

主要用到一下知识点:

  1. 对磁盘进行分区,以创建可用的分区;
  2. 对分区进行格式化 (format);
  3. 创建挂载点 ,将磁盘挂载上来;

分区

查看磁盘列表lsblk

lsblk 是 “list block device ” 的缩写,就是列出所有储存设备的意思

lsblk [-dfimpt] [device]
选项与参数:
-d  :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f  :同时列出该磁盘内的文件系统名称
-i  :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
-m  :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)
-p  :列出该设备的完整文件名!而不是仅列出最后的名字而已。
-t  :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等

lsblk

从图片中可以目标磁盘是sdb,并且没有挂载进来。


Linux 使用规范收集

这一篇也是收集类型的文章,网上并没有看到一篇完整的规范。所以当我发现有不错的规范,就将它记录下来。

用户使用规范

  1. 不要修改系统级配置文件,请添加自定义配置文件到系统级配置目录中。

    例如:一般在配置文件的同级目录下都会有一个配置文件名.d的配置目录,它们是为了防止多用户多服务环境配置冲突问题。

    proc 内核参数配置,不要直接修改配置文件/etc/sysctl.conf,应该以业务或服务名命名配置文件(如 99-app-sysctl.conf),然后将其放入/etc/sysctl.d目录。

    同理配置ulimit也一样 , 请不要修改/etc/security/limits.conf 配置文件,而是应该以业务或服务名命名配置文件(如 99-app-limits.conf),然后将其放入/etc/security/limits.d/目录。

    同理配置全局Shell的环境变量,请不要修改/etc/profile或/etc/bashrc文件,而是应该以业务或单独命名配置文件(如eleme.sh),然后将其放置在/etc/profile.d目录。

  2. 最小范围定义环境变量 (Less better than more !)

    例如:程序启动需要的环境变量,写在程序启动脚本里。

    用户需要的环境变量,写在用户的~/.bashrc里。

    需要多个程序公用的环境变量,写在独立的文件中,然后使用source命令带入程序启动脚本里。

    如果变量不可变,请用readonly修饰它。

    如果变量需要子进程或子shell继承,请用export修饰它。

  3. cp 命令好过mv命令,mv命令好过rm命令。

    例如:如果需要把文件放在新的位置,请先确认是否需要删除原有文件,如果不需要删除,请使用cp命令。如果需要删除原有文件,将其使用mv改名为filename.bak-$(date %F-%T)。目前的系统磁盘远远大于我们需要的空间量,保存一个文件的原始位置备份,有助于我们快速恢复。

  4. 创建计划任务时(cron),请为你的计划任务设置优先级(nice)。

    例如:计划任务均为后台执行程序,运行过程中会与其他运行任务争抢资源,如果你不想由于执行计划任务导致此设备上的其他任务运行缓慢,请在命令前加上nice -n 10,没有其他任务运行时它运行飞快,有其他任务运行时它会让出资源。

  5. 创建计划任务时(cron),请注意命令路径问题,请使用全路径运行程序。

    例如:crontab -e -u USERNAME时,默认没有环境变量设置,请自定义PATH等变量​

  6. 当你程序打不开、写不了、无法创建文件和目录时,请检查其父目录权限。

    例如: /var/log目录权限root.root 755,你要想让你的程序写日志进去,请自行创建/var/log/程序名目录,保证运行程序的用户有写入的权限。

  7. 命令敲完回车前请确认输入是否正确,命令执行完请确认命令回显。

    例如:如果你的网络设置命令执行错误,直接会导致网络断开,你会被堡垒机踢出或冻结输入框。这时应该第一时间联系基础运维,他们还有IPMI控制卡连接方式帮你救回来。

  8. 文件名和目录区分大小写,请保持所有名称都是小写字母

  9. 清空日志文件的正确方法是>./logfile.log,而不是rm -rf ./logfile.log

管理员配置规范

一 服务器安装规范

1.1 时区及locale设置

在安装的时候通常都会提示选择时区及locale。

可参考:
时区     —— Asia/PRC
locale  —— en.US_UTF-8

1.2 网卡命名

eth0 配置内网IP
eth1 配置外网IP

目前线上基本是保持了这样规则, 可以继续保持并严格遵守.

这里存在两种情况
一是只有内网IP,没有公网IP, 二是只有公网IP,没有内网IP。

对于第一种情况,网卡命名能保证上面的规则,而对于第二种情况,因为只有一个接口,在安装的时候,会把公网绑定在eth0接口,也就是规则对应的内网接口(eth0)
需要注意的是,对于这种情况需要手工去修改系统udev rules,让其绑定在正确的接口上(eth1)。

1.3 主机命名

主机类型-应用名-项目-机房名称

主机类型: l,w,n(linux,windows,network) 
应用名:   php,mysql,mongodb等
项目:    wap,mall,shop等
机房名称: xx01,xx02

1.4 分区规则

众所周知,越是靠磁盘外部的柱面,读写越快。因为磁盘每次旋转时读写头可以覆盖较多的区域,所以从性能考虑,应该把读写比较频繁的分区分到磁盘靠后的位置。

格式化时文件系统采用ext4,fstab配置文件可参考
UUID=ad82fb31-4b6d-4e9a-9835-52a8f93abcec /     ext4 errors=remount-ro 0       1
UUID=5d794c5e-2ddb-4aaa-88dc-8ae8cfaf9d76 /data ext4 noatime,nodiratime,errors=remount-ro 1
一个通常的磁盘分区结构:
swap       32G
/          50G
/data      剩余空间
/tmp       1-4G(tmpfs,非磁盘分区)

说明:首先swap分区并不是教科书所写的内存X2,也不是完全不分。对大型应用的服务器可能还会加到64G或者更大,对大多数服务器建议保持在32G-64G既可。
这样划分的目的在于,比如8G内存的服务器,如果swap分区为16G。当消耗完物理内存,开始使用swap进行交换的时候,如果swap空间也被消耗完的话,最后会引发内核的oom-killer机制,这是相当危险的。至于swap使用频率,可以通过内核参数去调整,比如可以让内核在物理内存占用还剩10%的时候去使用swap,或者60%的时候去使用,但并非完全关闭。

/分区预留50G,目前线上服务器,还划分了/var, /usr等分区,比如以下是一台线上服务器的物理分区实例:
/dev/sda1             989M  170M  769M  19% /
/dev/sda9             430G   56G  374G  14% /home
/dev/sda7             8.0G  601M  7.5G   8% /usr
/dev/sda6              10G  6.3G  3.8G  63% /var
none                  1.0G  388M  637M  38% /tmp

可以看到分区情况大致是: / 1G /usr 8G /var 10G, 整个系统会占掉20G左右的分区,多分区对磁盘性能有一定提升。但相对扩容就不太不便。所以在考虑到保持服务器原有分区结构的情况下,可考虑采用扩大各分区容量的方案。

线上服务器参考分区结构(注意分区顺序):
/swap    32G+
/        50G
/home    剩余空间
/tmp     4G(内存分区)

data分区,因为开发遗留的问题,目前线上服务器实质是使用/home作为data分区,这里需要注意的是data分区的界定必须统一,且长期保持。比如可以以/data为挂载点作为data分区,可以/home作为data分区,或者/var作为data分区, 这些都是习惯问题,但是必须统一,目前线上存在不一致的情况,虽然大多数都是以/home作为data分区,但有个别却是使用/var作为data分区,这点以后需注意。

分区的4k对齐
4k对齐的原理可以通过IBM官方网站去了解,我这只写下对应的的分区步骤。在分区的时候应该考虑到这个问题,4k对齐的磁盘性能比非对齐的大致提升在5%-10%左右。
fdisk -H 224 -S 56 /dev/sdx   #创建分区
fdisk -lu /dev/sdx            #验证对齐

1.5 添加root用户的公钥

/root/.ssh/authorized_keys

开启ssh服务,关闭密码验证,并添加root用户的公钥。

以上主要是涉及系统安装过程中,需要设置地方的一个通用参考及标准。一个良好的系统初始环境对自动化化运维起着不可忽视的作用,比如:
按照以上规范设置网卡接口,可以直接通过批量管理工具获取所有线上服务器内网及外网IP。
磁盘分区可以让大数据存放在固定的位置,便于日志的集中收集,分析,避免频繁的磁盘报警。
而主机命名对自动化配置及自动化监控的分组管理都有非常重要的作用。

二 文件管理规范

2.1 文件层次

文件层次优先参照FHS标准及Debian标准, 其次参照BSD标准.

注: FHS:   Linux文件系统层次标准 
    BSD:   软件包通常位于: /usr/local/$package
    SYS V: 软件包通常位于: /opt/$package

FHS标准:
/bin     基本命令执行文件
/boot    boot loader 的静态链接文件
/dev     设备文件
/etc     主机特定的系统配置
/home    用户目录
/lib     基本共享库以及内核模块
/media   用于移动介质的挂载点
/mnt     用于临时挂载文件系统
/proc    系统信息的虚拟目录(2.4 和 2.6 内核)
/root    root 用户的目录
/sbin    基本系统命令执行文件
/sys     系统信息的虚拟目录(2.6 内核)
/tmp     临时文件
/usr     第二级目录
/var     不断变化的数据
/srv     系统提供的用于 service 的数据
/opt     附加的应用程序软件包

Debian标准:
/etc/default/$package   ---- 服务启动开关
/etc/network/interface  ---- 网络配置
.......

BSD标准
/usr/local/script/      ---- 系统管理日常脚本
/usr/local/cron/        ---- cron执行脚本
/usr/local/firewall/    ---- 防火墙规则

建立单独的数据目录(data分区)
data分区(/data或/home, 这里根据线上情况以/home为准)
data分区主要作为数据分区,比如web程序目录,mysql目录,一些较大的日志文件存放等。
/home/mysql/data        ---- mysql data目录
/home/mysql/log         ---- mysql 日志目录
/home/redis/data        ---- redis data目录
/home/redis/log         ---- redis 日志目录
.......
/home/www               ---- web目录
/home/backup            ---- 备份目录

说明:
FHS标准与DEBIAN标准
文件层次上, DEBIAN本身也是遵守FHS标准, 但由于众多发行版的差异性, 会有一些细节的不同. 比如centos/redhat 网络配置位于
/etc/sysconfig/network-scripts/ifcfg-ethX, 所以我们更应该遵循这种发行版自己的守则, 而不是简单的在rc.local里面通过命令或者脚本去配置网络, 这方面LVS的配置, 大多数人都习惯将内核参数修改和网络配置保存到脚本, 独立执行. 不是很严谨, 所以有Debian标准一说, 在软件管理及系统配置上更应该遵守这样的标准.

BSD标准
通常在编译一个软件的时候, 比如nginx, 指定--prefix=/usr/local/nginx这样的参数, 最后文件层次会如下
/usr/local/nginx/etc
/usr/local/nginx/bin
/usr/local/nginx/sbin
/usr/local/nginx/var
/usr/local/nginx/lib

这是标准的BSD文件层次结构, 在软件管理和系统配置上是不建议采用这样的方式, 更合理的是通过Debian的包管理机制打包发布. 而为便于系统管理所编写的通用脚本等不通过Debian包管理机制所管理的东西, 则
建议存放在/usr/local/script或/usr/local下对应的目录。

2.2 通用环境

/etc/vim/vimrc          vim通用配置
/etc/bash.bashrc        bash通用配置
/etc/bash.function      bash自定义函数
/etc/bash.alias         bash命令别名

2.3 文件修改

系统及服务配置文件通常都是通过自动配置工具分发, 便于回滚

在手动修改配置文件应遵循以下原则
默认配置文件    ---- xxxx.orig
  在没有任何改动的情况下以orig扩展名做一次备份并保留注释,以供参考
修改配置文件    ---- xxxx.$date
  对当前配置文件做出修改时, 建议首先以xxxx.$date的命名方式对其做一次备份.
当前配置文件
  建议移除相关注释及空行, 在有缩进的情况下以四个空格作为缩进,以保证阅读的清爽性.

三 包管理规范

3.1 包管理

采用自动部署工具(bcfg2, salt, puppet等)管理软件包,尽量避免手动直接安装。

只保留安全补丁升级,避免系统库, 内核及相应服务升级。

建立官方仓库的本地镜像及私有仓库。

线上,线下环境版本必须统一, 扩展版本也必须完全保持一致.

3.2 包安装

尽量采用官方源,及稳定的三方源安装相应软件包。

如必须源码编译,务必遵照Debian官方打包方式进行打包,以保持FHS规范以便于自动化管理。

自打包程序通过严格测试及审核后才可放入私有仓库。

说明:
GCC保持默认的o2就好,不要修改CFLAG,以稳定为优先原则。
使用Debian的官方打包机制打包,勿用checkinstall直接打包。

3.3 基础包参考列表(debian)

dnsutils iputils-ping locales man-db mtr-tiny p7zip-full python-dev python-libxml2 chkconfig vim sudo tcpdump ipmitool curl sysstat

四 帐号管理规范

4.1 帐号安全及管理

root                  特权帐号, 能执行任何操作, 无任何限制。
xxxx                 堡垒机默认帐号, 应该加上权限限制, 否则sudo -i后和root没任何区别。 
                      但可以适当放宽, 因为这是针对sa的帐号。
xxxx                   ops默认帐号,对系统有只读权限,并对/etc/init.d/下面的daemon有重启权限。
xxxx                   dba默认帐号,需做限制,只保留数据库相关的权限。
xxxx                   开发默认帐号,只提供chroot最小系统访问权限。
xxxx                   日志查询帐号,只提供chroot最小系统sftp权限。

首先应明确各个职位的职责,sa是系统管理员,需要对所维护的整个系统负责,dba是数据库管理员,需要对所管理的db负责,同样dev只需对开发程序负责,所以生产线不应该给开发开放系统权限,但可开放查询日志权限。dba由于只负责数据库的维护,所以只需开放相关的权限。

帐号安全方面,所有帐号必须禁用密码登录。远程ssh必须做访问限制,不能直接对公网开放。同时使用root帐号必须通过专门的中间机登录,目前这些我们还有待改进。

对所有帐号的历史操作记录,必须以文件的形式做备份。这样的目地是在发生故障的时候,能定位到当时的操作,首先排除掉我们自己的原因。然后再排查db,程序,缩短问题定位时间。

说明:
权限限制:1、可通过sudo   2、 ssh + chroot

五 日志管理规范

5.1 系统日志

/var/log/syslog
/var/log/message
/var/log/kern.log
/var/log/cron.log
/var/log/user.log
/var/log/auth.log
/var/log/daemon.log

系统日志一般syslog-ng或rsyslogd都会做好默认的分类,但默认配置所有类型的日志信息都会写到/var/log/syslog,在排错的时候,可能会大量的cron日志,snmpd日志充斥,看着很冗余,建议将cron的单独切分到cron.log,snmpd切分到snmpd.log,以此类推,不在syslog保留相关信息。

5.2 应用日志

nginx日志目录: /home/logs/nginx
    $server_name.access.log
    $server_name.error.log

mysql日志目录: /home/logs/mysql
    mysql-err.log
    mysql-slow.log

mongo日志目录: /home/logs/mongodb
这基本是线上的日志结构,不需要更改,其他服务可以此类推

5.3 日志切分

系统日志以7天作为切分,始终只保留7天的日志记录
服务日志默认以15天作为切分,但需根据具体的需求做适当的调整,比如nginx的access.log在打开后会非常占磁盘空间,可调整为1-2天。

参考资料


搭建 rsync 服务器

介绍

rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

  rsync 包括如下的一些特性:

  1. 能更新整个目录和树和文件系统;
  2. 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  3. 对于安装来说,无任何特殊权限要求;
  4. 对于多个文件来说,内部流水线减少文件等待的延时;
  5. 能用rsh、ssh 或直接端口做为传输入端口;
  6. 支持匿名rsync 同步文件,是理想的镜像工具。

安装

源码编译

下载地址:https://rsync.samba.org/

tar xvf rsync-3.1.1.tar.gz
cd rsync-3.1.1
./configure --prefix=/usr/local
make && make install

软件包安装

apt-get install rsync

配置

由官方文档可以看出来 rsync 有三个主要文件:

  • rsyncd.conf 是rsync服务器主要配置文件。
  • rsyncd.secrets是登录rsync服务器的密码文件。
  • rsyncd.motd是定义rysnc 服务器信息的,也就是用户登录信息。

rsync的操作有两种 1、启动rsync守护进程的 2、使用remote shell处理的

我选择了第二种情况,特别简单,只需要写好配置文件即可。

mkdir -p /etc/rsyncd
cd /etc/rsyncd
vi rsyncd.conf

修改配置文件rsyncd.conf

address = 172.104.xx.xx # 本机地址
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow=*
max connections = 5
motd file = /etc/rsyncd/rsyncd.motd
log file=/var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
#transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[cdn]   # 需要同步的文件夹,按照自己的需要写
path = /var/local/cdn
ignore errors
comment =  cdn

运行

服务端运行

rsync  --daemon --config=/etc/rsyncd/rsyncd.conf

建议客户端以下面这种 ssh 的方式运行,可以避免输入密码,更好地自动化

rsync -vzrtopg --delete --progress root@xxx:/var/local/cdn/ /var/local/cdn

客户端结合 cron,就可以达到定时同步的效果了。

参考资料


Linux 禁止 ping 的几种方法

系统层面

临时生效

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all # 忽略所有 ping 指令

echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all # 恢复

永久生效

vi /etc/sysctl.conf 设置

net.ipv4.icmp_echo_ignore_all=1

保存后

sysctl -p

或者输入以下命令

echo net.ipv4.icmp_echo_ignore_all=1 >>/etc/sysctl.conf
echo net.ipv4.icmp_echo_ignore_all=0 >>/etc/sysctl.conf

iptable 丢弃ICMP包

iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

然后

iptabels-save

关于 iptable 的用法可以参考我这篇文章。

《Linux管理员应该了解的20条IPTables防火墙规则用法》


从 laravel 中文文档查看 5.5 相对 5.1 中的变动 (2)

这篇主要对比 laravel 5.5相对5.1 的各模块功能的不同,从 5.5 的目录来看是从安全相关官方扩展包的内容。

上一篇在这里从 laravel 中文文档查看 5.5 相对 5.1 中的变动 (1)

相同的部分我就不多赘述了,大部分只点出目前看到的不同的地方。当前本文的修改时间是 2017-10-03 15:28:41。

查阅的 laravel 手册为:

Artisan 命令行工具

Laravel REPL

所有 Laravel 应用都包含了 Tinker。 Tinker 让你可以在命令行中与你整个的 Laravel 应用进行交互,包括 Eloquent ORM、任务、事件等等。运行 Artisan 命令 tinker 进入 Tinker 环境:

php artisan tinker

事件

除了广播变化非常大之外,其它没有什么变化。5.5文档把广播从事件里单独拎出来了。

广播

相对于5.1变化的蛮大的,主要因为是增加了 laravel echo,广播的实现变得非常简单 。等到我需要实践的时候再去看好了。

直达链接: 广播系统

缓存

感觉没什么变化 Orz

集合

增加了很多方法。 直达链接: Collection

文件系统

保存文件这一块多了文件流式传输的方法:

use Illuminate\Http\File;

// 自动为文件名生成唯一的 ID...
Storage::putFile('photos', new File('/path/to/photo'));

// 手动指定文件名...
Storage::putFileAs('photos', new File('/path/to/photo'), 'photo.jpg');

putFile 方法将生成唯一的 ID 作为文件名。

在文件上传部分贴心了很多。5.1时候自定义了不少这方面的处理,5.5 直接帮我们完善了:

Request 可以直接用 store 方法保存文件。store 也生成唯一的 ID 来作为文件名。

    public function update(Request $request)
    {
        $path = $request->file('avatar')->store('avatars');

        return $path;
    }

或者Request 的 storeAs,也可以用 Storage 的 putFileAs,效果一样

$path = $request->file('avatar')->storeAs(
    'avatars', $request->user()->id
);

$path = Storage::putFileAs(
    'avatars', $request->file('avatar'), $request->user()->id
);

文件可以被声明为 publicprivate。不过具体的业务处理,就得自己去完善了。

辅助函数

多了不少

数组

  • array_last
  • array_prepend
  • array_wrap 函数将给定的值包装成一个数组。如果给定的值已经是一个数组,则不会被改变

路径

  • mix
  • resource_path 函数返回 resources 目录的完整路径。

字符串

  • kebab_case 函数将给定的字符串转换为 短横线隔开式
  • e(并不是新增的) 函数使用 PHP 函数 htmlspecialchars 并且 double_encode 选项设置为 false
  • str_after
  • str_before
  • title_case 函数将给定的字符串转换为 每个单词首字母大写

url

  • secure_url 函数为给定的路径生成一个完整的 HTTPS URL 路径

其他

  • abort 函数将会抛出一个 HTTP 异常并且由异常处理程序处理
  • abort_if
  • abort_unless
  • dispatch 函数将一个新的任务推送到 Laravel 任务列队
  • logger 函数可以将一个 debug 级别的消息写入到日志中
  • report 函数将使用异常处理程序的 report 方法抛出异常
  • retry 函数尝试执行给定的回调,直到到达给定的最大尝试次数。

邮件

在 Laravel 5.5 中,每种类型的邮件都代表一个「Mailable」对象。这些对象存储在 app/Mail 目录中。

php artisan make:mail OrderShipped

并且支持 markdown 格式。

php artisan make:mail OrderShipped --markdown=emails.orders.shipped

并且支持预览:

Route::get('/mailable', function () {
    $invoice = App\Invoice::find(1);

    return new App\Mail\InvoicePaid($invoice);
});

通知

laravel 5.5 强化了它的通知功能。以前只有邮件功能,现在还增加了短信和 Slack 功能,可喜可贺。(我在5.1的时候是借用了 slaask 实现的通知)

php artisan make:notification InvoicePaid

更加详细的可以直接参考文档,直达链接

扩展插件开发

这一块不熟悉,应该变化不大。

扩展包是添加功能到 Laravel 的主要方式。扩展包可以包含许多好用的功能,像 Carbon 可用于处理时间,或像 Behat 这种完整的 BDD 测试框架。

队列

没有变化。

任务调度

也没有变化。

数据库

死锁

transaction 方法接受一个可选的第二个参数,该参数定义在发生死锁时,应该重新尝试事务的次数。一旦这些尝试都用尽了,就会抛出一个异常:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
}, 5);

构造器、分页没有什么变化,paginate一波流。

数据库迁移部分,没有变化,但解释的更详细一些,尤其是终于给出了哪些字段类型不能修改了。以前修改老是失败,导致我再也不用官方提供的 change 方法,只用原生的SQL 语句。

seeder 也没变化。

API

laravel 5.5 增加了资源类这样一个说法,具体到业务上,就是可以快速将模型和模型集合转换成 json。

在使用 laravel5.1时,后台经常需要从数据库中取出数据,toArray,最后在返回给前端。有了这个资源类,就不需要那么麻烦了。

这是一个全新的东西,打开文档好好看把。直达链接

php artisan make:resource User
php artisan make:resource Users --collection

redis

了解不多,主要是作为 NoSQL,加速网站的,有自定义需要的最好还是看一下。直达链接

测试相关

这一块文档主要是讲了 phpunit 一波流作为单元测试的方法,数据库测试的辅助函数以及一些模拟测试的工具,另外增加了 laravel Dusk 作为 BDD 测试框架。

我已经习惯了 Selenium 框架,这一部分就过了一眼。

官方扩展包

在5.1时代,社区就呈现出来好多有用的扩展,官方把他们好多直接升格为官方推荐了^_^,都过一遍。

  • 收费系统 Cashier 对国内用户可能不太适用,还是 pass 吧。

  • 部署工具 Laravel Envoy 在远程服务器上运行通用任务。可以很方便的启动任务来进行项目部署、Artisan 命令运行等操作。

  • 队列监控面板 - Horizon 一个可以通过代码进行配置、并且非常漂亮的仪表盘,并且能够轻松监控队列的任务吞吐量、执行时间以及任务失败情况等关键指标。

  • API 认证系统 Passport

    太棒了这个东西。使用 Passport 可以轻而易举地实现 API 授权认证,Passport 可以在几分钟之内为你的应用程序提供完整的 OAuth2 服务端实现。

  • 全文搜索系统 Scout

    Laravel Scout 为 Eloquent 模型 的全文搜索提供了一个简单的、基于驱动程序的解决方案。使用模型观察员,Scout 会自动同步你的搜索索引和 Eloquent 记录。

    目前,Scout 自带了一个 Algolia 驱动;而编写自定义驱动程序很简单,你可以自由地使用自己的搜索实现来扩展 Scout。

  • 社会化登录

    又一个超级棒的东西,可惜好像只支持国外的 SNS。

    Laravel 社会化登录通过 Facebook , Twitter ,Google ,LinkedIn ,GitHub 和 Bitbucket 提供了一个富有表现力的,流畅的 OAuth 身份验证界面。它几乎能处理所有你害怕处理的各种样板社会认证代码。

安全相关

用户认证

没变化

API 认证

见上面插件部分的描述

用户授权

这个是 laravel5.5 的新特性。有 gates 和策略 2 种主要方式来实现用户授权。

Gates类似于路由,策略类似于控制器。Gates 提供了一个简单的、基于闭包的方式来授权认证。策略则在特定的模型或者资源中通过分组来实现授权认证的逻辑。

Gates 大部分应用在模型和资源无关的地方,比如查看管理员的面板。与之相反,策略应该用在特定的模型或者资源中。

加密解密机制

Laravel 使用 OpenSSL 提供 AES-256 和 AES-128 的加密。

比起 5.1 没有变化,开箱即用不需要修改。

结论

两天时间看完文档,大致弄懂了Laravel5.5的功能。进步真的蛮大的。我准备写一两个小网站,希望大家也来用 Laravel,为社区贡献一些力量^_^。

参考资料