mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
commit
0ef7b91517
@ -1,6 +1,5 @@
|
||||
Manage Samba4 Active Directory Infrastructure from Windows10 via RSAT – Part 3
|
||||
使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构 (三)
|
||||
============================================================
|
||||
使用 Windows 10 系统的 RSAT 工具来管理 Samba4 活动目录架构 (三)
|
||||
|
||||
这一节的[Samba4 AD DC 架构系列文章][8],我们将会讨论如何把 Windows 10 系统的电脑添加到 Samba4 域环境中,以及如何在 Windows 10 系统下管理域环境。
|
||||
|
||||
@ -10,17 +9,16 @@ Manage Samba4 Active Directory Infrastructure from Windows10 via RSAT – Part 3
|
||||
|
||||
#### 要求
|
||||
|
||||
1、 [在 Ubuntu16.04 系统上使用 Samba4 软件来创建活动目录架构(一)][1]
|
||||
1、 [在 Ubuntu 系统上使用 Samba4 来创建活动目录架构(一)][1]
|
||||
2、 [在 Linux 命令行下管理 Samba4 AD 架构(二)][2]
|
||||
3、 [在 Windows 下管理 Samba4 AD 域管制器 DNS 和组策略(四)][3]
|
||||
|
||||
### 第1步:配置域时间同步
|
||||
|
||||
1、在使用 Windows 10 系统的 RSAT 工具来管理 Samba4 ADDC 之前,我们需要了解与活动目录相关的一个很重要的服务,该服务要求[精确的时间同步][9]
|
||||
|
||||
在大多数的 Linux 发行版中,NTP 进程都提供时间同步机制。AD 环境默认允许最大的时间差距是 5 分钟。
|
||||
在大多数的 Linux 发行版中,都由 NTP 进程提供时间同步机制。AD 环境默认允许最大的时间差距是 5 分钟。
|
||||
|
||||
如果时间差距超过 5 分钟,你将会遇到各种各样的异常报错,影响最严重的是导致 AD 用户,域成员服务器或共享访问相关的问题。
|
||||
如果时间差距超过 5 分钟,你将会遇到各种各样的异常报错,最严重的会影响到 AD 用户、域成员服务器或共享访问等。
|
||||
|
||||
为了在 Ubuntu 系统中安装网络时间协议进程和 NTP 客户端工具,可执行以下命令:
|
||||
|
||||
@ -31,17 +29,17 @@ $ sudo apt-get install ntp ntpdate
|
||||
![Install NTP on Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/12/Install-NTP-on-Ubuntu.png)
|
||||
][10]
|
||||
|
||||
在 Ubuntu 系统下安装 NTP 服务
|
||||
*在 Ubuntu 系统下安装 NTP 服务*
|
||||
|
||||
2、下一步,修改 NTP 配置文件,使用一个离你最近的 NTP 服务地址列表替换默认的 NTP 池服务列表。
|
||||
|
||||
NTP 服务器地址列表可以从 NTP 地址库项目官方网站获取:[http://www.pool.ntp.org/en/][11].
|
||||
NTP 服务器地址列表可以从 NTP 地址库项目官方网站获取:[http://www.pool.ntp.org/en/][11]。
|
||||
|
||||
```
|
||||
$ sudo nano /etc/ntp.conf
|
||||
```
|
||||
|
||||
在每一行 pool 前添加一个 ‘#’ 符号以注释默认的服务器列表,并替换为适合你的 NTP 服务地址,如下图所示:
|
||||
在每一行 `pool` 前添加一个 ‘#’ 符号以注释默认的服务器列表,并替换为适合你的 NTP 服务器地址,如下图所示:
|
||||
|
||||
```
|
||||
pool 0.ro.pool.ntp.org iburst
|
||||
@ -50,13 +48,14 @@ pool 2.ro.pool.ntp.org iburst
|
||||
# Use Ubuntu's ntp server as a fallback.
|
||||
pool 3.ro.pool.ntp.org
|
||||
```
|
||||
|
||||
[
|
||||
![Configure NTP Server in Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/12/Configure-NTP-Server-in-Ubuntu.png)
|
||||
][12]
|
||||
|
||||
在 Ubuntu 系统下配置 NTP 服务
|
||||
*在 Ubuntu 系统下配置 NTP 服务*
|
||||
|
||||
3、此时,先不要关闭该文件。移动光标到文件顶部,在 driftfile 参数后面添加下面一行内容。该设置是为了让客户端查询该服务时使用 AD NTP 签署请求。
|
||||
3、此时,先不要关闭该文件。移动光标到文件顶部,在 `driftfile` 参数后面添加下面一行内容。该设置是为了让客户端查询该服务时使用 AD 的 NTP 签署请求。
|
||||
|
||||
```
|
||||
ntpsigndsocket /var/lib/samba/ntp_signd/
|
||||
@ -65,9 +64,10 @@ ntpsigndsocket /var/lib/samba/ntp_signd/
|
||||
![Sync AD with NTP](http://www.tecmint.com/wp-content/uploads/2016/12/Sync-AD-with-NTP.png)
|
||||
][13]
|
||||
|
||||
使用 NTP 来同步 AD
|
||||
*使用 NTP 来同步 AD*
|
||||
|
||||
4、最后,移动光标到文件底部并添加如下一行内容,如截图所示,仅允许网络客户端查询该服务器上的时间。
|
||||
|
||||
4、最后,移动光标到文件底部并添加如下面一行内容,如截图所示,仅允许网络客户端查询该服务器上的时间。
|
||||
```
|
||||
restrict default kod nomodify notrap nopeer mssntp
|
||||
```
|
||||
@ -75,9 +75,9 @@ restrict default kod nomodify notrap nopeer mssntp
|
||||
![Query Clients to NTP Server](http://www.tecmint.com/wp-content/uploads/2016/12/Query-Client-to-NTP-Server.png)
|
||||
][14]
|
||||
|
||||
限制 NPT 服务的查询客户端
|
||||
*限制 NTP 服务的查询客户端*
|
||||
|
||||
5、设置完成之后,保存并关闭 NTP 配置文件,为了让 NTP 服务读取 ntp_signed 目录,需要授予 NTP 服务合适的权限。
|
||||
5、设置完成之后,保存并关闭 NTP 配置文件,为了让 NTP 服务读取 `ntp_signed` 目录,需要授予 NTP 服务合适的权限。
|
||||
|
||||
以下是 Samba NTP socket 的系统路径。之后,重启 NTP 服务以应用更改,并使用 [netstat 命令][15]与[grep 过滤][16]相接合来检查 NTP 服务是否正常。
|
||||
|
||||
@ -91,7 +91,7 @@ $ sudo netstat –tulpn | grep ntp
|
||||
![Grant Permission to NTP](http://www.tecmint.com/wp-content/uploads/2016/12/Grant-Permission-to-NTP.png)
|
||||
][17]
|
||||
|
||||
NTP 授权
|
||||
*给 NTP 服务授权*
|
||||
|
||||
使用 ntpq 命令行工具来监控 NTP 进程,加上 '-p' 参数来显示摘要信息。
|
||||
|
||||
@ -102,11 +102,11 @@ $ ntpq -p
|
||||
![Monitor NTP Server Pool](http://www.tecmint.com/wp-content/uploads/2016/12/Monitor-NTP-Server-Pool.png)
|
||||
][18]
|
||||
|
||||
监控 NTP Server Pool
|
||||
*监控 NTP 服务器池*
|
||||
|
||||
### 第二步:处理 NTP 时间同步异常问题
|
||||
|
||||
6、有时候 NTP 进程在尝试与上游 ntp 服务端同步时间的计算过程中会卡住,导致客户端使用 ntpdate 工具手动强制同步时间时报如下错误:
|
||||
6、有时候 NTP 进程在尝试与上游 ntp 服务端同步时间的计算过程中会卡住,导致客户端使用 `ntpdate` 工具手动强制同步时间时报如下错误:
|
||||
|
||||
```
|
||||
# ntpdate -qu adc1
|
||||
@ -116,9 +116,9 @@ ntpdate[4472]: no server suitable for synchronization found
|
||||
![NTP Time Synchronization Error](http://www.tecmint.com/wp-content/uploads/2016/12/NTP-Time-Synchronization-Error.png)
|
||||
][19]
|
||||
|
||||
NTP 时间同步异常
|
||||
*NTP 时间同步异常*
|
||||
|
||||
ntpdate 命令加上 -d 选项
|
||||
`ntpdate` 命令加上 `-d` 调试选项:
|
||||
|
||||
```
|
||||
# ntpdate -d adc1.tecmint.lan
|
||||
@ -128,13 +128,13 @@ Server dropped: Leap not in sync
|
||||
![NTP Server Dropped Leap Not in Sync](http://www.tecmint.com/wp-content/uploads/2016/12/NTP-Server-Dropped-Leap-Not-Sync.png)
|
||||
][20]
|
||||
|
||||
NTP Server Dropped Leap Not in Sync
|
||||
*NTP Server Dropped Leap Not in Sync*
|
||||
|
||||
7、为了避免出现该问题,使用下面的方法来解决这个问题:在服务器上停止 NTP 服务,使用 ntpdate 客户端工具加上 '-b' 参数指定外部 peer 地址来手动强制同步时间,如下图所示:
|
||||
7、为了避免出现该问题,使用下面的方法来解决这个问题:在服务器上停止 NTP 服务,使用 `ntpdate` 客户端工具加上 `-b` 参数指定外部 peer 地址来手动强制同步时间,如下图所示:
|
||||
|
||||
```
|
||||
# systemctl stop ntp.service
|
||||
# ntpdate -b 2.ro.pool.ntp.org [your_ntp_peer]
|
||||
# ntpdate -b 2.ro.pool.ntp.org [你的 ntp peer]
|
||||
# systemctl start ntp.service
|
||||
# systemctl status ntp.service
|
||||
```
|
||||
@ -142,7 +142,7 @@ NTP Server Dropped Leap Not in Sync
|
||||
![Force NTP Time Synchronization](http://www.tecmint.com/wp-content/uploads/2016/12/Force-NTP-Time-Synchronization.png)
|
||||
][21]
|
||||
|
||||
强制 NTP 时间同步
|
||||
*强制 NTP 时间同步*
|
||||
|
||||
8、当时间正确同步之后,启动服务器上的 NTP 服务,并且在客户端服务器上执行如下命令来验证 NTP 时间同步服务是否可用:
|
||||
|
||||
@ -153,7 +153,7 @@ NTP Server Dropped Leap Not in Sync
|
||||
![Verify NTP Time Synchronization](http://www.tecmint.com/wp-content/uploads/2016/12/Verify-NTP-Time-Synchronization.png)
|
||||
][22]
|
||||
|
||||
验证 NTP 时间同步
|
||||
*验证 NTP 时间同步*
|
||||
|
||||
至此, NTP 服务应该已经工作正常了。
|
||||
|
||||
@ -165,21 +165,21 @@ NTP Server Dropped Leap Not in Sync
|
||||
|
||||
把 Windows 10 或是之前版本的微软操作系统加入到 Samba4 AD DC 环境中的过程也是非常容易的。首先,确保你的 Windows 10 电脑已经设置了正确的 Samba4 DNS 服务器的 IP 地址,以查询出准确的域解析结果。
|
||||
|
||||
打开控制面板 -> 网络和 Internet -> 网络和共享中心 -> 网卡设置 -> 属性 -> IPv4 -> 属性 -> 使用下面的 DNS 服务器地址,并且手动输入 Samba4 AD 服务器的 IP 地址,如下图所示:
|
||||
打开“控制面板 -> 网络和 Internet -> 网络和共享中心 -> 网卡设置 -> 属性 -> IPv4 -> 属性 -> 使用下面的 DNS 服务器地址”,并且手动输入 Samba4 AD 服务器的 IP 地址,如下图所示:
|
||||
|
||||
[
|
||||
![join Windows to Samba4 AD](http://www.tecmint.com/wp-content/uploads/2016/12/Join-Windows-to-Samba4-AD.png)
|
||||
][24]
|
||||
|
||||
把 Windows 10 加入到 Samba4 AD 环境
|
||||
*把 Windows 10 加入到 Samba4 AD 环境*
|
||||
|
||||
[
|
||||
![Add DNS and Samba4 AD IP Address](http://www.tecmint.com/wp-content/uploads/2016/12/Add-DNS-and-Samba4-AD-IP-Address.png)
|
||||
][25]
|
||||
|
||||
添加 DNS 和 Samba4 AD 服务器地址
|
||||
*添加 DNS 和 Samba4 AD 服务器地址*
|
||||
|
||||
这里的 192.168.1.254 是 Samba4 AD 域控服务器的地址,用于域名解析。按顺序替换 IP 地址。
|
||||
这里的 `192.168.1.254` 是 Samba4 AD 域控服务器的地址,用于域名解析。相应替换该 IP 地址。
|
||||
|
||||
10、下一步,点击 OK 按钮以应用网络设置,打开 CMD 命令行窗口,通过 ping 域名和 Samba4 服务器的 FQDN 地址来测试通过 DNS 解析到域是否连通。
|
||||
|
||||
@ -191,11 +191,11 @@ ping adc1.tecmint.lan
|
||||
![Check Network Connectivity Between Windows and Samba4 AD](http://www.tecmint.com/wp-content/uploads/2016/12/Check-Samba4-AD-from-Windows.png)
|
||||
][26]
|
||||
|
||||
检查Windows 和 Samb4 AD 服务器的网络连通性
|
||||
*检查 Windows 和 Samb4 AD 服务器的网络连通性*
|
||||
|
||||
11、如果 Windows 客户端 DNS 查询的结果解析正确,那么,你还需要确认客户端时间是否已跟域环境同步。
|
||||
|
||||
打开控制面板 -> 时钟、语言和区域 -> 设置时间和日期 -> Internet 时间页 -> 更改设置,输入你同步时间的域名和 Internet 时间服务器字段。
|
||||
打开“控制面板 -> 时钟、语言和区域 -> 设置时间和日期 -> Internet 时间页 -> 更改设置”,输入你同步时间的域名和 Internet 时间服务器字段。
|
||||
|
||||
点击立即更新按钮来强制与域同步时间,点击 OK 关闭窗口。
|
||||
|
||||
@ -203,38 +203,37 @@ ping adc1.tecmint.lan
|
||||
![Synchronize Time with Internet Server](http://www.tecmint.com/wp-content/uploads/2016/12/Synchronize-Time-with-Internet-Server.png)
|
||||
][27]
|
||||
|
||||
与 Internet 服务器同步时间
|
||||
*与 Internet 服务器同步时间*
|
||||
|
||||
12、最后,通过打开系统属性 -> 更改 -> 域成员 -> 输入域名,点击 OK,输入你的域管理员账号和密码,再次点击 OK。
|
||||
12、最后,通过打开“系统属性 -> 更改 -> 域成员 -> 输入域名”,点击 OK,输入你的域管理员账号和密码,再次点击 OK。
|
||||
|
||||
|
||||
应该弹出一个新的窗口通知你已经是一个域成员了。点击 OK 关闭弹出窗口,并且重启机器以应用域更改。
|
||||
|
||||
|
||||
下面的截图将说明这些操作步骤。
|
||||
|
||||
[
|
||||
![Join Windows Domain to Samba4 AD](http://www.tecmint.com/wp-content/uploads/2016/12/Join-Windows-Domain-to-Samba4-AD.png)
|
||||
][28]
|
||||
|
||||
把 Windows 域加入到 Samba4 AD 环境
|
||||
*把 Windows 域加入到 Samba4 AD 环境*
|
||||
[
|
||||
![Enter Domain Administration Login](http://www.tecmint.com/wp-content/uploads/2016/12/Enter-Domain-Administration-Login.png)
|
||||
][29]
|
||||
|
||||
输入域管理员账号登录
|
||||
*输入域管理员账号登录*
|
||||
|
||||
[
|
||||
![Domain Joined to Samba4 AD Confirmation](http://www.tecmint.com/wp-content/uploads/2016/12/Domain-Joined-to-Samba4-AD.png)
|
||||
][30]
|
||||
|
||||
确认域已加入到 Samba4 AD 环境
|
||||
*确认域已加入到 Samba4 AD 环境*
|
||||
|
||||
[
|
||||
![Restart Windows Server for Changes](http://www.tecmint.com/wp-content/uploads/2016/12/Restart-Windows-Server-for-Changes.png)
|
||||
][31]
|
||||
|
||||
重启 Windows 服务器以应用更改
|
||||
*重启 Windows 服务器以应用更改*
|
||||
|
||||
13、重启之后,单击其它用户并且使用具有管理员权限的 Samba4 域账号登录到 Windows 系统,你已经准备好进入到后边几个步骤了。
|
||||
|
||||
@ -242,7 +241,7 @@ ping adc1.tecmint.lan
|
||||
![Login to Windows Using Samba4 AD Account](http://www.tecmint.com/wp-content/uploads/2016/12/Login-to-Windows-Using-Samba4-AD-Account.png)
|
||||
][32]
|
||||
|
||||
使用 Samba4 AD 账号登录到 Windows
|
||||
*使用 Samba4 AD 账号登录到 Windows*
|
||||
|
||||
#### 第 4 步:使用 RSAT 工具来管理 Samba4 AD DC
|
||||
|
||||
@ -255,47 +254,48 @@ ping adc1.tecmint.lan
|
||||
|
||||
一旦 Windows 10 独立安装包下载完成,运行安装包,等待安装完成并重启机器以应用所有更新。
|
||||
|
||||
重启之后,打开控制面板 -> 程序(卸载程序) -> 启用或关闭 Windows 功能,勾选所有的远程服务器管理工具。
|
||||
重启之后,打开“控制面板 -> 程序(卸载程序) -> 启用或关闭 Windows 功能”,勾选所有的远程服务器管理工具。
|
||||
|
||||
点击 OK 开始安装,安装完成之后重启系统。
|
||||
[
|
||||
![Administer Samba4 AD from Windows](http://www.tecmint.com/wp-content/uploads/2016/12/Administer-Samba4-AD-from-Windows.png)
|
||||
][33]
|
||||
|
||||
从 Windows 系统下管理 Samba4 AD
|
||||
*从 Windows 系统下管理 Samba4 AD*
|
||||
|
||||
15、要进入 RSAT 工具集,打开“控制面板 -> 系统和安全 -> 管理工具”。
|
||||
|
||||
15、要进入 RSAT 工具集,打开控制面板 -> 系统和安全 -> 管理工具
|
||||
|
||||
这些工具也可以在开始工菜单的管理工具菜单中找到。另外,你也可以打开 Windows MMC 工具和管理单元,从文件 -> 添加/删除管理单元菜单中访问它们。
|
||||
这些工具也可以在开始工菜单的管理工具菜单中找到。另外,你也可以打开 Windows MMC 工具和管理单元,从“文件 -> 添加/删除管理单元”菜单中访问它们。
|
||||
|
||||
[
|
||||
![Access Remote Server Administration Tools](http://www.tecmint.com/wp-content/uploads/2016/12/Access-Remote-Server-Administration-Tools.png)
|
||||
][34]
|
||||
|
||||
访问远程服务器管理工具集
|
||||
*访问远程服务器管理工具集*
|
||||
|
||||
最常用的工具,比如 AD UC ,DNS 和组策略管理工具可以通过从右键菜单发送到功能来新建快捷方式到桌面直接运行。
|
||||
|
||||
16、你可以通过 AD UC 和列出域里的电脑(新加入的 Windows 机器应该出现在列表中)来验证 RSAT 功能,创建一个组织单元或组。
|
||||
|
||||
在 Samba4 服务器上使用 wbinf 命令来检查用户和组是否已经创建成功。
|
||||
在 Samba4 服务器上使用 `wbinf` 命令来检查用户和组是否已经创建成功。
|
||||
|
||||
[
|
||||
![Active Directory Users and Computers](http://www.tecmint.com/wp-content/uploads/2016/12/Active-Directory-Users-and-Computers.png)
|
||||
][35]
|
||||
|
||||
活动目录用户和计算机
|
||||
*活动目录用户和计算机*
|
||||
|
||||
[
|
||||
![Create Organizational Units and New Users](http://www.tecmint.com/wp-content/uploads/2016/12/Create-Organizational-Unit-and-Users.png)
|
||||
][36]
|
||||
|
||||
创建组织单元和新用户
|
||||
*创建组织单元和新用户*
|
||||
|
||||
[
|
||||
![Confirm Samba4 AD Users](http://www.tecmint.com/wp-content/uploads/2016/12/Confirm-Samba4-AD-Users.png)
|
||||
][37]
|
||||
|
||||
确认 Samba4 AD 用户
|
||||
*确认 Samba4 AD 用户*
|
||||
|
||||
就这些吧!该主题的下一篇文章将包含其它 Samba4 活动目录的重要内容,包括通过 RSAT 工具来管理 Samba4 活动目录,比如,如何管理 DNS 服务器,添加 DNS 记录和创建 DNS 解析查询区,如何管理及应用域策略以及域用户如何创建交互式登录提示信息。
|
||||
|
||||
@ -308,13 +308,13 @@ via: http://www.tecmint.com/manage-samba4-ad-from-windows-via-rsat/
|
||||
|
||||
作者:[Matei Cezar][a]
|
||||
译者:[rusking](https://github.com/rusking)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/cezarmatei/
|
||||
[1]:http://www.tecmint.com/install-samba4-active-directory-ubuntu/
|
||||
[2]:http://www.tecmint.com/manage-samba4-active-directory-linux-command-line/
|
||||
[1]:https://linux.cn/article-8065-1.html
|
||||
[2]:https://linux.cn/article-8070-1.html
|
||||
[3]:http://www.tecmint.com/manage-samba4-dns-group-policy-from-windows/
|
||||
[4]:https://www.microsoft.com/en-us/download/details.aspx?id=45520
|
||||
[5]:http://www.microsoft.com/en-us/download/details.aspx?id=39296
|
||||
@ -335,7 +335,7 @@ via: http://www.tecmint.com/manage-samba4-ad-from-windows-via-rsat/
|
||||
[20]:http://www.tecmint.com/wp-content/uploads/2016/12/NTP-Server-Dropped-Leap-Not-Sync.png
|
||||
[21]:http://www.tecmint.com/wp-content/uploads/2016/12/Force-NTP-Time-Synchronization.png
|
||||
[22]:http://www.tecmint.com/wp-content/uploads/2016/12/Verify-NTP-Time-Synchronization.png
|
||||
[23]:http://www.tecmint.com/manage-samba4-active-directory-linux-command-line/
|
||||
[23]:https://linux.cn/article-8070-1.html
|
||||
[24]:http://www.tecmint.com/wp-content/uploads/2016/12/Join-Windows-to-Samba4-AD.png
|
||||
[25]:http://www.tecmint.com/wp-content/uploads/2016/12/Add-DNS-and-Samba4-AD-IP-Address.png
|
||||
[26]:http://www.tecmint.com/wp-content/uploads/2016/12/Check-Samba4-AD-from-Windows.png
|
@ -4,15 +4,15 @@
|
||||
|
||||
首先制定一个坚定的 HTTP/2 前端开发目标。
|
||||
|
||||
如果你对 HTTP/2 有所了解,那你可能用过它,或者至少想过怎样能把它融入你的项目中。尽管有很多关于它如何改变你的工作流程,提高网络的速度和效率等方面的猜想,但最好的使用方式还没有定下来。这里我想讲的就是我在之前的项目中所发现的 HTTP /2 的优点。
|
||||
如果你对 HTTP/2 有所了解,那你可能用过它,或者至少想过怎样能把它融入你的项目中。尽管有很多关于它如何改变工作流程,提高 Web 速度和效率等方面的猜想,但最好的使用方式还没有定下来。这里我想讲的就是我在之前的项目中所发现的 HTTP/2 的最佳实践。
|
||||
|
||||
如果你还不确定什么是 HTTP/2,或者为什么它能帮助你工作,[看看我介绍背景方面的第一篇文章][4]。
|
||||
如果你还不确定什么是 HTTP/2,或者为什么它能改进你的工作,可以先看看我[介绍背景方面的第一篇文章][4]。
|
||||
|
||||
记住:开始之前,我要告诉你,尽管你的浏览器可能支持 HTTP/2,但你的服务器可能不支持。检查你的主机服务,看看他们是否提供 HTTP/2 的支持。否则你可能玩坏你的服务器。这篇文章并不会讲怎么做,但你可以查看 [http2 github][5] 页面,找一找这方面的工具。
|
||||
记住:开始之前,我要告诉你,尽管你的浏览器可能支持 HTTP/2,但你的服务器可能不支持。检查你的主机托管服务,看看他们是否提供 HTTP/2 的支持。否则你可能要建立你自己的服务器。这篇文章并不会涉及这方面该如何做,但你可以查看 [http2 github][5] 页面,找一找这方面的工具。
|
||||
|
||||
### 🙏 [Rubs Hands Together]
|
||||
### 🙏 [热身工作]
|
||||
|
||||
首先组织好你的文件。看一看下面的文件树结构作为组织样式表的起点:
|
||||
首先组织好你的文件。看一看下面的文件树结构,作为组织样式表的起点:
|
||||
|
||||
```
|
||||
`/styles
|
||||
@ -28,9 +28,9 @@
|
||||
|
||||
这会把你的样式分到三个目录下面:Setup,Global 和 Componenets。接下来我会说明这些目录对你的项目有什么用。
|
||||
|
||||
### Setting Up 目录
|
||||
### Setup 目录
|
||||
|
||||
Setup 目录保存所有的变量,函数,混合<!-- mixins -->以及其它文件需要编译的任意定义。要想让这个它物尽其用,把这个目录下所有内容导入到 `setup.scss`文件中是个很不错的主意,这样这个文件就会像下面所展示的一样:
|
||||
Setup 目录保存所有的变量,函数,mixins 以及其它文件正常编译需要的任意定义。要想让这个目录物尽其用,把这个目录下所有内容导入到 `setup.scss` 文件中是个很不错的主意,这样这个文件就会像下面所展示的一样:
|
||||
|
||||
```
|
||||
`/* setup.scss */
|
||||
@ -51,9 +51,9 @@ Setup 目录保存所有的变量,函数,混合<!-- mixins -->以及其它
|
||||
|
||||
### Global 目录
|
||||
|
||||
接下来的目录,Global,应该包含可在当前站点的多个部分或者每一个页面中重复使用的容器。像按钮、文本、主要样式以及你的浏览器默认设置应该放在这里。我不建议把顶部或底部样式放在这儿,因为某些项目中没有顶部或者不同页面顶部不同。而且,底部永远是页面的最后一个元素,所以在用户加载完当前站点的其它东西前,不必过分优先考虑加载底部样式。
|
||||
接下来的目录,Global (全局)目录,应该包含可在当前站点的多个部分或者每一个页面中重复使用的组件。像按钮、文本、主要样式以及你的浏览器默认设置应该放在这里。我不建议把 <ruby>头部<rt>header</rt></ruby> 或 <ruby>底部样式<rt>footer styles</rt></ruby> 放在这儿,因为某些项目中没有头部,或者不同页面头部不同。而且,底部永远是页面的最后一个元素,所以在用户加载完当前站点的其它东西前,不必过分优先考虑加载底部样式。
|
||||
|
||||
记住,如果没有那些定义在 Setup 目录下的东西,你的全局样式就可能没有作用,你的全局文件看起来应该像这样:
|
||||
记住,如果没有那些定义在 Setup 目录下的东西,你的 Global 样式就可能没有作用,你的 Global 文件看起来应该像这样:
|
||||
|
||||
```
|
||||
`/* global.scss */
|
||||
@ -72,13 +72,13 @@ Setup 目录保存所有的变量,函数,混合<!-- mixins -->以及其它
|
||||
|
||||
注意,首先要做的就是导入 Setup 样式。这样的话,这个样式里定义的所有文件都能够获得引用。
|
||||
|
||||
由于全局样式需要存在于每个页面中,我们可以用默认的方法加载它们,在 `<head>` 标签内用一个 `<link>` 标签。你所看到的将是一个十分小巧的 css 文件,或者说理论上小巧的,这取决于你需要多少全局样式。
|
||||
由于 Global 样式需要存在于每个页面中,我们可以用典型的方式加载它们,在 `<head>` 标签内用一个 `<link>` 标签。你所看到的将是一个十分小巧的 css 文件,或者说理论上小巧的,这取决于你需要多少全局样式。
|
||||
|
||||
### 最后,你的容器
|
||||
### 最后,你的组件
|
||||
|
||||
注意我没有在上述文件树中的容器目录里包含索引文件。这是 HTTP/2 所带来的效用。直到现在,我们已经按照标准步骤构建了一个典型的站点,包含相当高效的结构<!-- fairly lean infrastructure -->,选择仅仅全局化那些最重要的样式。容器表现的就像他们有单独的索引文件。
|
||||
注意,我没有在上述文件树中的 Components(组件)目录里包含索引文件。这是 HTTP/2 所带来的效用。直到现在,我们已经按照标准步骤构建了一个典型的站点,包含 <ruby>相当简单的结构<rt>fairly lean infrastructure</rt></ruby>,选择仅仅全局化那些最重要的样式。组件充当他们自己的索引文件。
|
||||
|
||||
大多数开发者有独特的组织容器的方式,因此我并不想影响你的策略。但是,你所有的容器看起来应该像这样:
|
||||
大多数开发者有独特的组织组件的方式,因此我并不想影响你的策略。但是,你所有的组件看起来应该像这样:
|
||||
|
||||
```
|
||||
`/* header.scss */
|
||||
@ -93,13 +93,14 @@ header {
|
||||
... etc`
|
||||
```
|
||||
|
||||
同样的,你要把 Setup 样式包含进来,确保所有东西在编译时都有定义。你不必链接、压缩<!-- concatenate minify --> 或者改变什么文件,除了编译他们和可能要把他们放到 /assets 目录,很容易就找出个模版。
|
||||
同样的,你要把 Setup 样式包含进来,确保所有东西在编译时都有定义。除了编译这些文件,以及可能要把他们放到 /assets 目录,以便很容易找到模版,对这些文件你不必 <ruby>链接 <rt>concatenate</rt></ruby>、<ruby>压缩<rt>minify</rt></ruby> 或者改变什么。
|
||||
|
||||
现在样式表已经差不多了,构建页面应该很简单。
|
||||
现在样式表已经差不多了,构建站点应该很简单。
|
||||
|
||||
### 构建容器
|
||||
|
||||
或许对于标准语言你有自己的选择,这取决于你的项目,有可能是 Twig, Rails, Jade 或者 Handlebars。我认为考虑容器最好的方式是它是否有自己的模版文件,它该有个与名字相应的样式。这样你的项目中,模版和样式的比例就会是个不错的 1:1 的比例,而且你知道哪个文件有哪些东西,哪里有哪个文件,因为它们的命名是有规律的。
|
||||
### 构建组件
|
||||
|
||||
或许对于模板语言你有自己的选择,这取决于你的项目,有可能是 Twig, Rails, Jade 或者 Handlebars。我认为考虑组件最好的方式是它是否有自己的模版文件,它该有个与名字相应的样式。这样你的项目中,模版和样式的比例就会是个不错的 1:1 的比例,而且你知道哪个文件有哪些东西,哪里有哪个文件,因为它们的命名是有规律的。
|
||||
|
||||
现在它正步入正轨,用好 HTTP/2 的多种功能十分简单,让我们做一个模版:
|
||||
|
||||
@ -114,11 +115,12 @@ header {
|
||||
... etc`
|
||||
```
|
||||
|
||||
非常好!你就能在模版里用更简单的方式链接资源,但这也显示出你所要做的仅是在开始构建时,在模版文件中链接一个小小的头部样式。这将允许你的站点仅仅加载特定资源到任意给定页面的容器中,而且,能够设定页面从头到脚的优先级。
|
||||
非常好!在模版里你可能有更简单的方式链接资源,但这里显示你所要做的仅是在开始构建时,在模版文件中链接一个小小的头部样式。这将允许你的站点仅仅加载特定资源到任意给定页面的组件中,而且,能够设定页面从头到脚的组件的优先级。
|
||||
|
||||
|
||||
### 结合在一起
|
||||
|
||||
现在所有的容器都有结构,浏览器将会渲染类似以下的内容:
|
||||
现在所有的组件都有结构,浏览器将会类似以下来渲染它们:
|
||||
|
||||
```
|
||||
`<!DOCTYPE html>
|
||||
@ -157,11 +159,12 @@ header {
|
||||
</html>`
|
||||
```
|
||||
|
||||
这是一个高级方法,但你的项目中可能有调整的更好<!-- finer-tuned -->的容器,你可以用 `<nav>` 容器包含顶部,它会加载自己的样式表。尽你所能地自由发挥,让容器更有作用 - HTTP/2 不会因这些需求而阻碍<!-- penalize -->你。
|
||||
这是一个高级别方法,但你的项目中可能有调整的<ruby>更细致的<rt>finer-tuned</rt></ruby>组件。例如,在头部的 `<nav>` 组件可能要加载自己的样式表。尽你所能地自由发挥,让组件更有作用 - HTTP/2 不会因这些需求而阻碍你!
|
||||
|
||||
|
||||
### 结论
|
||||
|
||||
这只是一个简单的方法,如何用前端思想和 HTTP/2 构建项目,但这仅是皮毛而已。你可能注意到我上面的所用的方法还有改进的空间。请不吝赐教!正如我在第一篇文章中所说的,HTTP/2 可能颠覆自 HTTP/1 以来我们所熟知的某些标准,所以要慎重思考和实践,以便高效使用 HTTP/2 的开发环境。
|
||||
这只是一个关于如何在前端用 HTTP/2 构建项目的基本介绍,仅是皮毛而已。你可能注意到我上面所用的方法有的还有改进的空间。请不吝赐教!正如我在第一篇文章中所说的,HTTP/2 可能颠覆自 HTTP/1 以来我们所熟知的某些标准,所以要慎重思考和实践,以便高效使用 HTTP/2 的开发环境。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -169,7 +172,7 @@ via: https://www.viget.com/articles/getting-started-with-http-2-part-2
|
||||
|
||||
作者:[Ben][a]
|
||||
译者:[GitFuture](https://github.com/GitFuture)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user