nginx服务器配置

nginx = ngin +x , engine x : ngin 先后四个, n,php

  1. 有两个配置文件: /etc/nignx/nginx.conf 全局配置文件, nginx/sites_availbe/default配置文件, 是用来配置站点使用 php等应用的...
  2. 在配置 自定义编译安装软件的时候,
    ./configure 命令的选项
    --with-http_stub_status_module: 使用with的时候, 表示的是启用 某个特征功能, with和后面的单词用 横线链接, 然后面的单词要用下划线书写, 一般with 后不须要写等号和内容
    --prefix=..., 和 --user=... 等, 不是由with引导的选项, 要写等号和内容.css

  3. pcre: 跑车热, pc, re: 热, 表示的是perl兼容正则表达式. 若是你不须要使用正则表达式, 你能够不安装pcre, 可是因为httpd 或 nginx要 进行 地址重写rewrite的时候, 就须要正则表达式模块;
    而zlib和 zlib-devel 是用来 提供 压缩和 解压缩的函数和 类 及 数据结构等.
    而nginx 和 httpd 的编译安装和配置 跟 httpd差很少.html

  4. ./configure --with-prce --prefix=/usr/local/nginx --user=www等等前端

  5. 为何要使用代理服务器和反向代理服务器?
    由于若是你的机器直接向目标服务器发送请求, 你的请求可能会被fw给拒绝. 若是向代理服务器发送请求,由代理服务器代替你发送请求并返回你的请求结果.
    代理服务器的目的是让 内网机器 访问 外网的服务器;
    而反向代理服务器 是当外网 机器访问 内网的 服务器时, 为了保护 内网的 内容服务器 的安全, 可让外网机器 先访问 反向代理服务器, 而后让 反向代理服务器来向 内网的内容服务器发送请求...linux

nginx能够作web服务器, 反向代理服务器, 或邮件服务器. 由于nignx的内存占用少, 并发能力很高.ios


  1. linux 中的nobody 用户?
    是linux中的内建用户, 如同win在安装一些系统软件的时候,会自动建立一些内置用户同样.
    nobody是系统内置的用户, 主要是一些系统服务软件好比nignx, httpd, vsftp等的默认的客户端登陆用户同样
    , 他是没法登陆的.相似于win中的匿名帐户anonymous同样
    nobody的id号是 99

/usr/sbin/nologin: 是一个命令, 表示"不能登陆"一般是一些内置用户才会使用这个shell进行登陆.nginx

  1. poll是"选举,投票,民意测验"等, 在linux内部编程的时候, 表示的是io事件队列.
    最开始使用的是select,而后是poll, 而后是 epoll, 它是linux内部网络编程时好比httpd, nignx等网络编程时的 系统调用函数
    好比: int epoll(struct epoll(), struct epollfd...)
    包括 #include <epoll.h>, epoll包括三个部分, epoll.create, epoll.ctl, epoll.wait等c++

  2. 用0~9来表示10个预约义的句柄, 0: 表示标准输入.. . 而要在重定向中, 引用 某个句柄的时候, 则要使用 & 表示 引用. 并且这个句柄的 重定向命令能够直接放在 前面的命令后面. 好比:
    ls a_dir 2>&1web

  3. 重定向和管道的区别?
    管道是表示 链接的 先后 两个命令 | 先后必须都是命令, 表示前一个命令的输出, 做为 下一个命令 的输入.
    而重定向后面是一个文件, 不是命令, 表示命令的输出结果到某个文件, 或表示命令的来源是某个文件. 重定向关联的是 文件,不是命令.正则表达式

dup和dup2函数, 是linux内部编程要使用的 系统调用函数, 包含在 unistd.h 即除了 c的标准头文件外, 还有unix自身使用的头文件.是将一个文件描述符复制成另外一个数值.

在不少系统中, 好比这里的fedora23中, useradd和 adduser的用法 和使用结果 彻底 是同样的. 彻底没必要区分这两个命令.


script:
typescript: 打字稿, 用打字完成的稿子.
script会将shell session的结果所有记录下来, 输入在 默认的 typescript文件中.

