Linux 学习目标

熟悉 linux 操作系统,熟悉 linux 操作,熟悉 linux 常用的软件,掌握 linux 对基本命令。
能够独立的维护 lnmp 服务器环境。

一、掌握 linux 的安装

虽然目前云服务基本很少会自己安装了,不过自己学习安装可以了解到很多东西,非常必要。

二、熟悉 linux 的基本操作

  • 目录操作:cd,ls,pwd,mkdir,rmdir
  • 文件操作:cp,rm,mv
  • 文件查看:cat,head,tail
  • 文件编辑:vim 编辑器的常规使用,nano 编辑器的常规使用
  • 文件查找:find 命令的使用。
  • 文件打包:tar,zip,rar 等命令,主要使用 tar 命令。
  • 文件及目录的权限:chown,chmod
  • 磁盘操作:fdisk,mount,umount,mkfs, df,du, fstab 配置等。
  • 服务器状态检查:内存,cpu,进程管理,网络等操作。topfree -mps,netstat
  • 用户操作:用户管理,将用户加入用户组,用户组管理,用户账号管理(了解,学习,但不是重点)
  • ssh 操作:ssh,ssh-keygen,ssh-copy-id,scp:ssh 密钥生成,及远程登录的工具。

三、掌握 linux 的软件安装,配置,启动,管理

  • yum 安装:熟悉(主流)
  • 编译安装:了解(偶尔用到)
  • rpm 安装:了解(偶尔用到)

四、熟悉 linux 环境下常用的服务或软件

  • ssh 服务:了解 linux sshd 服务,生成 ssh 密钥,ssh 登录等。
  • ntp 服务:了解即可。
  • nfs 服务:了解即可,目前用的少了
  • iptables 防火墙:了解防火墙的配置规则,务必了解。
  • crontab:计划任务
  • systemctl:目前主流的服务管理方式。
  • network:网络配置,ifconfig 命令。
  • nginx:学会 nginx 的安装,配置。
  • php-fpm:学会安装,配置 php-fpm,学会安装 php 扩展
  • mysql:除了会安装,配置,还需要学习 mysql 数据库的基本概念,常用命令,查询语法。
  • redis:出了学习安装,配置,还需要了解 redis 的常规操作,基本的数据结构。
  • git:除了会安装,还需要学会 git 的常规操作
  • zsh + oh my zsh: 一个能够提升用户体验及操作效率的 shell。
  • filezilla: sftp 工具,跨平台文件传输工具。
  • nload:用来在内部查看服务器的流量情况(按照网卡查看)
  • nethogs: 用来在服务器内部查看网络使用的具体情况(按照进程查看)
  • sync:文件同步服务

五、服务器管理

  • 日志分析:log
  • 日志切割:rotate
  • 服务器性能:cpu,memory,disk,swap,df,top,netstat

六、shell 脚本

  • shell:了解 shell 脚本的基本语法
  • 常用命令: grep,awk,sed,exec,xargs,wc,sort
  • 尝试编写脚本:定期切分日志,定期备份数据库。

七、其他运维相关

  • 域名解析:A记录,mx 记录,txt记录,cname。
  • 本地DNS:hosts 记录。
  • ping 工具。

八、考核

  1. 独立构建 lnmp 服务器,架设基于 ecms 的 web 站点,做 dns 解析。
  2. 检查 xxx.com web 服务,以及其配置文件,查看 iptables 设置的规则,查看自启动服务,计划任务。
  3. 为 xxx.com 制作 https 证书。
  4. 为 xxx.com 做数据库备份,写脚本做定期备份。
  5. 查看 logrotate 文档,定期切割 xxx.com 的 nginx 日志。
  6. 分析 xxx.com 日志,找出一个小时以内,访问页面最多的 10 个 ip。

一个页面可以设置多个关键词么?

谷歌并不关心你设置 1 个关键词或 10 个。你面临的问题是,在所有其他因素都相同的情况下,一个只针对页面上一个单词的竞争对手总会击败一个针对多个单词的页面。

