nginx 反向代理Signalr Websocket,错误500解决方案教程
解决办法 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Cpnnection "upgrade";
解决办法 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Cpnnection "upgrade";
Flask项目部署 web工作原理 nginx安装 添加虚拟主机 uWSGI 静态文件处理 Flask项目部署 web工作原理 客户端 < = > 服务器(nginx) < = > uWSGI < = > Python(Flask) < = > 数据库 nginx安装 源码安装、apt-get install … sudo /usr/local/nginx/sbin/nginx -s reload 添加虚拟主机 1.在nginx的主配置文件最后一个大括号的上面添加: include vhost/*.conf; 2.在conf/下新建文件夹,用于保存所有的虚拟主机配置文件 mkdir vhost 3.vhost目录下新建一个虚拟主机的配置文件(sudo vim idandan.vip.conf) server{ listen 80; server_name idandan.vip; location / { root html/blog; index index.html; } } # sudo vim idandan.vip.conf 4.在html目录下创建blog文件夹,在blog下新建index.html Hello World 5.重启nginx(sudo /usr/local/nginx/sbin/nginx -s reload) 6.添加本地的域名解析,修改文件:(C:\Windows\System32\drivers\etc\hosts) 最后一行添加:139.196.81.238 idandan.vip 7.测试,在浏览器地址栏输入:idandan.vip uWSGI 1.安装:pip3 install uwsgi 2.配置: http: # 采用http协议 socket: # 采用socket协议 wsgi-file # 将数据交给哪个模块 callable # 具体可调用的对象 chdir # 指定uwsgi启动后的当前目录 daemonize # 后台运行,需要指定一个日志文件 # blog.py文件 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hi' if __name__ == '__main__': app.run() 3.简单实例 1.在blog目录下创建blog.py文件,里面写上flask启动代码用于测试 2.启动: sudo uwsgi --http...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
今天学派吧给大家分享一篇关于负载均衡的教程 1. 部署前准备工作 2. Ansible主机与远程主机秘钥认证 3. 安装配置Ansible 4. 编写roles,实现web的部署 5. 编写roles角色部署nginx+keepalived 6. 编写roles角色 7. 其他问题 本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,后端web server使用3台nginx用于负载效果的体现,结构图如下: 1. 部署前准备工作 主机规划 Ansible : 192.168.214.144 Keepalived-node-1 : 192.168.214.148 Keepalived-node-2 : 192.168.214.143 web1 : 192.168.214.133 web2 : 192.168.214.135 web3 : 192.168.214.139 2. Ansible主机与远程主机秘钥认证 #!/bin/bash keypath=/root/.ssh [ -d ${keypath} ] || mkdir -p ${keypath} rpm -q expect &> /dev/null || yum install expect -y ssh-keygen -t rsa -f /root/.ssh/id_rsa -P "" password=centos while read ip;do expect <<EOF set timeout 5 spawn ssh-copy-id $ip expect { "yes/no" { send "yes\n";exp_continue } "password" { send "$password\n" } } expect eof EOF done < /home/iplist.txt iplist.txt 192.168.214.148 192.168.214.143 192.168.214.133 192.168.214.135 192.168.214.139 192.168.214.134 执行脚本 [root@Ansible script]# ./autokey.sh 测试验证 [root@Ansible script]# ssh 192.168.214.148 'date' Address 192.168.214.148 maps to localhost,...
今天给大家带来一篇关于mysql数据库的注入总结教程 基础知识 什么是SQL注入 什么是Mysql MySQL手工注入 手工注入流程 判断注入点 判断查询的字段数 确定回显位 获取信息函数 获取数据库名 获取表名 获取列名 获取数据 写shell 各位大佬。。。这篇文章是个人再练习注入的时候自己总结出来的一部分经验,步骤确实很简单,百度上面确实也能搜的到相关类似的,但关于文章中一些我个人的理解与总结部分肯定是搜不到的。菜鸟初来乍到,如果个人经验比较少或者说总结的不够深入,入不了各位大佬法眼,请各位大佬见谅。菜鸟还是需要不断学习进步,争取后续分享的文章能有更高的一个质量,能入的了各位大佬的眼。。。给各位大佬递茶。。。。 由于新人刚报道不久,大概浏览了一下论坛内的帖子,发现很多都是大佬们分型的工具,以及各种牛逼的渗透过程及思路记录。关于新人的一些简单入门点的资料好像不多(可能新人刚到,不太熟悉如何寻找资料,如果有误还请各位大佬不吝指教,请多多见谅,)。 这篇文章属于个人在学习sql注入时的一部分总结,后续的关于个人sql注入的总结文章也会陆续发出来。如果跟大佬的有重复或者有什么其他问题,请各位大佬及时指出{:6_430:} 。自评TCV=0….. 下面就是正文部分了。 基础知识 什么是SQL注入 A SQL injection attack consists of insertion or “injection” of a SQL query via the input data from the client to the application. A successful SQL injection exploit can read sensitive data from the database, modify database data (Insert/Update/Delete), execute administration operations on the database (such as shutdown the DBMS), recover the content of a given file present on the DBMS file system and in some cases issue commands to the operating system. SQL injection attacks are a type of injection attack, in which SQL commands are injected into data-plane input in order to effect the execution of...
FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具,它拥有运行时配置和永久配置选项。CentOS 7中防火墙是一个非常的强大的功能,本文主要介绍FirewallD常用管理命令。 安装firewalld Centos7自带FirewallD防火墙工具,如果你的系统是最小化安装的,可能就需要自己动手安装firewalld服务。 yum install firewalld firewall-config 运行和停止firewalld systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。我们使用systemctl命令来控制firewalld。 启动防火墙: systemctl start firewalld.service 关闭防火墙: systemctl stop firewalld.service 重启防火墙: systemctl restart firewalld.service 开机时启动防火墙: systemctl enable firewalld.service 开机时禁用防火墙: systemctl disable firewalld.service 查看防火墙运行状态: systemctl status firewalld 配置firewalld-cmd管理防火墙端口 我们使用firewalld的字符界面管理工具firewall-cmd很方便就可以管理firewalld。 显示防火墙状态: firewall-cmd --state 显示防火墙状态: firewall-cmd --state 添加80端口,允许访问80端口,并永久生效: firewall-cmd --zone=public --add-port=80/tcp --permanent 添加服务,允许https访问,并永久生效: firewall-cmd --zone=public --add-service=https --permanent 移除80端口: firewall-cmd --zone=public --remove-port=80/tcp --permanent 重新载入使配置生效: firewall-cmd --reload 查看开放的端口: firewall-cmd --list-ports 当然,你也可以到/etc/firewalld/zones/目录下直接修改xml配置文件。 习惯用centos7以前版本的伙伴都喜欢用iptable来管理防火墙,设置在使用CentOS7后还把系统自带的firewalld服务弃用,转而用老版本的iptable,可我觉得firewalld很好用啊,简单又实在,好东西为什么不用呢。 欢迎大家投稿到我们学派吧
前言 现在很多朋友选择使用了阿里云、如何在阿里云ecs主机上挂载oss存储,在服务器上通过本地文件系统操作OSS 上的对象?阿里云提供一个ossfs的程序,不用我们再次使用api开发, 直接就能使用。步骤比较简单,按照官方文档基本可以完成。 准备条件 您需要有一个ecs云主机,创建Access Key和对应的OSS对象。 安装依赖 yum install automake gcc-c++ git libcurl-devel libxml2-devel make openssl-devel 官方文档还提供安装fuse-devel包。不过因为博主centos 6系统在安装fuse后版本是2.8.3,而ossfs必须要2.8.4以上,所以fuse需要手动安装。 下载fuse 2.8版本,地址:https://github.com/libfuse/libfuse/tree/fuse_2_8_bugfix ,不要使用最新的fuse 3的版本。 # wget https://codeload.github.com/libfuse/libfuse/zip/fuse_2_8_bugfix -O fuse_2_8_bugfix.zip # unzip fuse_2_8_bugfix.zip # cd libfuse-fuse_2_8_bugfix # ./makeconf.sh # ./configure --prefix=/usr/local/fuse # make # make install 安装后确认是否正确,命令类似如下: # export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/local/fuse/lib/pkgconfig # ldconfig # modprobe fuse # pkg-config --modversion fuse fuse安装成功: 安装ossfs 安装和文档差不多,依赖正确后一般不会出现问题。这里我手动安装在/usr/local/ossfs目录,如果需要全局使用ossfs命令在PATH加下目录即可。 # git clone https://github.com/aliyun/ossfs.git # cd ossfs # ./autogen.sh # ./configure --prefix=/usr/local/ossfs # make # make install 挂载卸载 将my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyId是faint, AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou.aliyuncs.com。 如果你是阿里云的ecs,endpoint可以使用内网地址,例如http://oss-cn-hangzhou-internal.aliyuncs.com,减少流量费用。 # echo my-bucket:faint:123 > /etc/passwd-ossfs # chmod 640 /etc/passwd-ossfs # mkdir /tmp/ossfs # ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com 卸载 # umount /tmp/ossfs 优化 挂载成功后,可以和操作本地文件一样操作OSS对象了。在正式用之前最好做下优化,比如开机自动挂载、取消程序扫描这个目录。 自动挂载、修改/etc/fstab 文件,添加如下代码,保存后mount -a挂载。 /usr/local/ossfs/bin/ossfs#my-bucket /tmp/ossfs fuse _netdev,url=http://oss-cn-hangzhou.aliyuncs.com,allow_other 0 0 使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用。修改/etc/updatedb.conf 文件,在PRUNEFS =后面加上fuse.ossfs,在PRUNEPATHS =后面加上挂载的目录。 如果有错误的地方、请给位网络朋友给予回复纠正、 欢迎关注我们学派吧
今天宝塔突然apache启动不了.网站打不开。提示: 报错: Apache配置规则错误: [url=]httpd: Syntax error on line 501 of /www/server/apache/conf/httpd.conf: Syntax error on line 1 of /www/server/panel/vhost/apache/btwaf.conf: Cannot load modules/mod_lua.so into server: /www/server/apache/modules/mod_lua.so: cannot open shared object file: No such file or directory[/url] 系统: CentOS Linux 7.4.1708 (Core) 解决方法 卸载用编译方式重装即可, 如果有疑问可以加入我们学派吧QQ群 81885552
前言 centos 越来越普及了,通过一些面板很多小白都可以使用centos、但是安全方面却不行、今天学派吧整理下 centos安全相关的资料 发布出来、供小白学习、 设置 1 修改网卡为eth0 2 更新系统 3 给/etc/rc.local添加执行权限 4 添加用户hequan 5 禁用selinux 6 关闭防火墙安装iptables 7 修改主机名 8 查看并管理服务 9 设置字符集 10 yum 11 配置sshd 12 加大打开文件数的限制(open files) 13 优化内核 14 时间设置 15 man 中文版 16 vim基本设置 1 修改网卡为eth0 cd /etc/sysconfig/network-scripts/ vim ifcfg-eno16777729 TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.201 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=eth0 UUID=efd17b9a-a5ab-4c94-be62-d2c32eb48a7e DEVICE=eth0 ONBOOT=yes DNS1=202.106.0.20 mv ifcfg-eno16777729 ifcfg-eth0 vi /etc/sysconfig/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 rhgb quiet" #添加 net.ifnames=0 biosdevname=0 GRUB_DISABLE_RECOVERY="true" grub2-mkconfig -o /boot/grub2/grub.cfg #生成启动菜单 Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-e8675ae79abd41309dac42388f8d9116 Found initrd image: /boot/initramfs-0-rescue-e8675ae79abd41309dac42388f8d9116.img reboot ip addr 或者 yum install net-tools #默认centos7不支持ifconfig 需要看装net-tools包 ifconfig eth0 #再次查看网卡信息 2...
前言 今天夜里小编在更新我们学派吧的网站、当发布文章的时候突然提示code “40310032” 这个错误、还是post.php文件。 小编还是排查问题所在。是不是因为采集接口的问题,后来检查并没有故障 后来回想下 这几天网站、服务器、CDN 都操作了什么、 当解决以后。发现问题真的很简单,。是CDN WAF 功能问题、因为我们想安全一点。增加了这个、 当关闭以后就很正常了。 结语 所以在这里提醒下网络朋友,不熟悉的功能不要去修改、尽量做好备份、等
前言 前段时间有网友跟学派吧反馈问题说。WordPress上传文件提示HTTP错误,我们将排查处理过程进行记录。分享出来 原因排查 1. 上传一个十几兆mp4的文件上传进度到达百分之百,会媒体提示http错误 2. 刚开始怀疑是PHP、Nginx的上传大小限制了。但是查看PHP、Nginx配置均配置了1000M vim /etc/nginx/conf.d/default.conf location / { root /data/web; index index.php index.html index.htm; client_max_body_size 000M; } vim /etc/php.ini upload_max_filesize = 000M post_max_size = 000M max_execution_time = 300 3. 查看Nginx erro日志 tail /var/log/nginx/error.log 2018/02/14 09:32:07 [error] 87522#87522: *1 client intended to send too large body: 35016434 bytes, client: 36.111.88.33, server: localhost, request: "POST /wp-admin/async-upload.php HTTP/1.1", host: "117.66.240.116:81", referrer: "http://117.66.240.116:81/wp-admin/media-new.php" 只有下面这一行是最主要的保存信息。以下错误就是body限制大小的问题 client intended to send too large body 4. 将限制大小的设定在http中后上串资源就不会在有限制 vim /etc/nginx/nginx.conf http{ client_max_body_size 1000M; keepalive_timeout 300; } 语录 如果网友遇到问题,也一定不要着急,可以先百度进行查找下资料。QQ群进行咨询、 可以加我们的QQ群 进行一起教程
前言 现在SSL越来越普及了。但是很多朋友不知道如何设置、今天学派吧-给新朋友演示下。 一、系统文件修改 二、后台文件修改 三、安装插件 首先按照自己的项目运行服务器把证书安装好,干货君以腾讯云为例:证书安装指引 – SSL 证书 – 文档平台 – 腾讯云文档平台 – 腾讯云。 干货君使用nginx反向代理,apache作为项目运行服务器为例,修改nginx/conf文件夹下面的nginx.conf(将下方代码块添加到文件中或把文件中443代码块按此方式设置)。 server { listen 443; server_name www.nrgh.org; #填写绑定证书的域名 ssl on; ssl_certificate 1_www.nrgh.org_bundle.crt; ssl_certificate_key 2_www.nrgh.org.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { #项目路径,或反向代理的代码块 proxy_pass http://nrgh; } } 上方搞定在nginx.conf中加入下面这个代码块,你要负载均衡(集群使用)也是在这个代码块中搞 upstream www{ #下方写要代理的ip和端口号,下面ip是乱写的,真实的已隐去 server 111.111.205.11:56; } server { listen 80; server_name http://www.nrgh.org if ($scheme = http ) { #http请求转换为https return 301 https://$server_name$request_uri; } #即所有请求都到这里去找分配 location / { #全局实现80进来的请求,重定向为https了 proxy_pass http://www; #rewrite ^/(.*) https://$server_name/$1 permanent; } } 上面都配置之后,运行 nginx -t 并重启nginx试试效果 接下来说下会出现的问题: 1、上面都搞定之后,wordpress网站可能出现css和js还是走http请求,文章链接走https请求,这时候需要你把wordpress的媒体文件绝对路径替换相对路径,方法如下: 2、wordpress/wp-admin 后台进不去,登录无反应; 3、百度找了很多解决方法,却依然没有解决,甚至搞的连网站都打不开了; 4、等等。。。 一、系统文件修改 路径:网站根目录\wp-includes\functions.php 找到代码 require( ABSPATH . WPINC . ‘/option.php’ ); 在下方添加: add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } add_filter('style_loader_src', 'agnostic_style_loader_src',...
前言 谷歌浏览器一直在推行 https,而今年更新通知 7 月份会将 http 标记为不安全,于是下定决心学派吧启用 https。经过一番折腾,最后终于改造成功,但是最后找了很多 http301 重定向到 https 的规则,很多都只能定向首页,而不能全站 301。最后才找到一个可以用的,分享给大家 htaccess规则 如果是没有htaccess规则,可以直接用以下规则 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> 如果已有如下默认规则, <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # BEGIN WordPress RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # EDN WordPress 注:规则必须加载 # BEGIN WordPress和# EDN WordPress之外 301状态码检测 可以通过站长工具(http://tool.chinaz.com/pagestatus/)进行状态码检测 检测主页和内页同时返回正确的301状态码,可以到百度站长平台进行https验证 验证后很快快照就会更新成https 还有很多其他办法可以实现。也有插件也可以。 欢迎来到我们学派吧站长群 右上角 一起讨论
前言 很多朋友wordpress删除文章时候文章的图片和略缩图源文件并不会从服务器删除,对于强迫症来说这太难受了,去网上搜索了一下,有相关的教程,下面的代码放到主题的functions.php文件中就可以 /* 删除文章时删除图片附件 */ function delete_post_and_attachments($post_ID) { global $wpdb; //删除特色图片 $thumbnails = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" ); foreach ( $thumbnails as $thumbnail ) { wp_delete_attachment( $thumbnail->meta_value, true ); } //删除图片附件 $attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = 'attachment'" ); foreach ( $attachments as $attachment ) { wp_delete_attachment( $attachment->ID, true ); } $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" ); } add_action('before_delete_post', 'delete_post_and_attachments'); /* 删除文章时删除图片附件over */ ps:这些小功能是我在建站过程中的一些需求,所以记录下来,方便下次使用 欢迎各位网络朋友前来投稿,把喜欢碰到的问题解决方案记录下来。以便下次使用。
前言 mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。 1. 常用参数 2. mysqldump 默认参数 3. mysqldump 常用方法 mysqldump是MySQL数据库自带的一款命令行工具,mysqldump属于单线程,功能是非常强大的,不仅常被用于执行数据备份任务,甚至还可以用于数据迁移。 备份粒度相当灵活,既可以针对整个MySQL服务,也可以只备份某个或者某几个DB,或者还可以指定只备份某个或者某几个表对象,甚至可以实现只备份表中某些符合条件的记录。 mysqldump命令创建的是逻辑备份,它输出的结果集有两种格式:一种是将数据转换成标准SQL语句(一堆 CREATE , DROP ,INSERT等语句);另一种是将数据按照指定的分隔符,输出成定界格式的平面文件。 mysqldump 使用参数很多,但是实际上经常用到的并没有多少。下面我们来介绍一下这些参数: mysqldump 具体有多少参数,我们可以使用 $ mysqldump --help 命令查看 1. 常用参数 -?, –help: 显示帮助信息,英文的; -u, –user: 指定连接的用户名; -p, –password: 指定用户的密码,可以交互输入密码; -S , –socket: 指定socket文件连接,本地登录才会使用。 -h, –host: 指定连接的服务器名称或者IP。 -P, –port=: 连接数据库监听的端口。 –default-character-set: 设置字符集,默认是UTF8。 -A, –all-databases: 导出所有数据库。不过默认情况下是不会导出information_schema库。 -B, –databases: 导出指定的某个/或者某几个数据库,参数后面所有名字参量都被看作数据库名,包含CREATE DATABASE创建库的语句。 –tables: 导出指定表对象,参数格式为“库名 表名”,默认该参数将覆盖-B/–databases参数。 -w, –where: 只导出符合条件的记录。 -l, –lock-tables: 默认参数,锁定读取的表对象,想导出一致性备份的话最后使用该参数,会导致无法对表执行写入操作。 –single-transaction: 该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储 引擎,仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交,使用参数–single-transaction会自动关闭该选项。 在InnoDB导出时会建立一致性快照,在保证导出数据的一致性前提下,又不会堵塞其他会话的读写操作,相比–lock-tables参数来说锁定粒度要低,造成的影响也要小很多。指定这个参数后,其他连接不能执行ALTER TABLE、DROP TABLE 、RENAME TABLE、TRUNCATE TABLE这类语句,事务的隔离级别无法控制DDL语句。 -d, –no-data: 只导出表结构,不导出表数据。 -t, –no-create-info: 只导出数据,而不添加CREATE TABLE 语句。 -f, –force: 即使遇到SQL错误,也继续执行,功能类似Oracle exp命令中的ignore参数。 -F, —flush-logs: 在执行导出前先刷新日志文件,视操作场景,有可能会触发多次刷新日志文件。一般来说,如果是全库导出,建议先刷新日志文件,否则就不用了。 –master-data[=#]: 该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。 –master-data选项会启用–lock-all-tables,除非还指定–single-transaction(在这种情况下,只在刚开始转储时短时间获得全局读锁定。又见–single-transaction。在任何一种情况下,日志相关动作发生在转储时。该选项自动关闭–lock-tables。 所以,我在INNODB引擎的数据库备份时,我会同时使用–master-data=2 和 –single-transaction两个选项。 -x, –lock-all-tables: 在导出任务执行期间锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局锁定,并且自动关闭–single-transaction 和–lock-tables 选项。这个参数副作用比较大,这是全库锁定,备份执行过程中,该库无法进行读写操作,不是所有业务场景都能接受的。请慎用。 -n, –no-create-db: 不生成建库的语句CREATE DATABASE … IF EXISTS,即使指定–all-databases或–databases这类参数。 –triggers: 导出表的触发器脚本,默认就是启用状态。使用–skip-triggers禁用它。 -R, –routines: 导出存储过程以及自定义函数。...
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一、防盗链 二、隐藏版本信息 实验要求: 三台虚拟机分别是:linux和两台windows虚拟机,linux虚拟机为服务器,Windows7-1为客户端,Windows7-2为盗链端。 实验步骤: 一、防盗链 1.把httpd、apr、apr-util安装包解压缩到/opt目录中 tar zxvf apr-1.4.6.tar.gz -C /opt/ tar zxvf apr-util-1.4.1.tar.gz -C /opt/ tar zxvf httpd-2.4.2.tar.gz -C /opt/ 2.切换到opt目录中,把解压的文件夹递归复制到apr文件夹中 3.用yum仓库安装gcc 、gcc-c++ 、pcre 、pcre-devel、zlib-devel工具包 4.进行配置文件的配置 5.转换为二进制文件且进行安装 6.开启httpd功能且建立软连 7.在httpd的主配置文件/etc/httpd.conf 下修改监听本地主机的IP和主机名域名 8.开启httpd服务关闭防火墙和增强性安全功能 service httpd start service iptables stop Setenforce 0 9.切换到/usr/local/httpd/htdocs/目录下编辑首页 文件 10.把/opt目录下的图片(game.jpg、error.png)复制到当前目录下 11.打开windows7-2盗链客户端,创建文件添加首页文件和图片且更改为扩展文件,放置于C盘inetpub wwwroot目录中。 12.构建DNS解析服务,安装bind包,编辑主配置文件/etc/named.conf修改监听地址。 13.编辑区域配置文件/etc/named.rfc1912.zones 添加域名和区域数据模块 14.复制区域数据模板到benet.com.zone进行编辑 15.启动named服务 16.在站点目录/usr/local/httpd/conf/编辑vim httpd.conf文件中开启重写模块且引用防盗链规则 17.重启httpd服务,打开Windows7-1客户机就行验证 Service httpd restart 二、隐藏版本信息 1.打开抓包工具进行测试 2.到/etc/httpd.conf中开启default.conf 3.切换到/usr/local/httpd/conf/extra/目录中,编辑httpd-default.conf文件把serverToken Full改为serverToken prod。 4.重启httpd服务,进行验证。 service httpd restart
一. 前言 二. 接下来就是搭博客的过程 三、大功告成 一. 前言 开学之初,我发现Azure上有一个100刀的学生优惠。但在领取这个优惠之后,我却一直没有使用的机会,一是自己不会用,二是没有多余的时间。现在等来了放假,终于可以好好搞一搞了。:joy: 这次搭博客可谓是踩了不少坑: 百度的教程基本上都是废的,只有谷歌的英文教程才是能用的,好气啊 apache2是真难用 php各个版本让人混乱 二. 接下来就是搭博客的过程 1、进入Azure的门户,添加一个Ubuntu的主机,学生优惠的主机为B1S,我使用的是公钥登陆,生成公钥的过程就不说了 2、在网络安全组的入站规则中添加443和80端口 3、接下来是连接主机。可以使用PuTTY或者是MobaXterm,输入ip和用户名,再加上私钥就可以连接了。 4、安装Nginx sudo apt-get update sudo apt-get install nginx 安装完成后可以用以下命令操作nginx sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl enable nginx.service 打开网页看看是否有这样的页面出现,如果有的话就可以进行下一步操作了 5、安装MariaDB sudo apt-get install mariadb-server mariadb-client 对于Ubuntu 16.04有以下命令 sudo systemctl stop mysql.service sudo systemctl start mysql.service sudo systemctl enable mysql.service 输入 sudo mysql_secure_installation 然后进行以下操作 Enter current password for root (enter for none): Just press the Enter Set root password? [Y/n]: Y New password: Enter password Re-enter new password: Repeat password Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y 测试以下密码是否能登陆 sudo mysql -u root...
背景 虚拟主机 fastcgi 部署流程 部署架构 环境 架构图 编译软件 安装开发环境和必要的包 编译httpd 编译php 安装mariadb 配置文件修改 修改httpd主机 修改fast-cgi主机 配置mysql 宿主机的hosts文件修改 安装wordpress和Discuzx 背景 虚拟主机 如今服务器的配置提升明显,单一主机上部署单一网站会对主机造成大量的性能损失,因此web服务虚拟主机的技术应运而生。所谓虚拟主机指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的做法 。虚拟主机可以是“ 基于IP的 ”,这意味着每个网站都有不同的IP地址,或者“ 基于名称 ”,这意味着每个IP地址上都有多个名称,或者“基于端口”,这意味着在同一ip的不同端口上提供不同的网站,通过这些方法使得他们在同一台物理服务器上运行的事实对最终用户来说并不明显。 Apache是第一批支持基于IP的虚拟主机的服务器之一。Apache的版本1.1及更高版本支持基于IP和基于名称的虚拟主机(虚拟主机)。虚拟主机的后一种变型有时也被称为基于主机的或非IP虚拟主机。 fastcgi FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 部署流程 部署架构 环境 3台主机用于分别部署httpd,php和mysql,实现分离 软件版本 架构图 编译软件 这里我们需要编译的软件为httpd和php,mysql可以考虑使用二进制包或者直接官方yum安装 安装开发环境和必要的包 1.安装centos开发工具包 yum groupinstall "development tools" -y 2.安装编译httpd和php需要的包 #部分包需要epel源 #yum install epel-release -y yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y 编译httpd 这里在192.168.99.130机器上编译httpd2.4 1.创建apache用户 useradd -r apache -s /sbin/nologin 2.解压httpd,apr,apr-util源码包,这里需要的包均可在httpd官网下到 tar xvf httpd-2.4.33.tar.bz2 tar xvf apr-1.6.2.tar.gz tar xvf apr-util-1.6.1.tar.gz 3.编译httpd #移动解压的apr和apr-util到指定的httpd源码目录可以省去分别编译3个程序 mv apr-1.6.2 httpd-2.4.33/srclib/apr mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util #编译参数,具体含义可以参考./configure的帮助文档或者官方文档 ./configure \ --prefix=/app/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-included-apr \ --enable-modules=most...
还记得之前想要获取 WordPress 站点的所有文章总数统计网上的教程,以及子凡在某些地方的使用也都是直接使用 SQL 语句直接查询数据来做总数统计,现在相信还真的是费时费力,原因就是不知道 WordPress 还有 wp_count_posts()这样一个函数,具体是哪个版本出来就懒得去看了,反正随时都保持 WordPress 最新版。 其实在很多的 WordPress 主题上都会有一个统计或者文章归档的页面,就需要统计一些 WordPress 站点上已经发布多少文章了,以此来展示自己的站点或者给自己一个统计,当然我们在开发某些特别的功能或者逻辑计算时也可能会用到,子凡昨天就开发一个插件的时候就多次用到了,不想再去写 SQL 来统计,费时费力并且 WordPress 本身就有的功能为什么就不好好利用呢,果断就想起了 wp_count_posts 函数。 wp_count_posts 函数是在 WordPress 中用来统计文章数量的函数,可以统计的类型有文章(post)和页面(page)。并且能够直接统计出文章各个不同状态的数据,使用起来非常的便捷,两行代码即可搞定。 //获取文章数量 $postcount = wp_count_posts(); //获取页面数量 $pagecount = wp_count_posts('page'); 默认是获取的 post 文章类型的,当然如果是自定义类型应该也是可以支持的,这个子凡目前没有测试,不过相信 WordPress 是绝对考虑到了兼容性的,值得注意的是,子凡上面说过了是两行代码,所以上面的例子并不能直接输出,因为 wp_count_posts 函数返回的是一个对象数据,如下。 // WordPress wp_count_posts 函数返回值 stdClass Object ( [publish] => 11 //已发布 [future] => 0 //定时发布 [draft] => 0 //草稿 [pending] => 0 //待审 [private] => 0 //私有 [trash] => 0 //垃圾箱 [auto-draft] => 34 //自动草稿 [inherit] => 0 //修订版本 [request-pending] => 0 [request-confirmed] => 0 [request-failed] => 0 [request-completed] => 0 ) 所以,获取已发布状态文章的完整统计代码如下: //WordPress 已发布文章数量 $count_posts = wp_count_posts(); $publish_posts = $count_posts->publish; 其它的就举一反三,相信也都能看得懂了,子凡就不再过多的赘述。最后在补充一点,有时候我们可能喜欢代码的简单性,所以在写法上面就比较大胆,没有怎么考虑兼容性,一行代码就能搞定,所以在不考虑兼容性的情况下还有以下的一种写法: //WordPress 已发布文章数量,不兼容 PHP5.4 以前 $publish_posts = wp_count_posts()->publish; 子凡比较喜欢用吧,不过使用这种写法请一定保证你的 PHP 版本在 5.4 以上即可正常运行。