phpmyadmin错误The plain HTTP request was sent to HTTPS port

今天在配置nginx的https支持,把phpmyadmin放在一个子目录下,即https://ip/phpmyadmin,登录出现The plain HTTP request was sent to HTTPS port错误,现给出解决方法:
1.在location ~ .php$区域添加fastcgi_param HTTPS on;如以下代码:

  1. location ~ .php$ {
  2.                 fastcgi_index index.php;
  3.                 include /etc/nginx/fastcgi_params;
  4.                 fastcgi_param HTTPS on;
  5.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  6.                 fastcgi_pass 127.0.0.1:9000;
  7.         }

2.在http区域添加

  1. map $scheme $fastcgi_https {
  2. default off;
  3. https on;
  4. }

如例子:

  1. http
  2. {
  3. map $scheme $fastcgi_https {
  4. default off;
  5. https on;
  6. }
  7.  
  8.     include       /etc/nginx/mime.types;
  9.     default_type  application/octet-stream;
  10. ………
  11. }

之后重载nginx即生效.

nginx使用ssl模块配置HTTPS支持

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。

生成证书

可以通过以下步骤生成一个简单的证书:
首先,进入你想创建证书和私钥的目录,例如:

  1. $ cd /usr/local/nginx/conf

创建服务器私钥,命令会让你输入一个口令:

  1. $ openssl genrsa -des3 -out server.key 1024

创建签名请求的证书(CSR):

  1. $ openssl req -new -key server.key -out server.csr

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

  1. $ cp server.key server.key.org
  2. $ openssl rsa -in server.key.org -out server.key

配置nginx

最后标记证书使用上述私钥和CSR:

  1. $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

修改Nginx配置文件,让其包含新标记的证书和私钥:

  1. server {
  2.     server_name YOUR_DOMAINNAME_HERE;
  3.     listen 443;
  4.     ssl on;
  5.     ssl_certificate /usr/local/nginx/conf/server.crt;
  6.     ssl_certificate_key /usr/local/nginx/conf/server.key;
  7. }

重启nginx。
这样就可以通过以下方式访问:
https://YOUR_DOMAINNAME_HERE
另外还可以加入如下代码实现80端口重定向到443

  1. server {
  2. listen 80;
  3. server_name ww.webres.wang;
  4. rewrite ^(.*) https://$server_name$1 permanent;
  5. }

 

Apache tomcat JRE安装配置

tomcat处理静态不如Apache,所以我们使用jk_mod模块达到apache处理静态内容,tomcat处理jsp文件的目的。

安装JRE

http://www.oracle.com下载JRE软件。

  1. wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jre-7u2-linux-i586.tar.gz
  2. tar xzf jre-7u2-linux-i586.tar.gz
  3. mv jre1.7.0_02/ /usr/local/jre

tomcat安装

到http://tomcat.apache.org/下载tomcat

  1. wget http://labs.renren.com/apache-mirror/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz
  2. tar xzf apache-tomcat-7.0.23.tar.gz
  3. mv apache-tomcat-7.0.23 /usr/local/tomcat

设置环境变量

  1. vi /etc/profile

在文件末尾增加:

  1. export JRE_HOME=/usr/local/jre

执行source命令使生效

  1. source /etc/profile

tomcat根目录设置

1.打开tomcat安装目录下面conf目录下的server.xml文件。
2.找到如下文字:

  1. <Host name="localhost" appBase="webapps"
  2.        unpackWARs="true" autoDeploy="true">

3.在上面找到的文字后面添加如下内容

  1. <Context path="" docBase="/usr/local/apache/htadocs" debug="0" reloadable="true" />

/usr/local/apache/htadocs即为根目录地址。

安装apache

  1. wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.2.22.tar.gz
  2. tar xzf httpd-2.2.22.tar.gz
  3. cd httpd-2.2.22
  4. ./configure –prefix=/usr/local/apache
  5. make && make install

安装jk_mod模块

  1. wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.33-src.tar.gz
  2. tar xzf tomcat-connectors-1.2.33-src.tar.gz
  3. cd tomcat-connectors-1.2.33-src/native
  4. ./configure –with-apxs=/usr/local/apache/bin/apxs
  5. make && make install

