1. 准备 LNMP 环境 2. 安装wordpress 3. 配置 一开始搭建的hexo博客,hexo博客有个缺点,他是用nodejs的服务器,不太稳定,服务器经常挂。所以最后还是决定用nginx+php-fpm搭建一个wordpress站点,这样网站就比较稳定。废话不多说,直接进入主题。 我是用的centos的服务器,下面的一些个命令也是centos的命令,不过其他的也相差不大,主要的是步骤正确就好。 1. 准备 LNMP 环境 安装nginx 使用yum安装nginx yum install nginx -y 安装完之后修改配置文件 /etc/nginx/nginx.conf ps:要是配置文件不在这个位置的,可以利用find命令和whereis命令进行查询,参考我另外两篇博文 配置文件参考下面进行更改: 这一步,只需要两处,去除对 IPv6 地址的监听,修改要监听的域名,即: #listen [::]:80 default_server; server_name www.***.com; 修改完了之后,就可以启动nginx,查看自己网站首页了,应该看到的是一个nginx测试页面。 启动nginx nginx 将 Nginx 设置为开机自动启动: chkconfig nginx on 安装php+php-fpm+php-mysql 这一步有两个选择,安装php7.0版本或是老的版本 安装老的版本比较简单: yum install php-fpm php-mysql -y 要是想安装php7.0版本,要先添加源,再安装: 如果是centos6,那么执行以下命令 CentOS/RHEL 6.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 如果是centos7.x,那么执行以下命令 CentOS/RHEL 7.x: 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 安装php和插件: 可以像上面一样,需要哪个装哪个,也可以全部安装 全部安装: yum install php70w php70w* 安装需要的: yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel 具体可以参考:帐号登录 完了之后启动php-fpm: service php-fpm start 安装mysql yum install mysql-server -y 行不通可参考:centos7 mysql数据库安装和配置 2. 安装wordpress yum install wordpress -y 安装完成后,就可以在 /usr/share/wordpress 看到 WordPress 的源代码了。 由于上面的安装方法默认安装的是英文版,所以我们还要下载中文语言包,如果不需要中文安装可跳过此步骤 wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz tar -zxvf wordpress* mv -f wordpress/wp-content/languages /usr/share/wordpress/wp-content/...
1、准备 2、Nginx配置 3、安装WordPress 4、启用多站点功能 5、设置域名映射 6、结果 WordPress的多站点功能允许安装一个WordPress程序的情况下,实现多个站点(也就是一套程序,可以绑定多个域名或子域名)。 每个站点拥有独立的主题、插件、文章以及页面。 这样可以极大的减少了维护和更新多个WordPress安装程序的麻烦, 并且,每个站点之间又能够相互独立,互不影响。 WordPress multisite有两个方式:子目录和子域名,这里我们主要介绍子域名方式。 也就是说,在主域名的基础上,我们会创建一个子域名,例如:http://shop.awaimai.com。 同时,我们可以映射这个子域名到一个一级域名如:http://shop.com, 对于访问者来说,访问的就是独立的一级域名。 1、准备 WordPress介绍其多站点功能页面:站点网络管理页面 接着,我们准备几个域名,如下: 站点一:www.awaimai.com(主域名),这是安装WordPress时用的域名 站点二:blog.awaimai.com,二级域名 站点三:news.com,映射的二级域名 news.awaimai.com 站点四:shop.com,映射的二级域名 shop.awaimai.com 注意:WordPress安装后请勿擅自在后台修改域名,即使是把有www改成无www,或者反过来,都有可能引起 redirected you too many times. 错误,详情请看[参考资料2] 然后,登录域名服务商的解析页面,把以上域名的A记录全部设置为WordPress安装的服务器IP。 也可以在本地电脑测试,可以直接修改hosts文件,加入下面1行: 127.0.0.1 www.awaimai.com blog.awaimai.com news.com shop.com 2、Nginx配置 在Nginx配置目录下创建新建一个配置文件,如下: $ sudo vi /etc/nginx/conf.d/awaimai.conf 内容为: server { listen 80; server_name www.awaimai.com blog.awaimai.com news.com shop.com; root /usr/share/nginx/wordpress; index index.php; location / { try_files $uri $uri/ /index.php?$args ; } location ~ /favicon.ico { access_log off; log_not_found off; } location ~ \.php$ { try_files $uri /index.php; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } access_log /var/log/nginx/$host-access.log; error_log /var/log/nginx/wpms-error.log; } 这里我们使用$host变量可以让Nginx为每个域名生成独立的访问日志, 如:news.com-access.log 和 shop.com-access.log。 但是error日志不能用$host变量,所以所有的错误会记录在一个文件里面。 再重启Nginx服务器: $ nginx -s reload 3、安装WordPress 按照WordPress正常安装步骤安装WordPress。 4、启用多站点功能 用文本编辑器打开 wp-config.php 文件,在注释:/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */之前加上如下一行: /* Multisite settings */...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
WordPress 3.0以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。多站点模式可以使用多个不同的域名绑定,避免了在同一个服务器安装多个WordPress的尴尬,管理多个网站非常方便,下面就介绍一下安装和启用多站点的操作方法。 开启网络配置 在网站根目录下的 wp-config.php 添加: define('WP_ALLOW_MULTISITE', true); 配置多站点模式 刷新网站后台,访问 工具 > 配置网络,根据自己的需要选择“子域名”或者“子目录”模式,然后点击“安装”,如果需要绑定域名,可以选择“子域名”模式。之后系统会生成两段代码,一段添加到网站根目录下的 wp-config.php 中,一段添加到网站根目录下的 .htaccess 文件中。 添加网站域名 服务器Apache设置为泛域名解析,然后在 我的站点 – 管理网络 – 站点 里,添加新的站点,选一个子域名添加站点。 添加好了以后,在子域名上点编辑,把里面的“站点地址(URL)”修改为指定的独立域名,然后将该独立域名DNS绑定过来,即可完成配置。 设置COOKIE 在网站根目录下的 wp-config.php 添加: define( 'COOKIE_DOMAIN', '' ); 这步操作很重要,如果不设置的话,之后登录网站后台会提示“错误:Cookies被阻止或者您的浏览器不支持。要使用WordPress,您必须启用Cookies。” 之后,用户就可以用一套WordPress程序来管理多个不同的站点,可以同步调整主题和插件,这些站点可以是完全不同的域名,管理起来非常方便。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 禁用文章修订历史版本 禁用自动保存功能 禁用自动草稿功能 下面的方法需要修改源文件所以在打开每一个文件之前,记得一定要先做好备份! 禁用文章修订历史版本 1.打开 wp-config.php 文件 2.在 $table_prefix = \’wp_\’; 前面添加下面的两行代码: define(\'WP_POST_REVISIONS\', false);//禁用历史修订版本 define(\'AUTOSAVE_INTERVAL\', false);//自动保存时间设置为一天 如下: 禁用自动保存功能 1.打开 wp-admin/post.php 文件,搜索 if ( \’attachment\’ !== $post_type ) ,找到以下代码 150-151行 if ( \'attachment\' !== $post_type ) wp_enqueue_script(\'autosave\'); 将这两行用注释符号//注释即可!如下: 2.打开 wp-admin/post-new.php 文件,搜索 wp_enqueue_script( \’autosave\’ ); (69行),在代码前面加//将其注释或删除 禁用自动草稿功能 打开 wp-adminincludespost.php 文件,搜索 if ( $create_in_db ) { 找到以下代码 597行 $post_id = wp_insert_post( array( \'post_title\' => __( \'Auto Draft\' ), \'post_type\' => $post_type, \'post_status\' => \'auto-draft\' ) ); $post = get_post( $post_id ); 修改为: global $current_user,$wpdb; $post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = \'auto-draft\' AND post_type = \'$post_type\' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); if (!($post) ) { $post_id = wp_insert_post( array( \'post_title\'...
有运维或服务器方面的需求,可以联系博主 QQ 7271895 简介 受影响的版本 攻击带来的影响 技术细节 临时修复程序 时间线 总结 导语:WordPress是网络上最受欢迎的CMS。在这篇文章中,我们将讲述在WordPress内核中引入一个经认证的任意文件删除漏洞,这个漏洞可能会导致攻击者执行任意代码。 简介 WordPress是目前网络上最受欢迎的CMS。根据w3tech的资料显示,约有30%的网站都在使用它1。这种广泛的采用,也使其成为了网络犯罪分子非常感兴趣的一个目标。在这篇文章中,我们将讲述在WordPress内核中引入一个经认证的任意文件删除漏洞,这个漏洞可能会导致攻击者执行任意代码。在7个月前,我们向WordPress安全团队报告了这个漏洞,但至今依然没有得到修复。由于经过了这么长时间,WordPress官方都没有发布任何补丁或具体修复计划,所以我们决定公开这个事件。 受影响的版本 截止到本篇文章发送时,还没有补丁可防止此漏洞的使用。任何WordPress版本(包括当前的4.9.6版本),都容易受到该漏洞的影响。 如果要利用该漏洞,攻击者需要事先获得编辑和删除媒体文件的权限。因此,该漏洞可以通过对与作者权限相同的用户来提升权限,或者通过其他漏洞的错误配置来利用。 攻击带来的影响 利用此漏洞,使攻击者能够删除WordPress安装的任何文件(+ PHP服务器上的任何其他文件,PHP进程用户具有适当的删除权限)。除了删除整个WordPress安装文件对系统的影响(如果没有当前备份可用,会导致灾难性后果),攻击者可以利用任意文件删除功能绕过一些安全措施,并在Web服务器上执行任意代码。更确切地说,可以删除以下文件: .htaccess:一般来说,删除此文件不会有不安全的影响。但是,在某些情况下,.htaccess文件包含与安全相关的约束(例如,对某些文件夹的访问限制)。因此,删除此文件将会禁用这些安全限制。 index.php文件:通常情况下,将空的index.php文件放置到目录中,以防止Web服务器无法执行的情况下的目录列表。如果删除这些文件则将为攻击者提供一份列表,列出受此措施保护的目录中的所有文件。 wp-config.php:删除这个WordPress安装文件,会在下次访问该网站时触发WordPress安装过程。这是因为wp-config.php包含数据库凭证,如果没有它,WordPress的将认为它尚未安装。攻击者可以删除该文件,使用管理员帐户选择的凭据进行安装过程,最后在服务器上执行任意代码。 如需观看视频,请点击此处查看原文https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/ 技术细节 当用户输入传递文件删除功能时,会发生任意文件删除漏洞。在PHP中,当unlink()调用该函数,并且用户输入可能会影响部分或整个参数$filename(表示要删除的文件的路径)时,会发生这种情况,而WordPress不会进行适当的处理。 在该wp-includes/post.php文件中找到了在WordPress Core中使这个漏洞成为可能的代码部分: WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 在wp_delete_attachement()上面显示的功能中,$meta[‘thumb’]呼叫中使用的内容unlink()未经过任何处理。这段代码的目的是在删除图像的同时删除图像的缩略图。在WordPress中通过媒体管理器上传的图像被表示为附属类型的帖子。该值$meta[‘thumb’]从数据库中检索,并保存为表示图像的文章的自定义字段2。因此,在数据库检索和关键函数调用之间使用unlink(),表示缩略图文件名的值不经过任何清理或检查。如果该值在保存到数据库之前也没有经过任何安全措施,我们将在下一个代码列表中看到情况,我们有一个二阶任意文件删除漏洞。 WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 此代码片段/wp-admin/post.php代表了附件中属于附件的缩略图的文件名如何保存到数据库中。在从保存在$_POST[‘thumb’]数据库中的用户输入中检索和保存到数据库wp_update_attachment_metadata()之间没有任何安全措施,以确保该值代表正在编辑的附件的缩略图。$_POST[‘thumb’]对于任何文件的路径,这个值可以保存到WordPress上传目录的相对路径中,当附件被删除时,该文件将被删除,如第一列表中所示。 临时修复程序 在编写此篇文章时,此漏洞在WordPress内核中仍未被修复。正因为这样,我们开发了一个临时修复程序。通过将修复程序添加到functions.php当前活动的主题/子主题文件中,可以将修复程序集成到现有的WordPress安装中。 WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 所有提供的修复程序都会挂接到wp_update_attachement_metadata()调用中,并确保为元值提供的数据thumb不包含任何使路径成为可能的部分。因此,不能删除与安全相关的任何文件。 我们所提供的修复方案属于临时修复,以防止攻击。我们无法监督WordPress插件的所有可能的向后兼容性问题,因此建议您谨慎的对WordPress文件进行任何修改。 时间线 总结 在这文章中,我们介绍了WordPress内核中引入了一个任意文件删除漏洞,它允许任何具有作者权限的用户完全接管WordPress网站,并在服务器上执行任意代码。该漏洞去年已报告给WordPress安全团队,但在编写本文时仍然没有作任何修复。 为了提高对此漏洞的认识,我们决定发布一些细节和修复程序。使用我们的安全分析解决方案可以轻松发现漏洞,我们确信这个问题已经被许多研究人员所了解。尽管用户帐户的需求阻止了任意WordPress站点的大规模开发,但共享多个用户帐户的WordPress站点应该应用此修复程序。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有运维或服务器方面的需求,可以联系博主 QQ 7271895 我们通常使用 urlencode()之类的函数将斜线编码成%开头的字符串 但是默认情况下 apache发现请求的URL中有对斜线的编码后的字符,是会返回404页面的 此时,就用到了 AllowEncodedSlashes on 指令允许请求继续被处理 如果apache配置的https,那么http和https需要分别配置。 我用的apache是 Apache/2.4.6 (CentOS) http的配置文件和ssl配置文件是分开的。 在httpd.conf 中直接在文件中增加 AllowEncodedSlashes On 重启就生效了,而https 直接放到配置ssl.conf中是没有生效。后来查到是放到 这个标签里边。 重启后终于生效。 原文出处:csdn -> https://blog.csdn.net/tiantiandjava/article/details/80755991
有需要服务器方面的需求和咨询,可以联系博主 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 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一、 apt install apache2 二、 apt install php (安装后测试phpinfo) <?php phpinfo(); ?> 三、 apt install mariadb-server 1、安装完 MariaDB 之后,运行 mysql_secure_installation 可以设置root密码及删除测试账户之类的信息。 2、新建一个用户: insert into mysql.user(Host,User,Password) values("localhost","admin",password("admin")); 刷新系统权限表 flush privileges; 这样就创建了一个名为:admin 密码为:admin 的用户 3、创建数据库(在root权限下) create database abc; //授权admin用户拥有abc数据库的所有权限。 grant all privileges on abc.* to admin@localhost identified by 'admin'; //刷新系统权限表 mysql>flush privileges; 4、删除用户。 @>mysql -u root -p @>密码 mysql> DELETE FROM mysql.user WHERE User="admin" and Host="localhost"; mysql>flush privileges; 5、mysql>drop database abc;//删除用户的数据库 6、查看数据库中具体某个用户的权限 mysql> show grants for 'cactiuser'@'%'; 7、查询所有用户: SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 8、显示所有数据库 show databases; 9、修改指定用户密码。 @>mysql -u root -p @>密码 mysql> update mysql.user set password=password('新密码') where User="admin" and Host="localhost"; mysql>flush privileges; 10、删除某个用户权限 revoke all privileges on wordpress.* from 'admin'@'localhost'; 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一个2014年初上线的项目,要升级https,记录一下。 一共有三台WEB服务器,进入 apache/modules 查看是否有 mod_ssl.so。 两台服务器正常,一台缺失,于是需要动态编译。 官网下载httpd2.4.6(这里需要./httpd -v 查看一下当前版本号),解压缩,进入源码 /modules/ssl/ 目录 cd /usr/local/src/httpd-2.4.6/modules/ssl/ 然后执行下面的动态编译命令 当前apahce的路径/bin/apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c 此处遇到了第一个坑:报错 /usr/bin/ld: cannot find -lcrypto 搜素一番后,是 /usr/lib64/libssl.so 和 /usr/lib64/libcrypto.so 没有建立软连接。但是搜索出来的解决方案的路径不对,于是参考另外两台服务器 ln -s /lib64/libssl.so.0.9.8e /usr/lib64/libssl.so ln -s /lib64/libcrypto.so.0.9.8e /usr/lib64/libcrypto.so 使用上面方式建立软链接。 然后再次编译,提示成功了。 但是在httpd restart的时候碰到了第二个坑。 再次报错:mod_ssl.so: undefined symbol: SSL_get_srp_userinfo 搜索一番了解到是 openssl 版本太高。 这才想起来,之前我更新过一次openssl,现在的版本不是 0.9.8e了。 于是 找到现在的openssl对应lib目录 /usr/local/ssl/lib/libcrypto.so.1.0.0 删除现有的链接,重新链接为新的。 rm -rf /usr/lib64/libssl.so rm -rf usr/lib64/libcrypto.so ln -s /usr/local/ssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so ln -s /usr/local/ssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so 于是重新编译apahce,再次重启能够成功了。 在配置https配置文件的过程中,记得要监听443端口并且设置好防火墙规则。 Listen 0.0.0.0:443 Listen [::]:443 其他的配置文件就按照网上的参考就行了。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 之前写过使用宝塔,配置网站会出现NO input file specified的解决方法。这次再次搜集网络资料共享出来 APACHE服务器出现No input file specified.解决方案 thinkcmf程序默认的.htaccess里面的规则: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> “No input file specified.”,是没有得到有效的文件路径造成的。 修改伪静态规则,如下: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> 就是正则结果“/$1”前面多加了一个“?”号。。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 本文将详细介绍如何操作禁止显示apache网站根目录 进入apache的配置文件 httpd.conf 找到: vim /etc/httpd/conf/httpd.conf Options Indexes FollowSymLinks 修改为: Options FollowSymLinks 其实就是将Indexes去掉,Indexes表示若当前目录没有index.html就会显示目录结构。 重启Apache服务器 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 文章目录[隐藏] 什么是brotli? 安装依赖文件[仅限centos] 编译安装brotli库 apache/nginx添加编译参数 apache/nginx修改配置文件 出错解决办法 什么是brotli? brotli是Google开发的最新压缩算法,有效减少网站传输数据 具体内容请查看WIKI https://en.wikipedia.org/wiki/Brotli 安装依赖文件[仅限centos] yum groupinstall 'Development Tools' -y yum install cmake -y 编译安装brotli库 wget https://github.com/google/brotli/archive/v1.0.3.tar.gz tar -zxvf v1.0.3.tar.gz cd brotli-1.0.3 ./configure-cmake make make test make install apache/nginx添加编译参数 "--enable-brotli" \ "--with-brotli=/usr/local/lib" \ #apache官方模块,依赖brotli库 --add-module=../ngx_brotli-master #添加ngx_brotli模块编译 ngx_brotli模块下载地址 https://github.com/google/ngx_brotli https://github.com/eustas/ngx_brotli apache/nginx修改配置文件 http://httpd.apache.org/docs/2.4/mod/mod_brotli.html apache修改文件 /etc/httpd/conf/extra/httpd-deflate.conf <IfModule brotli_module> SetOutputFilter BROTLI_COMPRESS;DEFLATE SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip no-brotli dont-vary BrotliCompressionQuality 6 BrotliCompressionWindow 18 AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/xml AddOutputFilterByType BROTLI_COMPRESS application/x-javascript application/javascript AddOutputFilterByType BROTLI_COMPRESS application/rss+xml AddOutputFilterByType BROTLI_COMPRESS application/xml AddOutputFilterByType BROTLI_COMPRESS application/json </IfModule> #nginx配置文件 brotli on; brotli_types text/html text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; brotli_static off; brotli_comp_level 6; brotli_buffers 8 16k; brotli_window 512k; brotli_min_length 512;...
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 本来MySQL BINLOG和SHOW PROCESSLIST命令属于八竿子打不着的两个事务,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复制SQL线程与备份线程之间相互阻塞,但未报死锁 在从库上执行SHOW PROCESSLIST发现复制的SQL线程等待锁,而等待SQL的WHERE条件竟然是类似于WHERE C1=’ABC’ AND C2>’2018-03-01′ AND C2<‘2018-03-26’ 这种个范围查询,第一时间想到就是怎么是个基于STATEMENT的复制,不科学啊,我们生产环境统一使用基于ROW格式的复制,难道研发私自修改回话级别的复制格式? 使用MySQL Binlog导出日志一看: 发现真错怪研发同事啦,rbr_only=yes说明基于ROW格式进行复制,“SET TRANSACTION ISOLATION LEVEL READ COMMITTED”也是基于行格式复制的典型特征之一,last_committed和sequence_number用于MySQL 5.7版本中的并发复制,row_query后跟的是在主库上执行的原始SQL,也就是我们在从库SHOW PROCESSLIST中看到的SQL,但实际上从库执行的还是BINLOG部分,该BINLOG可以直接可以直接直接在从库上执行,也可以解析成一行行的数据DML操作,BINLOG部分如下: ========================================================================================================== 另外一个很有意思的问题,如果在从库上运行mysqldump进行备份,且从库上使用并行复制,会导致备份和复制相互阻塞: 在上面的阻塞中,多个SQL线程与备份线程相互之间阻塞,且MySQL无法有效检测出死锁环路而触发死锁的回滚机制,导致复制线程和备份作业相互hang住,需要DBA进行干预(取消备份或停止复制),在复制SQL线程被hang住期间,复制的IO线程仍可以正常工作接受到主库的Binlog信息,但slave_behind_master并不会随之增大,如果仅通过监控slave_behind_master值来判断主从复制延迟,则会导致延迟监控存在严重漏洞,因此在监控复制延迟时,除监控slave_behind_master值外,还需要监控主库binlog位置点和从库执行的binlog位置点。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
现在许多网站都是用 apache 做 web 代理的,随时间时间的推长,apache 的访问日志 access.log 会越来越大,所以如果能实现每天分割成一个新得日志,这是比较方便管理的。 当然,apache 本身就具备这样的功能,我需要在 apache 的配置文件中,每个网站的日志部分需要调整成如下的格式 httpd.conf:ErrorLog "| /usr/local/apache/bin/rotatelogs /data/www/log/%Y_%m_%d_error.log 86400 480" httpd.conf: CustomLog "| /usr/local/apache/bin/rotatelogs /data/www/log/%Y_%m_%d_access.log 86400 480" common 在上面的 ErrorLog 和 CustomLog 需要调整成上面的格式。 最后的效果如下 如果有不懂的、欢迎加入我们学派吧。一起学习交流。
欢迎来到学派吧-如有需要服务器等业务相关资讯的加我们QQ群 设置Apache禁止访问目录 本文将详细介绍如何操作禁止显示apache网站根目录 进入apache的配置文件 httpd.conf 找到: vim /etc/httpd/conf/httpd.conf Options Indexes FollowSymLinks 修改为: Options FollowSymLinks 其实就是将Indexes去掉,Indexes表示若当前目录没有index.html就会显示目录结构。 重启Apache服务器
编辑:/etc/httpd/conf.d/ssl.conf vim ssl.conf 找到: # SSLPassPhraseDialog builtin 修改成: SSLPassPhraseDialog exec:/etc/httpd/conf.d/key.sh 创建:key.sh 编辑:/etc/httpd/conf.d/key.sh vim key.sh #!/bin/bash echo ‘your pass phrase’ #注意‘’号输入方式 注意key.sh的权限755 重启服务器 问题解决 如果有不懂的、欢迎加入我们学派吧。一起学习交流。
有需要服务器方面的需求,可以联系博主QQ 7271895(收费) 安装完之后,html文件可以正常解析,php源码直接输出,不能被解析。 通常情况下是apache未加载php模块,通常情况下需要修改httpd.conf文件,但是在ubuntu下为apache2.conf文件 修改如下: 设置 LoadModule php5_module /usr/lib/apache2/modules/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps /usr/lib/apache2/modules/libphp5.so换成你的路径。 如果apache2.conf中该项配置,直接加入即可。 然后重启apache即可 sudo /etc/init.d/apache2 restart 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费) 关于ajax跨域的就不过多的介绍,可以参考改文章http://www.qqdeveloper.com/a/75.html 方式一:在被请求的应用程序中添加一个允许请求跨域 1.apache 1.在httpd.conf文件中加载 LoadModule headers_module modules/mod_headers.so模块 2.在被请求文件头部添加: header("Access-Control-Allow-Origin: *"); 2.nginx 1.在被请求文件头部添加: header("Access-Control-Allow-Origin: *"); 方式二:在配置文件中允许跨域 1.apache的配置文件httpd.conf Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted Header set Access-Control-Allow-Origin * #此行代码即是需要添加的代码2.nginx 2.在被请求的域名nginx配置文件中增加配置,配置位置和root的配置等级一致 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; 该方式配置参考链接:http://www.nginx.cn/4592.html 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群