网站服务简单部署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; 

原文链接:https://blog.csdn.net/luoaye/article/details/108882729

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享