在某些命令的 "帮助"信息, 不是 output信息时, 要将这些 假的 控制台输出信息, 重定向到一个文件中, 使用重定向 >, >> 没法实现, 这时, 要使用 script:

script: -a 是表示将信息append到一个文件中, 默认的文件名是 typescript, 也能够指定文件名 -a foo.spt
-t 表示记录时间time信息, 默认的是将 时序信息记录到 错误error句柄, 因此须要重定向: -t 2>time.info


一般 在linux中的 目录后 加斜杠和 不加 斜杠, 一般来讲是没有什么区别的, 只是在一些特别的地方有区别: 好比在seo中, 在http访问中, 一般要加上斜杠, 一般若是要访问的是目录自己, 则不加斜杠, 而要访问的是目录中的内容, 则要加上斜杠!


一般安装一些服务程序的时候, 须要 pcre, zlib, openssl等, 通常这些常见的核心功能的包, 都是安装了的. 只是 他们的 开发包通常是没有被安装的, 好比: openssl-open, zlib-devel的包. 要查看这些包(程序)是否被安装, 只须要用 rpm 进行查看就行了, 好比 rpm -aq | grep 'openssl-devel' 要是严格的整个单词进行匹配的话 , 使用 -w选项: grep -w ....

gcc, gcc-c++ , gcc的库包: libgcc等一般也是被安装的

注意的是, grep为了查询的方便, 默认的状况下, 被查找的内容是不区分是不是完整的单词的, 若是要 严格地区分/匹配单词的话, 就使用 -w选项.

一般, 开源软件的 网址都是以org为结尾的, 少数的是以net结尾的 :好比 nginx.org , zlib.org -> zlib.net , pcre.org

nginx等软件的mainline版本, 和stable版本, legacy版本的区别

mainline是"主力, 主线"版本, 是当前正在作的, 正在开发的版本, 至关于开发版
stable是最新的稳定版, 建议在生成环境中使用部署
legacy是之前的 稳定的老版本.


对于本身建立的目录而言, 咱们之前老是习惯于一级目录一级目录的切换进入, 而事实上是能够一次性的进入多级深目录的.

在使用 su -c 命令的时候, 为了使用的方便, 若是在命令中, 使用了"相对路径"或 "相对路径下的文件名", 那么这个相对路径 是正对 当前 路径而言的, 而不是 针对 root/ 超级用户的路径而言的 想一想也是, 若是相对于 su 来讲, 若是认为 su -c '....' 后面的命令中的路径就是相对于super user而言的, 那么到底是相对于 su的哪一个 路径而言的呢? 因此, 很显然, 这个su -c

后面的命令中的 路径 都是相对于 当前 路径 pwd 而言的. 好比:

[foo@localhost b]$ su -c 'cp ab /opt'
Password: 
[foo@localhost b]$ pwd
/home/foo/Downloads/a/b
那么 上面的那条 命令 就是将 当前 的 a/b路径下的 ab文件 拷贝到 /opt中

关于linux下文档的命名技巧, 最好是用 英文字母开头, 中间能够有包含汉字. 这样在使用 自动补全的时候, 能够只经过输入英文字母就能够补全 搜索到了

好像, 在vim中进行设置的 命令, 都是以set开头的, 尚未 不是 以set开头的命令, 除了map映射.

1 mvc不是哪个框架所臆想出来的, 而是经过总结网站的结构, 开发过程而提出的规律.由于网站
的业务逻辑是经过后台即controller控制器来实现的, 它只有一个目的和做用, 就是: 得到变量
或数据的值, 获得经过业务逻辑的过程的数据.
2 视图view, 实际上就是模板, 也就是传统开发中的前台页面, 只不过不是用html结尾的, 而是用
tpl结尾的. 他就是用来表现/显示数据的. 就是把后台的业务逻辑数据 (经过 传递参数的方式, 以动态变量的 方式传递到前端页面),
而后, 前端页面/ 网页中, 在 关键 位置, 把 后台 传递 过来的 参数 /变量 嵌入 页面 中 显示出来. 你能够经过不一样的方式/样式来呈现, 这个不一样的样式就是css,
它只是对数据的装饰打扮同样. 而数据自己其实仍是那一个/同一个.
3
4 模块module就是数据库, 不管是前台仍是后台的基石都是数据库, 数据都是存储在数据库中的
5

