初识Nginx及其LNMP搭建
Nginx介绍
nginx
www服务软件 俄罗斯人开发 开源 性能很高 web产品 大小780k c语言开发
本身是一款静态www软件,不能解析php jsp .do 最大特点
静态小文件(1m),支持高并发,占用资源少 3w并发,10个进程,内存150M(unix、linux、windows都支持)
crtl -I 域名 返回的http信息可以看到使用的web服务器 其他特点
1、配置简单、灵活、轻量
2、高并发小文件,静态几万并发
3、功能种类多,但是每个功能都不是特别强
4、支持epoll模型,使得nginx支持高并发。apache 使用select模型()
宿舍大妈案例,有朋友来宿舍找你
select即大妈带你逐一挨个去每个房间找(即线性轮回)
epoll即大妈找宿舍人员名单,房间号信息,告诉你房间号(回调callback)
所以大并发连接时select性能就下降
5、nginx可以配合动态服务(fastcgi接口)
6、利用nginx可以对ip限速,可以限制连接数
另外
基于名字端口及ip的多虚拟主机站点
支持rewrite及正则
支持基于客户端ip地址和http基本认证的访问控制
支持http响应速率限制
支持同一ip地址的并发连接或请求数限制 一般网站并发依赖如下
nginx -3w并发
php -
db - nginx服务从大的方面的功能:
a、web服务,邮件服务
b、负载均衡(反向代理)
c、web cache(web缓存),相当于squid(CDN主要使用) nginx的应用场合
1、静态服务(图片,视频)是另一个lighttpd。并发:几万并发html js css flv jpg gif
2、动态服务 nginx+fastcgi方式运行php,jsp,动态并发500-(apache+php lighttpd+fastcgi)
3、反向代理,负载均衡。日pv2000w以下,并发1w以下都可以直接用nginx做代理 (其他代理haproxy软件,F5 ,A10)
4、缓存服务,类似squid varnish ats nginx支持虚拟主机,一个server标签就是一个虚拟机
1、基于域名的虚拟主机 通过域名来区分虚拟主机 应用于外部网站
2、基于端口的虚拟主机 通过端口来区分虚拟主机 内部网站 网站后台
3、基于ip的虚拟主机 几乎不用,不支持ifconfig别名,配置文件可以
2017-05-30
nginx-1.13.1 mainline version has been released.
2017-04-12
nginx-1.12.0 stable version
NGINX安装(1.8.1)
、安装PCRE (Perl Compatible Regular Expressions)
PCRE 中文perl兼容正则表达式,HTTP rewrite module requires the PCRE library
# yum install pcre pcre-devel -y 、安装OPENSSL SSL modules require the OpenSSL library
# yum install openssl-devel -y 开始安装nginx
a、添加用户
#useradd nginx -s /sbin/nologin -M b、配置安装
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx-1.8.1 --user=nginx --group=nginx \
--with-http_stub_status_module --with-http_ssl_module
make && make install
ln -s /usr/local/nginx-1.8.1/ /usr/local/nginx
c、启动
# /usr/local/nginx/sbin/nginx d、查看进程
# ps -ef | grep nginx | grep -v grep
root : ? :: nginx: master process /usr/local/nginx/sbin/nginx
nginx : ? :: nginx: worker process e、查看nginx编译参数及版本
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.
built by gcc 4.4. (Red Hat 4.4.-) (GCC)
built with OpenSSL 1.0.1e-fips Feb
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.8. --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
配置3个虚拟主机实践
#mkdir -p /usr/local/nginx/html/{bbs,www,blog} 用于放置虚拟主机网页目录
#echo "www.gtms.org" > /usr/local/nginx/html/www/index.html
#echo "bbs.gtms.org" > /usr/local/nginx/html/bbs/index.html
#echo "blog.gtms.org" > /usr/local/nginx/html/blog/index.html
#mkdir /usr/local/nginx/conf/extra 用于放置虚拟主机配置文件目录
在extra目录先建立站点配置文件 www.conf/bbs.conf/blog.conf,内容如下
root@node83 extra]# cat www.conf bbs.conf blog.conf
#www.conf
server
{
listen ;
server_name www.gtms.org;
location / {
root html/www;
index index.html;
}
}
#bbs.conf
server
{
listen ;
server_name bbs.gtms.org;
location / {
root html/bbs;
index index.html;
}
}
#blog.conf
server
{
listen ;
server_name blog.gtms.org;
location / {
root html/blog;
index index.html;
}
} #vi /usr/local/nginx/conf/nginx.conf
在http标签段加入以下内容
include extra/www.conf;
include extra/bbs.conf;
include extra/blog.conf; #/usr/local/nginx/sbin/nginx -t 检查ok后# /usr/local/nginx/sbin/nginx -s reload 从另一台主机配置hosts文件进行测试
[root@node82 nginx]# curl 192.168.0.83 通过ip访问默认走第一个配置的主机
www.gtms.org
[root@node82 nginx]# curl www.gtms.org
www.gtms.org
[root@node82 nginx]# curl bbs.gtms.org
bbs.gtms.org
[root@node82 nginx]# curl blog.gtms.org
blog.gtms.org
配置nginx状态页面(--with-http_stub_status_module)
#vi /usr/local/nginx/conf/nginx.conf
在http标签段加入以下内容
include status/www.conf; 在extra目录先建立站点配置文件 status.conf
#status
server {
listen ;
server_name status.gtms.org;
location / {
stub_status on;
access_log off;
}
} #/usr/local/nginx/sbin/nginx -t 检查ok后# /usr/local/nginx/sbin/nginx -s reload 从另一台主机配置hosts文件进行测试
[root@node82 nginx]# curl status.gtms.org #对后端发起的活动连接数,即正在处理的活动连接数
Active connections:
server accepts handled requests Reading: Writing: Waiting: 0 nginx状态参数
server nginx启动到现在共处理了 7个连接
accepts nginx启动到现在共成功创建7次握手,和server相同,说明没丢失请求
handled requests 表示共处理了11次请求
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接.
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中.
NGINX日志
Nginx错误日志
ngx_core_module模块负责http://nginx.org/en/docs/ngx_core_module.html#error_log
Syntax: error_log file [level];
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location
error_log 级别分为 debug, info, notice, warn, error, crit,alert,emerg(不要配置低等级,带来很大磁盘IO,如果日志太多,可以清空再看 Nginx访问日志
ngx_http_log_module模块负责http://nginx.org/en/docs/http/ngx_http_log_module.html
Syntax:
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off; 表示不记录访问日志
Default:
access_log logs/access.log combined;
Context: (一般配置在vhost中)
http, server, location, if in location, limit_except Example:
access_log logs/access_www.log main gzip buffer=32k flush=5s;
For gzip compression to work, nginx must be built with the zlib library.
也可以直接发到远程服务器
access_log syslog:server=address[,parameter=value] [format [if=condition]];
log_format 用来定义记录日志的格式(可以定义多种格式,取不同名字)
access_log 用来指定日志文件的路径及使用的何种日志格式记录
nginx默认注释掉的
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" ' (http_referer从哪过来的)
# '"$http_user_agent" "$http_x_forwarded_for"';(反向代理记录客户端ip)
#access_log logs/access.log main; .$remote_addr 与$http_x_forwarded_for 用以记录客户端的真实ip地址;
.$remote_user:用来记录客户端用户名称;
.$time_local : 用来记录访问时间与时区;
.$request : 用来记录请求的url与http协议;
.$status : 用来记录请求状态;成功是200,
.$body_bytes_sent :记录发送给客户端文件主体内容大小;
.$http_referer : 用来记录从哪个页面链接访问过来的;
.$http_user_agent :记录客户端浏览器的相关信息;
日志实例:192.168.0.82 - - [/Dec/::: +] "GET / HTTP/1.1" "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" Nginx访问日志轮询切割(没有自己的切割工具
简单的日志轮询脚本
vi cut_nginx_log.sh
#!/bin/sh
Dateformat=`date +%Y%m%d`
Basedir="/usr/local/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access_www"
[ -d $Nginxlogdir] && cd $Nginxlogdir || exit
[ -f ${Logname}.log ] || exit
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
写入crontab
* * * /bin/sh /home/script/cut_nginx_log.sh >/dev/null >&
日志分析相关工具:
syslog,rsyslog,Awstats,flume,logstash scrash scribe kafka,storm。ELK=Elasticsearch+Logstash+Kibana
Nginx Rewrite(需PCRE支持)
、指令语法(perl正则)
指令语法rewrite regex replacement [flag]
默认值 none
应用位置 server,location,if 实践:
、增加rewrite规则
root@node83 extra]# cat /usr/local/nginx/conf/extra/www.conf #www.conf
server {
listen ;
server_name black.org;
rewrite ^/(.*) http://www.gtms.org/$1 permanent;
}
server
{
listen ;
server_name www.gtms.org;
location / {
root html/www;
index index.html index.htm;
}
} 、在www目录下创建此文件
[root@node83 www]# cat gtms.html
rewrite 、重新加载
root@node83 www]# /usr/local/nginx/sbin/nginx -s reload 、配置好hosts文件,在浏览器输入black.org/gtms.html
==>网址跳转至http://www.gtms.org/gtms.html
==>显示gtms.html的内容 flag标记:
.last 相当于apache里面的[L]标记,表示rewrite,继续向下匹配新的location URI规则
.break 本条规则匹配完成后,终止匹配,不再匹配后面的规则。
.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。
.permanent 返回301永久重定向, 浏览器地址会显示跳转后的URL地址。 Nginx Rewrite的应用场景,在企业里应用非常广泛(一般开发搞给运维)
、可以调整用户浏览的url,看起来更规范
、便于搜索引擎及用户体验,动态url转成伪静
、旧域名访问跳转到新域名 ,301跳转
、根据特殊变量、目录、客户端的信息(安卓?苹果?)进行url跳转
NGINX之动态服务
CGI & FastCGI
CGI
Common Gateway Interface通用网关接口,用于HTTP服务与其他服务通信交流的一种工具,必须运行在网络服务器上。
性能差,每次http遇到动态程序都需要重新启动解释器,之后结果返回http,高并发不可用,安全性也差,因此诞生了FastCGI
FastCGI
是一个可伸缩的,高速的在http服务器和动态脚本语言间通信的接口(FastCGI在linux下是socket,这个socket可以是文件socket,也可以是ipscoket),主要优点是把动态语言和http服务器分离。
特点:
、是http服务器和动态脚本语言间通信的接口或者工具
、优点是把动态解析和http服务器分离开来,使Ninx专一处理静态请求和向后转发动态请求
、Nginx、Apache、lighted都支持
、接口方式采用C/S结构,分为客户端(http服务器)和服务器端(动态语言解析服务器)
、php动态语言服务端可以启动多个FastCGI守护进程(例如php-fpm)
、http服务器通过FastCGI客户端(例如Nginx fastcgi_pass)和动态语言FastCGI服务端通信(例如 php-fpm)
Nginx FastCGI运行原理
Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。
为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。
当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;
接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作过程,如图
php 5.3.27安装(一般由开发选择版本)
php5.3及以上 编译参数--enable-fpm
php5.2 编译参数--enable-fastcgi --enable-fpm --enable-force-cgi
php5.2 参考http://blog.zyan.cc/nginx_php_v6
、安装lib库
yum install zlib-devel libxml2-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y
=======================如下包改名了
libjpeg-devel====>libjpeg-turbo-devel-1.2.-.el6_5.x86_64
curl-devel ====>libcurl-devel-7.19.-.el6_6..x86_64
=======================检查安装情况
#rpm -qa freetype-devel libjpeg-turbo-devel libpng-devel gd-devel libcurl-devel libxslt-devel libiconv-devel:没有被yum安装,需要需要手动安装 (GNU的libiconv是字符编码转换库。)
mkdir -p /home/tools
cd /home/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../ 安装libmcrypt-devel mhash mhash-devel mcrypt
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo (官方libmcrypt-devel的yum源没有)
#yum install libmcrypt-devel mhash mhash-devel mcrypt -y libmcrypt库非必需安装,但是可能会用 编译安装php php-5.3.29(附5.6编译参数)
tar xf php-5.3.29.tar.gz
cd php-5.3.29
./configure \
--prefix=/usr/local/php5.3.29 \
--with-mysql=/usr/local/mysql \ --with-mysql=mysqlnd这样本地就不需要本地mysql了
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp before make:(如果报错,在make之前做)
find / -name libmysqlclient.so.18
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
==========================
或
echo "/usr/local/mysql/lib">>/etc/ld.so.conf
ldconfig
========================== #make
#make install
查看PHP编译参数
# /usr/local/php/bin/php -i |grep configure
Configure Command => './configure' '--prefix=/usr/local/php5.3.29' '--with-mysql=mysqlnd' '--with-iconv-dir=/usr/local/libiconv'
'--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath'
'--enable-safe-mode' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl'
'--with-curlwrappers' '--enable-mbregex' '--enable-fpm' '--enable-mbstring' '--with-mcrypt' '--with-gd' '--enable-gd-native-ttf'
'--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--enable-short-tags'
'--enable-zend-multibyte' '--enable-static' '--with-xsl' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--enable-ftp'
#ln -s /usr/local/php5.3.29/ /usr/local/php
#cp /home/tools/php5.3.27/php.ini-production /usr/local/php/lib/php.ini
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
#/usr/local/php/sbin/php-fpm
#lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 127111 root 7u IPv4 113033 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 127112 nginx 0u IPv4 113033 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 127113 nginx 0u IPv4 113033 0t0 TCP localhost:cslistener (LISTEN) #grep -Ev "^;|^$" /usr/local/php/etc/php-fpm.conf | grep -v "^$"
[global]
[www]
user = nginx
group = nginx
listen = 127.0.0.1:
pm = dynamic
pm.max_children =
pm.start_servers =
pm.min_spare_servers =
pm.max_spare_servers = 调优参数php-fpm(可以作为生产标准)
[global]
pid = /app/logs/php-fpm.pid 默认注释(可不改)
error_log = /app/logs/php-fpm.log 默认注释(可不改)
log_level = error #notice改为error
rlimit_files = #主进程文件描述符
events.mechanism = epoll #使用epoll模型
[www]
user = nginx
group = nginx
listen = 127.0.0.1:
listen.owner = nginx
listen.group = nginx
pm = dynamic
pm.max_children = #可以创建的子进程的数量
pm.start_servers = #初始的子进程个数
pm.min_spare_servers = #空闲时最少子进程数
pm.max_spare_servers = #最大的剩余空间
pm.process_idle_timeout = 15s; #子进程空闲超时退出时间
pm.max_requests = #每个子进程的最大请求
slowlog = /app/logs/$pool.log.slow
request_slowlog_timeout =
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f @qq.com
fastcgi设置检测
在html/www下建立phpinfo.php
<?php
phpinfo();
?>
在html/www下建立mysql.php
<?php
$link_id=mysql_connect('192.168.0.80','root','rootabcd') or mysql_error();
if($link_id){
echo "mysql successful by gtms !";
}else{
echo mysql_error();
}
?> fastcgi设置
#cat /usr/local/nginx/conf/extra/www.conf
server {
listen ;
server_name www.gtms.org;
root html/www;
location / {
index index.html index.htm;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
include fastcgi.conf;
}
} # /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload 测试ok
网站安全设置
# chown -R root.root blog/
upload server(上传目录权限放给nginx)
# find ./blog/ -type f|xargs chmod
# find ./blog/ -type d|xargs chmod
PHP5.6.22 安装
yum install zlib-devel libxml2-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y mkdir -p /home/tools
cd /home/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel mhash mhash-devel mcrypt -y PHP5.6.22:
yum install openssl-devel -y
tar xf php-5.6..tar.gz
cd php-5.6.
./configure \
--prefix=/usr/local/php5.6.22 \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-opcache \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp
make
make install
ln -s /usr/local/php5.6.22/ /usr/local/php server {
listen ;
server_name blog.gtms.org;
root html/blog;
location / {
index index.html index.htm;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
include fastcgi.conf;
}
}
初识Nginx及其LNMP搭建的更多相关文章
- 5分钟搭建 nginx +php --------------(LNMP)新手专用
5分钟搭建 nginx +php --------------(LNMP)新手专用 2014-11-14 16:48 88876人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允 ...
- 搭建LNMP;搭建WIKI
#!/bin/bash#lnmp搭建#搭建WIKI 1.系统检测,系统环境优化 搭建版本: nginx-1.8.1.tar.gzmysql-5.5.32-linux2.6-x86_64.tar.gzl ...
- 初识Nginx及编译安装Nginx
初识Nginx及编译安装Nginx 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...
- nginx服务傻瓜搭建
nginx服务傻瓜搭建 安装步骤: 一.先准备好相关源码包和程序包,如下图 所有包都在云服务器的/src目录下. 二.安装 1.安装nginx服务器,支持vod stream.fileupload c ...
- 使用Nginx负载均衡搭建高性能.NETweb应用程序二
在文章<使用Nginx负载均衡搭建高性能.NETweb应用程序一>中,让我们对Nginx有了一个初步认识,下面我们将在windows平台下面使用Nginx演示集群部署我们的web应用. 一 ...
- Nginx基础知识之————Nginx 环境的搭建?
本课时主要给大家讲解如何在 Linux 系统下搭建 Nginx 和 Nginx 搭建过程中常见问题的知识,并结合实例让学员掌握 Nginx 环境的搭建. 下载解压: 安装gcc-c++ 从新配置文件: ...
- 【转】Nginx windows下搭建过程
Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...
- Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势
之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...
- [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器
部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...
随机推荐
- 利用sql报错帮助进行sql注入
我们可以利用sql报错帮助进行sql注入,这里以sql server 为例: sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是se ...
- ms17010批量扫描备忘
安装一些依赖: dpkg --add-architecture i386 && apt-get update && apt-get install wine32 rm ...
- php 中英文混合字符串长度计算
(strlen($string) + mb_strlen($string,'UTF8')) / 2;tw 这样计算的
- node.js 实现 AES CTR 加解密
node.js 实现 AES CTR 加解密 node aesctr 前言 由于最近我们在做一款安全的文件分享 App, 所有文件均需要使用 aes ctr 来进行加密,aes key 还有一整套完整 ...
- 微信小程序-饮食日志_开发日志
针对假期作业为父母或者身边的人做一款“小软件”这个课题,由于对 android 开发不熟悉 ,所以决定做一款微信小程序. 项目名称:饮食管理日志 目的:身边的人群对摄入食物热量及消耗不清楚,对健康需求 ...
- win10系统配置java环境及遇到问题的一些处理方法
O1 java安装: 从java官网下载:https://www.java.com/zh_CN/ 安装教程:http://jingyan.baidu.com/article/03b2f78c137 ...
- C++在delete指针后要赋值为NULL
C++标准规定:delete空指针是合法的,没有副作用. 所以我们在Delete指针后赋值为NULL或0是个好习惯.对一个非空指针delete后,若没有赋NULL,若再次delete的话 有可能出现问 ...
- NOIP2016提高A组五校联考4总结
坑爹的第一题,我居然想了足足3个小时,而且还不确定是否正确. 于是,我就在这种情况下心惊胆跳的打了,好在ac了,否则就爆零了. 第二题,树形dp,本来差点就想到了正解,结果时间不够,没打完. 第三题, ...
- Django orm self 自关联表
自关联模型 自关联模型就是表中的某一列,关联了这个表的另外一列.最典型的自关联模型就是地区表.省市县都在一张表里面.省的pid为null,市的pid为省的pid,县的pid为市的ID. class A ...
- TCP三次握手摘要
这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致. 而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足& ...