网站服务简单部署nginx

1、HTTP请求的报文
1)、请求行: get 从服务器获取数据
post 写入数据到服务器
2)、请求头:
主要包括:主机信息host
用户代理:比如 IE Chrome等
3)、空行:
用来区分请求头和请求主体
4)、请求主体:
get方法时:没有主体
post方法:有具体的请求主体内容
2、HTTP的响应报文
1)、起始行
状态码 返回请求的结果
200 正常
301 永久重定向
302 临时重定向
403 禁止访问 请求合法,预先设置的规则拒绝访问
404 服务器无法找到对应的请求资源
500 内部服务错误
2)、响应头
主要包括:server 服务的名字
字符编码 比如utf-8
context-type 比如 text/html
3)、响应主体
HTML内容
curl -v XX.XX.COM 查看1个访问网站的详细过程
3、HTTP的资源信息
URL:统一资源定位符
URI:统一资源标识符
举例:www.test.com/ceshi/1
URL / URI
资源分为静态资源和动态资源
静态资源:内容时死的,无法交互,请求的内容不会动态变化
动态资源;内容时可改变的,灵活多变。
4、cookie:标识用户身份信息,保存在用户客户端
session:记录用户的一些会话操作 eg:记录用户登录信息
UV 记录独立访问用户的数目
PV:页面访问量
5、网站并发
服务器单位时间内能够处理的最大连接数
6、常用的网站服务软件
处理静态资源的服务:
apache:
安装方式:yum install -y httpd
Nginx:
处理动态资源的服务:
PHP:
Tomcat(java)
Python:
7、安装nginx
01 yum安装
①、从官方安装
先创建官方repo
/etc/yum.repos.d/nginx.repo
内容:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/ r e l e a s e v e r / releasever/ releasever/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

		yum install nginx -y
   ②、从第三方库安装
02、编译安装
  ①、wget http://nginx.org/download/nginx-1.18.0.tar.gz
    解决依赖:openssl-devel pcre-devel
  ②、解压tar xf nginx-1.18.0.tar.gz
  ③、./configure  
		--prefix=PATH   指定程序安装的目录
        --user=USER  设置虚拟用户管理进程
		--group=GROUP 设置虚拟用户组管理进程
	  make install
03、启动nginx
    systemclt start nginx