FQDN: fully qualified domain name. 彻底限定域名, 全称域名, 全程域名, 全域名, 是 主机名+域名. 是主机名的完整表示, 表示了主机在整个域名树中的位置.
qualify: v. 使...有资格, 使合格; 限定, 限制. fqdn: 就是彻底限制域名, 就是说这个主机名经过域名就彻底限定了. 是惟一肯定的了.

要修改主机名? 设置/修改本地机器的域名?
三种方法:

  1. hostname: 临时型的修改, 修改后在每一个地方包括另起一个terminal, 也能看到新修改的hostname. 可是 重启后失效.
  2. 在/etc/sysconfig/network中, 添加: hostname="..." networking=yes... 这个要重启后永久生效
  3. 要添加本机在本地的 域名: 能够在 /etc/hosts文件中, 直接添加你要设置的本地机器的 域名, 好比: echo '127.0.0.1 foo.bar.com' >> /etc/hosts 这时候,访问你添加的本地域名就能即时生效
  4. 要求主机名要简单易记, 并且要有实际意义. 如同变量名的命名同样

为何有时候php页面中不能使用 ROOT_PATH, 而要直接使用 dirname(FILE)?

其实, ROOT_PATH自己就是用 define('ROOT_PATH', dirname(__FILE__)) ; 来定义的. dirname是php语言自己所提供的一个函数, 给出当前文件所在的 绝对路径字符串.
若是在某些页面中, 不能使用这个路径, 多是由于 定义 ROOT_PATH的文件 没有被 包含到? 这时你就只好直接些dirname了.

其实, 在tp开发中, 为了表示 某个文件的路径,(是绝对路径) 有多种方法 , 你能够直接写dirname... 只是这种写法看起来不"高大上"(实际上是同样的), 若是用 预先定义好的路径常量, 可能看起来 1. 要简洁些, 2. 要更明确些, 一看就知道其 "语义" , 好比 APP_PATH, ROOT_PATH

在任何一种编程语言中, 何时, 要加引号?

都是同样的 : 对于一个 字符序列, 只有多是三种状况: 一是变量, 二是常量, 三是 字符串; 因此, 若是你不能说出它是 变量名, 也说不出是常量, 那么它就只能是 字符串了. 既然是字符串, 那就该用 单引号了!

什么叫 可变的, 依据条件来变化/肯定的css样式?

并非指 css名称能够变化, 在定义 css的样式的时候, 它必须是肯定的.
所谓css 随外在条件的变化而不一样, 是指: 在 模板文件中, 咱们能够在 if结构中, 根据外在条件, 来指定 class 类的名字 . 也就是说, 若是条件不一样, class类的名字就不一样, 或者class类的名字 是一个 变量 字符串...


  1. aria: [a:ri2], 咏叹调, 就是关于 阅读, 关于 障碍人士的阅读辅助器, 实际上就是 "关于障碍人士的 无障碍阅读" 提供支持, 要求达到dot(无障碍阅读/department of transportation)网站才能上线. 好比: aria-label, aria-hidden等属性. 这些属性基本上是没有什么做用的, 像国外的一些框架如bootstrap等用得比较多.

  1. 正则表达式中的括号有两个做用, 一个是分组便于后面的反向引用;二是便于理解和查看, 这时即便没有反向引用也能够这样作
    正则中的点号, 表示 除了 回车符以外的 任意字符
    所以, 要表示 点号自己, 就须要用 转义: 反斜杠 .

  2. nginx和apache都支持rewrite, 首先都须要安装 pcre包, 由于这个正则包提供了rewrite地址重写的正则匹配功能, 好比: ~, ~, !~ , !~
    rewrite的设置包括:
    set 设置变量
    if 根据条件知足时肯定 正则重写功能, 条件运算符包括: =, !=, ~ (正则匹配)等
    return 返回
    rewrite: rewrite语句的格式包括: 正则表达式 替换地址 标志
    其中, 标志有四种:
    break, 表示替换后的地址是最终地址了, 再也不进行正则检查
    last,表示替换后的地址是最后地址,可是还能够继续进行正则替换
    redirect, 表示临时性的重定向302
    permanent, 表示永久性的重定向301
    rewrite的重写有一个特色,是能够进行重复、递归的正则替换检查和重写, 即正则后的地址还能够进行正则替换