apache与tomcat连接配置

配置与tomcat连接主要有三个文件:
httpd.conf,workers.properties,uriworkermap.properties
1、httpd.conf

  1. # 加载 mod_jk 模块
  2. LoadModule jk_module modules/mod_jk.so
  3. #
  4. # 配置mod_jk模块
  5. #
  6. <IfModule jk_module>
  7. JkWorkersFile conf/workers.properties
  8. JkMountFile conf/uriworkermap.properties
  9. JkLogFile logs/mod_jk.log
  10. JkLogLevel warn
  11. </IfModule>

2、workers.properties

  1. #定义两个可用的worker wlb和jkstatus
  2. worker.list=wlb,jkstatus
  3.  
  4. #定义一个物理为ajp13w,类型ajp13(可以定义多个用作负载均衡)
  5. worker.ajp13w.type=ajp13
  6. worker.ajp13w.host=localhost
  7. worker.ajp13w.port=8009
  8.  
  9. #定义一个逻辑worker wlb,类型为lb,用来管理物理worker ajp13w
  10. worker.wlb.type=lb
  11. worker.wlb.balance_workers=ajp13w
  12.  
  13. #定义一个类型为status的worker jkstatus,用来监控 JK 本身
  14. worker.jkstatus.type=status

3、uriworkermap.properties

  1. #这文件作用是指定哪些url由worker wlb处理,哪些文件不允许wlb处理。
  2. /*=wlb
  3. /status=jkstatus
  4. /examples/*=wlb
  5. !/*.jpg=wlb
  6. !/*.png=wlb
  7. !/*.css=wlb
  8. !/*.js=wlb
  9. !/*.htm=wlb
  10. !/*.html=wlb
  11.  
  12. #/jkstatus由worker status处理,静态的由apache处理,剩下的由wlb处理。

启动程序

  1. /usr/local/apache/bin/apachectl -k start
  2. /usr/local/tomcat/bin/startup.sh

CentOS安装iRedMail web邮件服务器

中文名为“艾瑞得邮件”,由 rhms 项目 更名而来。是针对 Red Hat(R) Enterprise Linux 和 CentOS 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套 shell 脚本,用于快速部署一套功能完善的邮件服务器解决方案。iredmail谷歌开源地址:http://code.google.com/p/iredmail/

iredmail系统要求

iredmail安装需要干净的系统环境,意思是服务器不存在与iredmail相关的组件,如apache,mysql,OpenLDAP,postfix,Dovecot,Amavisd等。否则会覆盖原来的配置文件,甚至导致iredmail安装失败。
为了能安装iredmail,你需要满足以下两个条件:
1、一个干净的系统,如RHEL,CentOS,Scientific Linux 系统。
2、不低于512MB的内存。

安装前的准备

1、设置一个完全合格的域名(FQDN)主机名
执行命令hostname -f以查看当前主机名:

  1. $ hostname -f
  2. demo.iredmail.org

在RHEL/CentOS/Scientific Linux系统,设置hostname通常是改以下两个文件
/etc/sysconfig/network 主机名设置。
/etc/hosts 主机名解析,需要放在第一位。
2、激活yum软件库以安装新软件包
CentOS系统软件库配置文件在/etc/yum.repos.d/目录下,后缀是.repo,打开这些文件,如果包含”enabled=1″,表示已经激活。
3、下载最新发布的iRedMail
到这里下载:http://code.google.com/p/iredmail/wiki/Download?tm=2
解压软件包:

  1. # cd /root/
  2. # tar xjf iRedMail-x.y.z.tar.bz2

开始安装iRedMail

如果服务器在中国,由于域名被墙,需要打开文件/root/iRedMail-x.y.z/pkgs/get_all.sh,查找iredmail.org替换为173.254.22.21。

  1. # cd /root/iRedMail-x.y.z/
  2. # bash iRedMail.sh

下面是安装截图:
1)欢迎安装界面.
Postfix
2)指定存储邮箱的路径,默认是/var/vmail/。
Postfix
3)选择存储帐号的后端,选择你熟悉的。之后你可以iRedAdmin管理帐号。
Postfix
4)如果选择的后端是OpenLDAP,接下来会问两个问题。
4.1)LDAP后缀
Postfix
4.2)LDAP密码
Postfix
5)设置mysql root密码
Postfix
6)设置你第一个邮箱域名
Postfix
7)设置邮箱管理地址
Postfix
8)设置邮箱后台管理密码
Postfix
9)设置邮箱用户密码
Postfix
10)选择可选组件安装
Postfix
11)设置默认语言
Postfix
回答完这些问题之后,安装程序问是否开始安装,输入y即可。

安装完成之后需要知道的重要事情

1、阅读/root/iRedMail-x.y.z/iRedMail.tips,它包含一些与iredmail相关的信息
2、为SPF设置dns记录http://code.google.com/p/iredmail/wiki/DNS_SPF
3、为DKIM设置DNS记录http://code.google.com/p/iredmail/wiki/DNS_DKIM

webmail和其它一些程序的入口

Webmail http://your_server/mail/ (or /webmail, /roundcube)
iRedAdmin (admin panel) httpS://your_server/iredadmin/
phpMyAdmin httpS://your_server/phpmyadmin/
phpLDAPadmin httpS://your_server/phpldapadmin/
Awstats httpS://your_server/awstats/awstats.pl?config=web (or ?config=smtp)

使用监控宝监控snmp性能

snmp能收集服务器性能的各项数据,如CPU使用率,内存使用率,CPU负载,系统进程数,磁盘空间使用率,网络流量,磁盘I/O等,而使用监控宝处理这些数据能很直观地显示出来。下面介绍如何配置

安装snmp

1、到http://www.net-snmp.org/下载最新版的snmp安装包。

  1. wget http://softlayer-dal.dl.sourceforge.net/project/net-snmp/net-snmp/5.7.2/net-snmp-5.7.2.tar.gz
  2. tar xzf net-snmp-5.7.2.tar.gz
  3. cd net-snmp-5.7.2
  4. ./configure –prefix=/usr/local/snmp –with-mib-modules=ucd-snmp/diskio –with-default-snmp-version=3 –[email protected]  –with-sys-location=Unknown  –with-logfile=/var/log/snmpd.log –with-persistent-directory=/var/net-snmp
  5. make
  6. make install

可能会出现Can’t locate ExtUtils/MakeMaker.pm错误,centos使用yum install perl-ExtUtils-MakeMaker安装。
2、设置安全的验证方式
我们这里使用v3验证方式。
创建snmpd.conf文件:

  1. vi /usr/local/snmp/share/snmp/snmpd.conf

然后添加一个只读帐号,如下:

  1. rouser jiankongbao auth

可以看到,在v3中,“rouser”用于表示只读帐号类型,随后的“jiankongbao”是指定的用户名,后边的“auth”指明需要验证。
接下来,我们还要添加“jiankongbao”这个用户,这就是v3中的特殊机制,我们打开以下配置文件:

  1. vi /var/net-snmp/snmpd.conf

这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令,如下:

  1. createUser jiankongbao MD5 mypassword

这行配置的意思是创建一个名为“jiankongbao”的用户,密码为“mypassword”,并且用MD5进行加密传输。这里要提醒的是:
密码至少要有8个字节
这是SNMP协议的规定,如果小于8个字节,通信将无法进行。
值得注意的是,一旦snmpd启动后,出于安全考虑,以上这行配置会被snmpd自动删除,当然,snmpd会将这些配置以密文的形式记录在其它文件中,重新启动snmpd是不需要再次添加这些配置的,除非你希望创建新的用户。
以上配置中的用户名、密码和加密方式,在监控宝添加服务器的时候需要添加。
3、启动SNMP代理程序
经过配置后,现在可以启动snmpd,如下:

  1. /usr/local/snmp/sbin/snmpd

如果要关闭,则可以直接kill这个进程,如下:

  1. killall -9 snmpd

在监控宝中添加服务器

现在我们来看看如何在监控宝中添加服务器监控,通过新增的导航,你会很容易进入添加服务器的页面,这里分为两部分,首先是填写服务器信息,包括服务器名称和IP地址,以及操作系统类型。
这些都非常简单,之所以要选择操作系统类型,是因为Linux和Windows的机制存在一些差异,所以它们的SNMP信息库会有一些不同,我们需要根据不同的系统来提供相应的监控项目。
监控
接下来是SNMP设置,主要是选择不同的SNMP协议,以及填写身份验证信息,前边已经有过详细的介绍,这里你只需要将前边配置的信息如实填写即可。
监控
监控

填写完后,点击提交按钮,这时候监控宝会使用这些信息来尝试连接你的SNMP监控代理,需要一些时间,这一步非常重要。
监控
不妙,如果你填写的信息无法连接到服务器的SNMP代理程序,监控宝会提示你,这时候,请你仔细检查之前介绍的那些配置,以及防火墙策略,也许你没有开放udp161端口。
监控
找到问题后再次提交,如果连接成功,则会看到成功页面,如下:
监控
然后点击“添加监控项目”,便可以为这台服务器选择监控项目,对于Linux服务器,监控宝目前提供了以下的监控项目,你可以全部勾选,然后提交。
监控
然后就等待数据和图表吧,一切就这么简单,如果有疑问或需要帮助,请发邮件到 help (at) jiankongbao.com
*注:此文发表时,监控宝的服务器监控功能尚未正式发布。
参考:http://blog.jiankongbao.com/?p=160
   http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95#linux_snmp

Vi/Vim查找替换使用方法

vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。
 
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
 
  :s/vivian/sky/g 替换当前行所有 vivian 为 sky
 
  :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
 
  :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
 
  n 为数字,若 n 为 .,表示从当前行开始到最后一行
 
 :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
 
  :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
 
  可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
 
  :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
 
  :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
 
  1.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
 
  :s/vivian/sky/g 替换当前行所有 vivian 为 sky
 
  2. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
 
  :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
 
  (n 为数字,若 n 为 .,表示从当前行开始到最后一行)
 
  3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
 
  :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
 
  4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
 
  :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
 
  5. 删除文本中的^M
 
  问题描述:对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
 
  。 使用命令:cat filename1 | tr -d “^V^M” > newfile;
 
  。 使用命令:sed -e “s/^V^M//” filename > outputfilename.需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M.你必须要手工进行输入,而不是粘贴。
 
  。 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//.
 
  。 :%s/^M$//g
 
  如果上述方法无用,则正确的解决办法是: [Page]
 
  。 tr -d ”\r ” dest
 
  。 tr -d ”\015 ” dest
 
  。 strings A>B
6. 替换确认
我们有很多时候会需要某个字符(串)在文章中某些位置出现时被替换,而其它位置不被替换的有选择的操作,这就需要用户来进行确认,vi的查找替换同样支持
例如
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
在命令后面加上一个字母c就可以实现,即:s/vivian/sky/gc
顾名思意,c是confirm的缩写
 
  7. 其它
 
  利用 :s 命令可以实现字符串的替换。具体的用法包括:
 
  :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
 
  :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
 
  :。,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
 
  :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
 
  :g/str1/s//str2/g 功能同上
 
  从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索
 
  字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作
来源:http://lwg2001s.iteye.com/blog/1182704

php无法发送邮件的原因

遇到过两次php mail无法发送邮件,第一次是没有正确设置hostname,http://devops.webres.wang/2011/10/wordpress-slow-comment-solution/,这次需要设置/etc/php.ini文件里sendmail的路径,设置php sendmail路径方法如下:
打开/etc/php.ini(不一定是这个路径),搜索;sendmail_path = 更改为sendmail_path = /usr/sbin/sendmail -t -i(不一定是这个路径,你可以通过whereis sendmail查找)。之后重启php就OK。

配置apache以fastcgi运行php

apache默认是用自带的mod_php模块运行php,现在我们介绍使用fastcgi来执行php脚本。先说下fastcgi的优点:
Fastcgi的优点:

  • 从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分 配新的进程来运行逻辑.
  • · 从安全性上看,Fastcgi支持分布式运算. fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮.
  • · 从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态
  • IO处理完全不需要逻辑程序的参与.
  • · 从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序 (php,java,perl,ruby,c++,python…)
  • · 适用操作系统,可在任何平台上http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz使用
  • 安装apache

    1. wget http://apache.ziply.com//httpd/httpd-2.2.21.tar.gz
    2. tar xzf httpd-2.2.21.tar.gz
    3. cd httpd-2.2.21
    4. ./configure –prefix=/usr/local/apache
    5. make && make install

    安装fastcgi

    1. wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
    2. tar xzf mod_fastcgi-2.4.6.tar.gz
    3. cd mod_fastcgi-2.4.6
    4. cp Makefile.AP2 Makefile
    5. make top_dir=/usr/local/apache
    6. make top_dir=/usr/local/apache install

    完成之后编辑httpd.conf配置文件,加入fastcgi模块装载代码:

    1. LoadModule fastcgi_module modules/mod_fastcgi.so

    安装php5.2

    1. wget http://us2.php.net/get/php-5.2.17.tar.gz/from/am.php.net/mirror
    2. tar xzf php-5.2.17.tar.gz
    3. cd php-5.2.17
    4. ./configure –prefix=/usr/local/php –enable-fastcgi –disable-cli
    5. make && make install

    配置apache支持php

    编辑httpd.conf文件,加入如下代码:

    1. ### fastcgi ###
    2. ScriptAlias /fcgi-bin/ "/usr/local/php/bin/"
    3. AddHandler php-fastcgi .php
    4. Action php-fastcgi /fcgi-bin/php-cgi
    5. AddType application/x-httpd-php .php
    6.  
    7. <IfModule mod_fcgid.c>
    8.     AddHandler fcgid-script. .php .fcgi   ### 暂时只配置支持.php
    9.     IdleTimeout 300
    10.     ProcessLifeTime 1800
    11.     MaxProcessCount 100
    12.     DefaultMinClassProcessCount 3
    13.     DefaultMaxClassProcessCount 8
    14.     IPCConnectTimeout 15
    15.     IPCCommTimeout 300
    16.     MaxRequestsPerProcess 100
    17. </IfModule>
    18. ### fastcgi ###

    建立虚拟主机可以这样配置:

    1. <VirtualHost *:80>
    2.  DocumentRoot /usr/local/apache/htdocs
    3.  ServerName localhost
    4.  Options +ExecCGI
    5.  AddHandler fastcgi-script .fcgi
    6.  AddType application/x-httpd-php .php
    7.  Action application/x-httpd-php /fcgi-bin/php-cgi
    8.  <Directory /usr/local/apache/htdocs>
    9.  Options Indexes ExecCGI
    10.  Order allow,deny
    11.  allow from all
    12.  </Directory>
    13. </VirtualHost>

    详细的fastcgi指令配置请看:http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

    Linux下DedeCMS详细安全设置

    经常会听到使用dedecms的站长抱怨,网站又被挂马了,dedecms真的很不安全。dedecms可能存在某些漏洞这不假,但主要责任真的是dedecms吗?我们知道,一个黑客想上传木马,首先得可以找到可写的目录,当然如果被黑客获取root密码和提权,那就没办法了。上传木马之后,又必须是php程序能解析。知道了这两个条件,我们就可以根据这两方面设置权限了。所以说,网站被挂马,主要问题还在于你安全设置方面做得不够好。下面我们详细的介绍Linux下DedeCMS程序安全的设置。

    目录权限设置

    web服务器运行的用户与目录所有者用户必须不一样,比如apache运行的用户为www,那么网站目录设置的所有者就应该不能设置为www,而是设置不同于www的用户,如centos。
    我们这里假设web服务器以www用户运行,网站分配的用户为centos,dedecms网站根目录为/home/centos/web。
    不建议用户把栏目目录设置在根目录, 原因是这样进行安全设置会十分的麻烦, 在默认的情况下,安装完成后,目录设置如下:
    1、首先设置网站目录所有者为centos,用户组为www,目录设置为750,文件为640。

    1. cd /home/centos
    2. chown -R centos.www web
    3. find web -type d -exec chmod 750 {} ;
    4. find web -not -type d -exec chmod 640 {} ;

    2、data、templets、uploads、a images目录, 设置可读写,不可执行的权限;
    设置可读写权限:

    1. cd /home/centos/web
    2. chmod -R 770 templets uploads a images

    设置不可执行权限:
    apache的设置,在apache配置文件中加入如下代码(以uploads目录为例,其它设置基本相同)。

    1. <Directory /home/centos/web/uploads>
    2. php_flag engine off
    3. </Directory>
    4. <Directory ~ "^/home/centos/web/uploads">
    5.  <Files ~ ".php">
    6.  Order allow,deny
    7.  Deny from all
    8.  </Files>
    9. </Directory>

    nginx的设置如下:

    1. location ~* ^/(templets|uploads|a|images)/.*.(php|php5)$
    2. {
    3. deny all;
    4. }

    3、不需要专题的,建议删除 special 目录, 需要可以在生成HTML后,删除 special/index.php 然后把这目录设置为可读写,不可执行的权限,上面介绍了如何设置可读写和不可执行的权限,这里就不重复了。

    data目录路径更改

    另外在DedeCMS V5.7中用户也可以设定data目录到上一级非web访问目录,基本操作如下:
    1.将data目录移动到上一级目录中,这里直接剪切过去就可以了;
    2.配置include/common.inc.php中DEDEDATA文件

    define(‘DEDEDATA’, DEDEROOT.’/data’);

    可以改成类如:

    define(‘DEDEDATA’, DEDEROOT.’/../../data’);
    3.后台设置模板缓存路径
    服务器安全

    其它需注意问题

    1、虽然对 install 目录已经进行了严格处理, 但为了安全起见,我们依然建议把它删除;
    2、不要对网站直接使用MySQL root用户的权限,给每个网站设置独立的MySQL用户帐号,许可权限为:
    SELECT, INSERT , UPDATE , DELETE,CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES
    由于DEDE并没有任何地方使用存储过程,因此务必禁用 FILE、EXECUTE 等执行存储过程或文件操作的权限。
    假设我们建立的数据库名为centosmysql,数据库用户为centosmysql,密码为123456,具体设置命令如下:

    1. mysql -uroot -p
    2. mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES ON centossql.* TO centossql@localhost IDENTIFIED BY 123456;
    3. mysql>FLUSH PRIVILEGES;
    4. mysql>exit

    3、更改默认管理目录dede,改到不易被猜到就好。
    4、关注后台更新通知,检查是否打上最新dedeCMS补丁。
    5、登录后台时使用禁止javascript的浏览器登录。

    禁止指定目录执行php文件

    我们设置网站权限的时候,有些目录不得不设置让http服务器有写入权限,这样安全隐患就来了。比如discuz x2的 data目录,这个必须要有写入限,论坛才能正常运行,但有的黑客可能就会利用这个目录上传php文件(你会说附件上传已经限制这种格式的文件,但谁知道黑客会利用什么手段上传呢,只有他们清楚了),进而到配置文件读取到mysql的连接信息,那么你的数据库就是他的了。下面介绍apache和nginx下禁止指定目录执行php文件。

    apache的配置

    1. <Directory /home/centos/web/data>
    2. php_flag engine off
    3. </Directory>
    4. <Directory ~ "^/home/centos/web/data">
    5.  <Files ~ ".php">
    6.  Order allow,deny
    7.  Deny from all
    8.  </Files>
    9. </Directory>

    nginx的配置

    1. location /data/ {
    2. location ~ .*.(php)?$ {
    3. deny all;
    4. }
    5. }
    6. location ~* ^/(attachments|upload)/.*.(php|php5)$
    7. {
    8. deny all;
    9. }

    参考:http://who0168.blog.51cto.com/253401/577309