04、常用文件的位置
	/etc/logrotate.d/nginx 日志轮转配置文件(内容就是普通的logorate配置类试)
	/etc/nginx/*  配置文件
	          /nginx.conf  主配置文件
			  /nginx.d/default 扩展配置文件
	/var/log/nginx 日志文件
	/usr/bin/nginx 命令文件
	/usr/share/nginx/html 站点目录
05、主配置文件nginx.conf详解
    user  www;    #指定worker进程管理用户
    worker_processes  1;  #定义有几个worker进程 建议==CPU核数
    error_log  /var/log/nginx/error.log warn;  #定义错误日志
    pid        /var/run/nginx.pid;  #定义pid文件路径信息
    events {
        worker_connections  1024;  #1个worker的最大同时的连接数
    }
    http {
        include       /etc/nginx/mime.types;  #加载1个配置文件
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
						  #定义日志的格式
        access_log  /var/log/nginx/access.log  main;  #定义日志存储目录
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  65; #超时时间
        #gzip  on;
        include /etc/nginx/conf.d/*.conf;  #加载1个配置文件
    }
06、扩展配置文件nginx.d/default详解 (虚拟主机配置文件)
        server {
            listen       80;    #指定端口号
            server_name  localhost; #指定域名
            location / {
                root   /usr/share/nginx/html; #指定站点目录
                index  index.html index.htm; #指定首页文件
            }
			location /test {  #站点目录下必须有test目录,首页文件放在test目录下
                root   /usr/share/nginx/html; #指定站点目录
                index  index.html index.htm; #指定首页文件
            }
            error_page   500 502 503 504  /50x.html; #优雅显示页面信息
            location = /50x.html {
                root   /usr/share/nginx/html;
            }
        }
	测试配置文件:nginx -t 测试配置文件是否有语法错误
07、nginx进程
    master process   主进程 管理服务正常使用
	worker process   工作进程  处理用户的访问
08、常见错误可能原因
	404 错误 
	1)、修改配置文件中的location
	2)、在站点目录创建相应的目录或文件
	403 错误
	1)、不要禁止访问
	2)、没有首页文件
	500 内部服务错误
	1)、内部程序代码编写问题
	2)、程序服务中文件权限不正确
	502、网关错误
	1)、PHP服务异常
	数据库连接异常
	检查数据库服务
09、搭建多个网站
	1)、在/etc/nginx/conf.d/ 下创建多个.conf文件 里面写入server信息
	2)、创建站点目录和目录下的文件
10、虚拟主机访问的方式
	1)、基于域名的方法
	2)、基于地址的方法
		修改主配置文件
		在后面的inculde /etc/nginx/conf.d/*.conf;上面加上需要优先访问的conf文件
		举例:inculde /etc/nginx/conf.d/www.conf; 表明先看www.conf配置的地址
		当服务器有多个地址时,需要指定某个地址来负责监听客户端的响应
		方法:listen       80;————>  10.0.0.131:80   这种方式来解决 
		PS:nginx涉及到地址修改必须restart重启,reload重启不生效
	3)、基于端口的方法
		修改 listen 80---> 8080
11、虚拟主机安全访问限制
	举例:限制IP地址访问
	location / {
        deny  10.0.0.132;
        allow 10.0.0.0/24;
        allow 172.16.1.0/24;
        allow 2001:0db8::/32;
        deny  all;
    }
12、用户认证访问
	location / {
        auth_basic           "closed site";  #开启认证功能
        auth_basic_user_file /etc/nginx/password/passwd;  #加载用户密码文件  可以用相对路径或者绝对路径 建议相对路径
    }
	  需要创建password/passwd的文件  密码信息必须是密文的
	   htpasswd -c ./htpasswd test 交互的方式生成加密密码
	   htpasswd -bc ./htpasswd test 123456 免交互的方式生成密码
		     -c 创建密码文件
	   修改密码文件的权限 chmod 600 ./htpasswd  chown nginx htppasswd #因为客户访问过来就会压缩成nginx用户(配置文件配置的),密码文件必须给nginx权限
       curl X.X.com  -u user:passwd  
13、nginx搭建文件共享服务器
	1)、编写配置文件
        server {
            listen       80;    #指定端口号
            server_name  localhost; #指定域名
            location /filedir {
                root   /usr/share/nginx/html; #指定站点目录
				auotindex on; #开启目录索引功能
                #index  index.html index.htm; #指定首页文件
				charset utf-8; #解决乱码问题
            }			
	    同时要保证/usr/share/nginx/html/filedir下没有index.html文件,否则默认会显示这个首页文件
	2)、PS:服务器目录共享出来的文件,有可能会被浏览器识别,而不会下载
		    因为:/etc/ngingx/mime.types 里面的所写的文件格式nginx默认会识别。
	3)、解决服务器目录中文乱码问题:
		加上 charset utf-8 字段 见1)的举例。
14、配置文件别名功能
	server_name www.test.com test.com
	注意要配置好解析信息C:\Windows\System32\drivers\etc\hosts
15、nginx的状态模块监控网站状态
    location = /web_status {
        stub_status;
    }
	结果显示如下:
	Active connections: 4   #激活的连接数信息
    server accepts 		handled 	    requests  
			 8 		 		8  	  		   3 
		   发送的连接数  处理的连接数   接收的连接总数
    Reading: 0 	                        Writing: 1 					Waiting: 3 
	nginx正在读取请求报文的数量    nginx正在响应的报文数量  	 等待响应的数量
16、nginx日志
	在/etc/nginx/nginx.conf下
	    error_log  /var/log/nginx/error.log warn;  
	    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
		access_log  /var/log/nginx/access.log  main;
	格式里面难以理解的:http_referer  记录访问者的链接信息  
17、错误页面优雅显示
	location /test {
		error_page 404 /test.jpg
	}
    一定要有对应的目录和文件
18、location的匹配
	1)、精准匹配   优先级最高
		location = / {
		
		}
	2)、默认匹配    优先级最低
		location / {
		
		}
	3)、目录匹配   优先级第三
		location /documents/ {
		
		}
	4)、优先匹配   优先级第二
		location ^~ /images/ {
		
		}
	5)、不区分大小写匹配  优先级第三
		location ~* \. (gif|jpg|png) {
		
		}
19、页面跳转设置
	方法1:新写1个server,设置要跳转的配置
	server {
            listen       80;    #指定端口号
            server_name  www.test1.com; #指定域名
			rewrite ^(.*)$ /www.test.com/$1 break;
            }			
		^ 表示匹配/前面的URL,(.*)表示匹配后面的任意字符
	方法2:使用判断语句来进行跳转
		if ($host ~*  "^www.test.com$")
		  rewrite ^(.*)$ /www.test.com/$1 break;
	PS:curl -Lv xx.xx.com 可以查看多次跳转之后的最后页面
	
20、LNMP架构
	L:linux系统
	注意: selinux fw必须关闭    /tmp目录权限1777
	N:nginx服务   处理静态资源
	M:mysql服务
	P:PHP  处理动态资源
	部署:
	1)、安装数据库软件
		yum install -y mariadb-server mariadb -y
	2)、给数据库root账户设置密码
		mysqladmin -u root password 'root'
		登录:mysql -u root -proot
	3)、启动数据库服务
		systemctl start mariadb.service
		systemctl enable mariadb.service
21、部署PHP服务
    1)、卸载系统自带的PHP
		yum remove php-mysql php php-fpm php-common
	2)、安装PHP软件(需要更新yum源)
		rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
		rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
		yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd  php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
	3)、编写配置文件
		vim /etc/php-fpm.d/www.conf
		user = www
		ps:尽量保持nginx和php的用户保持一致
	4)、启动PHP服务
		systemctl start php-fpm
		systemctl enable php-fpm
22、LNMP架构原理
	nginx(fastcgi_pass)--FastCGI-->(php-fpm -- warpper )--php解析器--SQL
23、实现LNMP之间建立关系(见网站)
	1)、实现ngnix+php建立关系
		编写nginx配置文件
		    location ~ \.php$ {
                root /usr/share/nginx/html/blog;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  #nginx传递给php时 需要携带完整的php文件的目录
                fastcgi_pass 127.0.0.1:9000;  #本地主机的PHP服务
                include fastcgi_params;
            }

	2)、实现PHP+SQL建立联系
24、代码上线
	1)、Git获取
	2)、开源网站代码
		www:www.dedecms.com
		bbs:www.discuz.net/forum.php
		blog:cn.wordpress.org
		wecenter:www.wecenter.com/?copyright
	3)、将下载后的代码放入站点目录
		PS:yum -y install lrzsz 可以通过rz命令快捷复制文件到系统
		PS:注意如果源目录有内容,注意备份
	4)、修改站点目录权限
		chown -R www.www 站点目录
	5)、在sql里面创建数据库wordpress
	    mysql -uroot -proot
		create database wordpress;
		创建SQL用户名和授权
		grant all on wordpress.*   to  'wordpress'@'%' identified by 'wordpress'; 
							库.表		用户		%表示所有主机可以连接			密码
	6)、网站www.blog.com (记得配置hosts)进行傻瓜式配置
	7)、安装到最后登陆时会出现403错误
		 解决方案;修改/etc/nginx/conf.d/blog.conf文件
		 在location / 内的 index  新增加:index.php  这样匹配的时候会访问index.php 从而匹配下面的location
		server {
               listen       80;
               server_name  www.blog.com;
               charset utf-8;
               #charset koi8-r;
               #access_log  /var/log/nginx/host.access.log  main;
               location / {
                   root   /usr/share/nginx/html/blog;
                   index  index.php index.html index.htm;
                   error_page 404 /test.jpg;
            }
               location ~ \.php$ {
                   root /usr/share/nginx/html/blog;
                   fastcgi_index index.php;
                   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                   fastcgi_pass 127.0.0.1:9000;
                   include fastcgi_params;
            }
	错误:
	1)、无法上传大的blog主题(大容量的内容)
		在server下新增配置:
		client_max_body_size 50m;   #默认只有1M,修改成50M.
		修改php.ini里的上传限制
		upload_max_filesize 50m;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值