搜索引擎中的排名纯粹是一场竞争。需要全力以赴,尝试排名第一或者合理的位置。

一旦您获得了主要关键字的最高排名,那么您可以尝试变得贪婪并多样化为多个关键字。

composer 切换阿里云镜像

全局

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

取消全局

composer config -g --unset repos.packagist

项目

composer config repo.packagist composer https://mirrors.aliyun.com/composer/

取消项目

composer config --unset repos.packagist

其他命令

composer list 显示所有命令

composer show 显示所有包信息

composer install 在 composer.json 配置中添加依赖库之后运行此命令安装

composer create-project laravel/laravel Laravel –prefer-dist “5.1.*” 创建项目

composer search packagename 搜索包

composer update 更新所有包

composer update monolog/monolog 更新指定包

composer remove monolog/monolog 移除指定的包

composer require monolog/monolog 添加指定包

composer require monolog/monolog:1.19 添加指定包和版本

composer require monolog/monolog=1.19

composer require monolog/monolog 1.19

一、什么是 robots.txt

Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

协议写在robots.txt文件里面。

二、要不要使用robots.txt

1、如果你的网站有部分内容不希望搜索引擎抓取,那么请设置robots.txt
2、如果你的网站全部内容都需要被搜索引擎抓取,可以不设置。
3、一般来说,一些后台文件(如css、js)、用户隐私的文件不用被搜索引擎抓取。
4、如果有些文件频繁被蜘蛛抓取,但是这些文件又是不重要的,那么可以用robots.txt进行屏蔽。

三、robots 协议规则

User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符

Disallow: /文件夹名称/ 这里定义是禁止爬取这个文件夹下面的目录

Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以”.htm”为后缀的URL(包含子目录)。

Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址

Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片

Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。

Allow: /cgi-bin/  这里定义是允许爬寻cgi-bin目录下面的目录

Allow: /tmp 这里定义是允许爬寻tmp的整个目录

Allow: .htm$ 仅允许访问以”.htm”为后缀的URL。

Sitemap: 网站地图的URL 告诉爬虫这个页面是网站地图

四、这里是一个 demo

User-agent: SMTBot
Disallow: /

User-agent: AhrefsBot
Disallow: /

User-agent: Cliqzbot
Disallow: /

User-agent: MJ12bot
Disallow: /

User-agent: DomainStatsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

User-agent: SemrushBot-SA
Disallow: /

User-agent: spbot
Disallow: /

User-agent: *
Allow: /

Disallow: /images/
Disallow: /articletype/
Disallow: /article/
Disallow: /user/
Disallow: /cart/
Disallow: /*.php

Disallow: /comment/list/*
Allow: /comment/list/$

Sitemap: /sitemap.xml

五、robots.txt具体用途

1、一个页面对应多个URL时,应屏蔽多余的URL。

2、如果网站有页面是没有实质性内容的,应该屏蔽掉。

3、如果网站改版删除了大量的页面(404),应该屏蔽掉。

4、如果是UGC网站,用户产生了大量的不良内容,应该屏蔽掉。

5、不希望被搜索引擎索引的内容(后台界面、用户隐私),应该屏蔽掉。

合并某个分支上的单个commit

比如,feature 分支上的 commit 62ecb3 非常重要,它含有一个bug的修改。你现在只需要将 62ecb3 合并到 master,而不合并 feature 上的其他 commits:

git checkout master
git cherry-pick 62ecb3

合并某个分支上的一系列commits

在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。

这种情况下就不要选择 cherry-pick 了,rebase 更适合。

假设你需要合并 feature 分支的 commit 76cada ~62ecb3 到 master分支。

首先需要基于 feature 创建一个新的分支,并指明新分支的最后一个commit:

git checkout -b newbranch 62ecb3

然后,rebase 这个新分支的 commit 到 master(--ontomaster)。

git rebase --onto master 76cada^

得到的结果就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。