301和302重定向主要是针对搜索引擎,爬虫,seo网站优化和排名等
搜索引擎一般对302(临时性)重定向不友好, 302重定向被认为是k站,黑帽优化,会影响网站的排名;
规范化的重定向,是发生在 网站域名发生变化/更改的场合,使用301重定向,搜索引擎会把原网站的权重、排名等通通转移到新的域名。

  1. linux系统这一些经常使用的工具包,好比libxml, libxml2等, 这些包一般是 用C语言写的, 用来提供了一些操做xml文档(中的节点等 xpath等)、档案的函数、 类、 和数据类型等。
    这些基础的通用包, 每每被不少应用软件如php, apache,nginx等所依赖。

  2. linux中配置文件的格式, [key] symbol [value] 其中的symbol有多种方式, 有的是用空格, 有的是用等号,有的是用冒号, 有的是用大括号, 主要是看你的解释器的写法。

有三个地方修改、配置你的本地机器的域名:
hostname,
/etc/sysconfig/network
/etc/hosts


  1. 要想作到网页内容能够管理和控制, 那么在写代码的时候, 就要作到每一部分的内容, 你都可以说得出来,好比是描述,是缩略图,是标题等等, 而不是本身为所欲为的写,由于网页上的一切, 除了固定的、静态的、不变的部分,其余一切都要用数据库来存储和管理。
    前端页面的内容, 要作到 模块化, 分段化, 而后每一个item要作到 语义化, 结构化

先后台的设计, 都是基于数据库的, 后台的内容模块包括:

 后台设计,实际上很大一部分工做, 就是把对数据、数据库的操做 可视化了 而已,即好比建立表,增长字段等操做,从数据库的操做界面移动到 网页上来了。 固然这个一个方面是 为了后台数据库的安全,(不能让人轻易地随便的直接操做数据库, 经过表单的方式能够对将要进入数据库的数据进行安全预处理), 另外一方面,在网站建设好以后,交给客户使用时不少客户并不知道这些知识, 因此只好用可视化的方式来管理。

  • 一个模块的增长页面, 实际上就是在数据库中建立一个表。
  • 表中的 字段 的 增长详情表单, 相似于数据库可视化管理工具(如phpmyadmin中的字段增长页面表单)
  • 最后, 表建立好了, 字段增长好了, 你要把这些字段的详情 用一个表格列出来, 同时在这个表格中, 你应该有对 每一个表、每一个字段的能够操做的(如编辑、删除等)button连接

  • 后台管理系统中, 还应该有关于前台 页面的 生成方式, 以及一些图片的上传 处理、规定表单等。

实际上, 不少的 前端js ui插件,组件,在后台管理系统中用得是比较多的, 好比表单, 好比标签页组,好比左边导航栏的折叠组件等.


在配置 nginx反向代理服务器 : proxy_pass 127.0.0.1 ... 时, 一般只需加密 从客户端到代理服务器 这一段的内容,使用ssl(或openssl协议)采用https 访问, 而从代理服务器到内网的内容服务器, 能够不用加密不使用ssl, 这样不会损害性能performance(表现)。


若是使用的是 x86_64位的chrome安装包rpm, 也就须要64位的 c++和库: libstdc++.so(64bits)...
chromium是开源的,而chrome则不是开源的.
chromium是开发版,是试水的, 几个小时就有新版本出现? 金丝雀版->dev版->beta版->stable版.


Rlogin: remote login, 是unix系统上的主机之间的 远程登陆.因此在linux和win上比较少见
若是你在安装linux/unix等系统的机器 跟前 经过控制台进行登陆, 叫本地登陆. 其实都没有必要,能够经过 网络, 实现远程登陆. 远程登陆的仍是 机器的 shell, 控制台.
ssh: 是 secure shell 安全的shell壳 安全的终端.
ssh跟telnet和rlogin相比, 两个优势, 一个是它是对 用户名和密码进行了加密的,不像telnet和rlogin是明文, 可能会被截获产生dns欺骗和ip欺骗. 第二他对终端传输的数据内容进行了压缩和解压缩.

putty: [pati],或读[puti].
linux服务器自己一般都开启了ssh server 服务.
而终端只要有ssh的终端软件, 经过ssh协议均可以登陆到服务器的shell上. 这种ssh client软件不少. 像 linux(本身就自带ssh客户端, 直接用 ssh linux_server_ip就能够了), xshell, putty, secureCRT等.并且这些软件一般 还不仅是 只支持 ssh协议, 还包括支持 telnet, rlogin, serial等 远程登陆协议.


ecs: elastic compute service: 可伸缩计算服务. 就是web server服务. 云服务器所使用的操做系统可能在不一样的时期不一样的地区都有所不一样,好比有debian, centos等
开源不等于免费, 虽然都是free.
开源是为了保证代码的质量 "要多少双眼睛才能驯服复杂性?"
而收费主要是针对 企业用户的 服务.

若是考虑后期使用 国内的云服务器, 仍是要在 centos上布置, 主要是6.x和7.x的版本, 如今用得最多的仍是6.5的版本! 由于如今的云你用最低配置的话, 大概是 1核, 1~2GB的内存, 1~2M的带宽,因此用 centos7(只有64位的, 适用于独立的大内存的主机)并无优点. 同时64位的系统安装32位的软件可能仍是存在些问题.

连贯, 一致. cohere [k2u' hi2]: 先后连贯, 先后一致, 粘接... n. co'herence: the varous elements of the novel fail to cohere. has a surprising sense of coherence.

livecd livedvd bindvd的各版本的区别?
bin-dvd是硬盘安装版, 必需要安装到硬盘主机上才能使用; live是活的, 现场直播的, 是刻在光盘上的, 能够直接从光盘上启动, 免安装的. livecd和livedvd的区别只是前者的体积更小, 更易于维护

下载centos的地方不少:
好比: www.centoscn.com/centosSoft/isos, 这个中文站
mirrors.163.com 国内的开源镜像站
vault.centos.org centos的保鲜库就是存放以往版本的
iso是镜像, ios是操做系统.
好比 http://vault.centos.org/6.5/isos/i386/

而这些centos的保险柜为了 下载分压, 都是保持在 kernel.org的主机上的. kernel.org是linux开源组织 组件的一个 存储/管理内核的一个组织. 他的主机是: archive.kernel.org/centos-vault/

linux中的包的命名: 用点号来链接各个单词, 若是一个单词由多个部分组成, 中间用横线- 来链接, 好比: centos-6.5-i386-bin-dvd1.iso

centos/rhel的生命周期(即厂家服务支持, 安全更新等)是7年, 甚至能够延长到10年. 而其余ubun server /deb等好像是 18个月, 并且硬件驱动兼容性好(各个主流硬件厂家早就将硬件送到centos, redhat去测试了), 软件也比较多, 没有洁癖, 能够安装/包含非开源软件...

为何要采用 单颗多核而少用 多颗单核的cpu呢?

可能在设计和实现的时候, 主要有几个考虑

  1. 是若是设计多颗单核的cpu, 那么每一颗cpu都须要供电 电路 \与主板总线的链接 线路, 这样在主板的尺寸更大, 使用的元件更多, 在排线布线的布局上困难更大.
  2. 更重要的是, 在提供一样 的计算能力上, 单颗多核的cpu比多颗单核的cpu更高效: 好比现代软件常常要进行的 多线程运行, 若是是后者, 则各个线程只能在分散的 多个cpu上运行, 各个线程之间要交换数据只能经过cpu外部的总线进行交换, 而若是是单颗多核cpu, 各个线程都是在同一cpu内部运行, 数据交换在同一个cpu内部进行, 这样交换数据的速度就远远比经过外部总线的速度更快;
    二是, 各个线程之间共享数据的问题, 单颗多核可以很好地共享数据, 共享单颗cpu的cache. 可是若是是多颗cpu的话, 共享cache的话, 就难以保证各个cache之间的 数据的 一致 coherence.
    因此 如今的cpu体系可能是 单颗多核的.
    参考知乎上的: 这段话:
架构能够变幻无穷,面向需求、综合考量是王道。来,简单举个例子。假设如今咱们要设计一台计算机的处理器部分的架构。如今摆在咱们面前的有两种选择,多个单核CPU和单个多核CPU。若是咱们选择多个单核CPU,那么每个CPU都须要有较为独立的电路支持,有本身的Cache,而他们之间经过板上的总线进行通讯。假如在这样的架构上,咱们要跑一个多线程的程序(常见典型状况),不考虑超线程,那么每个线程就要跑在一个独立的CPU上,线程间的全部协做都要走总线,而共享的数据更是有可能要在好几个Cache里同时存在。这样的话,总线开销相比较而言是很大的,怎么办?那么多Cache,即便咱们不心疼存储能力的浪费,一致性怎么保证?若是真正作出来,还要在主板上占多块地盘,给布局布线带来更大的挑战,怎么搞定?若是咱们选择多核单CPU,那么咱们只须要一套芯片组,一套存储,多核之间经过芯片内部总线进行通讯,共享使用内存。在这样的架构上,若是咱们跑一个多线程的程序,那么线程间通讯将比上一种情形更快。若是最终实现出来,对板上空间的占用较小,布局布线的压力也较小。看起来,多核单CPU完胜嘛。但是,若是须要同时跑多个大程序怎么办?假设俩大程序,每个程序都好多线程还几乎用满cache,它们分时使用CPU,那在程序间切换的时候,光指令和数据的替换就要费多大事情啊!因此呢,大部分通常我们使用的电脑,都是单CPU多核的,好比咱们配的Dell T3600,有一颗Intel Xeon E5-1650,6核,虚拟为12个逻辑核心。少部分高端人士须要更强的多任务并发能力,就会搞一个多颗多核CPU的机子,Mac Pro就能够有两颗


单颗多核和多颗单核:   就像你要去公司上班而不是在家里上班同样。去公司上班(多核CPU)的话,资源共享(共享缓存),沟通方便(CPU内数据传输速度远大于总线速度)。
除非信息技术(类比总线)上有突破性进展,不然咱们仍是天天要挤公车去公司上班(多CPU方案没法取代多核

在新的版本中, 使用了应用分组.
之前是使用多个 应用程序, 平级的, 好比最多见的两个独立的应用程序, 前台和后台, Home和Admin.它们是平

级的, 且目录跟tp是在同一个地方.

而如今分组后, Home和Admin是做为 一个大的/总的应用程序 App下的两个应用分组,是两个目录. 而App跟

ThinkPHP是平级的.


NetSarang公司提供安全的 链接解决方案. 主要包括: xshell5, xftp5, xlpd5, xmanager5 都是链接的客户端软件.
为何xmanager没有自带xftp? 实际上, xftp等跟xshell是独立的软件, 须要独立的下载和安装. 可是他们的操做界面(包括菜单/工具栏/设置等都基本上是同样的)
它只是带了 xbrowser, xconfig等, 再xbrowser中能够管理xshell和xftp。

阿里云申请?
idc: internet data center: 网络数据中心, 一般是一些



hacker: 黑客
cracker: 骇客


/etc/services文件的做用是 表述了/规定了 系统中的服务名称 和它们使用的端口号 和 协议 之间的 对应关系.这个文件能够被其余应用程序所读取并使用,好比 获取某个端口所正在使用的服务名称, 或者使用服务名称来代替端口号,更容易记忆. 也要求/推荐/建议 自开发的服务程序, 在这个文件中 写上本身的服务名称和端口号之间的对应关系. 这样便于管理.

格式是: service-name port/protocol [aliases...] [ ## comments]

相关文章
相关标签/搜索