无来

不管你来还是不来
我都在这里,夜夜点亮
不是为了守候
只是为了做好我自己

0%

自上一次在LNMP环境下安装过Redmine之后发表了《LNMP下安装Redmine2.3手记》,Inhu决定再一次尝试。因为上一次Inhu是通过折中的办法,也就是利用bitnami+lnmp这种做法实现的。现在我再一次决定在LNMP环境下不利用任何的一键安装包安装Redmine。

首先,我在这里不得不声明几点。

服务器系统时Centos6,试过在Centos5下安装,但由于软件库等各种问题最后在安装ImageMagick的时候失败了。所以建议大家使用Centos6。

首先,我们都安装好了Lnmp(一键安装,没修改任何配置目录的情况下)后。开始实施我们的Redmine安装了。

1 安装ruby环境

执行以下命令:

yum -y install zlib-devel curl-devel openssl-devel apr-devel apr-util-devel mysql-devel ImageMagick ImageMagick-devel rdoc gcc-c++ ruby ruby-devel 


上面的命令是安装各种要用到的软件包,这时候Ruby应该是装好的了,你可以通过命令:

ruby –v 


进行查看Ruby的版本。当安装完以后我们实行第二步。

### 2 安装 RubyGems

访问:http://rubygems.org/pages/download

然后下载zip包或者tar包,然后解压出来后,进入目录执行以下命令:

ruby setup.rb gem -v gem install passenger


如果是国内主机的话,建议使用

http://ruby.taobao.org/


淘宝提供的一个RubyGems源。如何使用网站上面有详细说明,如果是国外主机就无需设置了。 然后执行以下命令:

passenger-install-nginx-module


这时候我们的操作步骤应该是: 填入lnmp目录下的Nginx源目录.例如:

> /root/download/lnmp1.0-full/nginx-1.2.7
> /usr/local/nginx 


如果需要IPV6的话,在设置配置参数的时候加上 –with-ipv6 然后猛的回车,看到一大堆的编译安装、编译安装了,如无意外就安装成功了。然后它会高亮提示你如何设置Nginx。

http {
       ...
        passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-4.0.5; 
        passenger_ruby /usr/bin/ruby; ... 
     }


到这里,Web的容器环境已经配好了。 然后我们把下载好的Redmine解压出来,放到 /home/www/ 下。

然后进入config目录,复制修改 database.yml.example 文件。

cd /home/www/redmine/config cp database.yml.example database.yml
vi database.yml


修改这个database.yml的时候我们在修改DBname、账户、密码外还要注意的是我们要加一句,如下面的例子:

production:
adapter: mysql2
database: redmine
host: localhost
username: -u
password: “-p”
encoding: utf8
socket: /tmp/mysql.sock


除了production外,我都用 “#”注释掉了。因为用不着。然后去创建数据库了,这里不多说。
然后我们返回上一级目录,修改GemFile。

cd ..
vi Gemfile


在Gemfile第二行开始添加以下内容(可以不添加):

gem "rake", "10.0.4"
gem "rack", "1.4.5"
gem "rubytree", "0.8.3", :require => "tree"
gem "RedCloth", "~>4.2.9", :require => "redcloth" # for CodeRay    
gem "mysql"


添加完之后,执行:

gem install bundle
bundle install --without development test


经过一轮等待后,可以看到成功的界面了吗?没看到,遇到问题了?慢慢搜索解决吧。哈哈
等等……Redmine还没有安装成功呢!
好了,然后执行以下指令吧:

rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data


非root用户需要添加用户

mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets


启动服务

ruby script/rails server webrick -e production


很好,这时应该能测试通过了。那么现在就要去配置Nginx了,在lnmp那里创建一个vHost,然后修改vHost配置文件如下:

server {
         listen 81;
         server_name pm.techoinfo.com;
         index index.html index.htm index.php;
         root /home/www/redmine/public;
         passenger_enabled on;
         access_log  /home/wwwlogs/y.log  y;
    }

恩恩,就这样大功告成了。记住,Root的目录是指向 redmine 下的 public 目录哦,别搞错了!

如果在安装过程有问题,可以留言给我,因为我也遇到过很多问题。各种环境不一样各种问题啊。
原文:http://inhu.net/install-redmine-with-lnmp.html

<span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version= )  

<script type=”text/javascript” src=”jb51.js?version=1.2.6″></script>  
<link rel=’stylesheet’ href=’base.css?version=2.3.3′ type=’text/css’ />  

使用参数有两种可能:

第一、脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。 即上面代码对于文件来说 等价于

<script type=”text/javascript” src=”jb51.js”></script>

<link rel=’stylesheet’ href=’base.css’ type=’text/css’ />

但浏览器会认为他是 该文件的某个版本!

第二、客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用。大家可能有时候发现修改了样式或者js,刷新的时候不变,就是客户端缓存了css或者js文件,因此加上参数还是有好处的!

第二种情况最多,也可能两种同时存在。

Xenu 是一款深受业界好评,并被广泛使用的死链接检测工具。

时常检测网站并排除死链接,对网站的 SEO 非常重要,因为大量死链接存在会降低用户和搜索引擎对网站的信任。

我们推荐的死链接检测工具 Xenu 主要具有以下特征:

需要下载安装,不到1M大小,用户界面非常简洁,操作简单。 检测彻底:能够检测到图片、框架、插件、背景、样式表、脚本和 java 程序中的链接。 报告形式合理多样,死链接一目了然。 提供出现死链接的网页,方便扫除导出链接错误。 能够侦测重定向URL 可以选择是否侦测站外链接。 对于小型简单网站,可以用来制作HTML格式网站地图。

死链接检测工具 Xenu 下载地址:http://home.snafu.de/tilman/XENU.ZIP

不懂英文者使用指南:

下载,并安装。 打开后,出现 Tips and Tricks 窗口,点击 Close 按钮。 点击左上第二行第一个按钮。 出现一个对话框,在对话框第一行,写入自己的URL。如:http://chenyanshi.com 按底部的“OK”,就完成了。 报告结果中,出现红色的部分即是死链接。 原创文章,转载请注明: 转载自RICKYCHEN

DenyHosts介绍

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。

DenyHosts应用

当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。

你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。

用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

ALTER TABLE `games` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

MongoDB安装

wget -c http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.1.tgz ;
tar zxvf mongodb-src-r2.4.1.tar.gz
mv mongodb-linux-i686-2.4.1 /usr/local/mongodb/
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/dblogs --fork

启动以后可以查看mongodb进程树

pstree -p |grep mongod

可能出现的问题:

问题一:

-bash: /usr/local/bin/mongo: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录

解决办法:

yum install ld-linux.so.2

问题二:

mongo: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解决办法:

yum whatprovides libstdc++.so.6
yum install llibstdc++.so.6

PHP MongoDB 扩展

cd /usr/local/src
wget -c http://pecl.php.net/get/mongo-1.4.4.tgz
tar -xzvf ./mongo-1.4.4.tgz
cd ./mongo-1.4.4
/usr/local/php/bin/phpize # 利用PHP的 phpize 命令来安装扩展
./configure --with-php-config=/usr/local/php/bin/php-config
make &amp;&amp; make install

完成后,编辑你 php.ini 文件增加一行。

extension=mongo.so

注意

关闭注意 这里禁止使用 kill -9 PID 关闭mongodb进程,会导致mongod.lock导致再一次无法开启mongodb,必须删除mongod.lock再能开启 可以使用pkill mongod 或者 killall mongod 来结束mongodb进程 出处:http://www.crackedzone.com 完成后,请编辑你php.ini文件增加一行 extension=mongo.so 一般默认的编译php的ini文件在 /usr/local/php/etc/php.ini 重启你的web服务器或者php-fpm,打印phpinfo,如果看到mongo项表,那么mongodb的扩展安装成功了

终于有个借着写技术博客顺便吐槽GFW的机会了。每当网速很快,却偏偏不能谷歌搜索,好不容易搜到个跟问题十分匹配的网站,结果点进去菊花转了几百圈页面还是加载不出来,这显然是件让人很蛋疼的事情。虽然我学会了安装和配置翻墙神器goagent,但我仍然为很多很多很多不会翻墙和不愿意或者没钱买vpn的人叫一下委屈,其实会弄goagent这种的除了少数的一些个搞技术的一般人也弄不来。还有,即使是弄goagent,一,它也是很费时的,配置麻烦,偶尔还要更新程序,二,最近装新系统,准备下载goagent和浏览器代理插件的时候发现,goagent的程序托管在google仓库,proxyswitch要去google应用商店下,但问题是尼玛要访问google的东西你得先翻墙啊为了能翻墙得先翻墙才行,悖论啊 呃。。好了,吐槽结束。该说正事儿了。对了,不知道GFW的去谷歌吧,哦不对,还是去百度吧,谷歌怕你上不去呢。 事情是这样的,基于wordpress的网站里面的主题会用到google的资源,比如我的blog站用的twentytwelve主题就引用了谷歌的字体,里面就有个这样的链接:http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700&subset=latin,latin-ext 由于身在天朝的原因,你在访问我的blog的时候就会由于浏览器请求不到这个资源而一直在转菊花(loading加载),运气好只能显示部分图片信息,字看不见,而且是永远看不见那种,除非你像我一样翻墙了。好,既然是这样,那我们把它要请求的东西都下载到服务器上,把链接换成内部链接就好了。here we go:

1.离线资源

  • 把这个网站对应的css下载下来,给它取个名字,比如我叫他googlefonts.css。
  • 打开那个css文件,你会发现里面还有一些url是指向google的,分别都下载下来放在一起。比如我把css文件和里面的四个woff的url对应的字体文件都下下来放到了一个叫fonts的文件夹。
  • 修改那个googlefonts.css文件中指向google的url。由于你把离线下来的那些woff文件放在该css同一个目录,所以你把/前面的所有内容都去掉,留个文件名即可
  • 把fonts文件夹放在对应主题的目录里。比如我放在wp-content/twentytwelve/css/下面

2.修改引用url ,原来主题上的url是指向google的,现在要将它改成指向内部的css文件,即前面的googlefonts.css文件。那么去哪里改呢?我是在主题目录里执行

grep googleapis . -r找到的,是在wp-content/twentytwelve/functions.php文件里。在

  1. <span class="pln" style="color: #000000;">$font_url </span><span class="pun" style="color: #666600;">=</span><span class="pln" style="color: #000000;"> add_query_arg</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: #000000;"> $query_args</span><span class="pun" style="color: #666600;">,</span><span class="str" style="color: #008800;">"$protocol://fonts.googleapis.com/css"</span><span class="pun" style="color: #666600;">);</span>

后面加两句

  1. <span class="pln" style="color: #000000;">$filePath </span><span class="pun" style="color: #666600;">=</span><span class="pln" style="color: #000000;"> dirname</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: #000000;">__FILE__</span><span class="pun" style="color: #666600;">).</span><span class="str" style="color: #008800;">"/css/fonts/googlefonts.css"</span><span class="pun" style="color: #666600;">;</span>
  2. <span class="pln" style="color: #000000;">$font_url </span><span class="pun" style="color: #666600;">=</span><span class="str" style="color: #008800;">"/"</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: #000000;">substr</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: #000000;">$filePath</span><span class="pun" style="color: #666600;">,</span><span class="pln" style="color: #000000;"> strpos</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: #000000;">$filePath</span><span class="pun" style="color: #666600;">,</span><span class="str" style="color: #008800;">"wp-content"</span><span class="pun" style="color: #666600;">));</span>

好了,网站已经彻底摆脱了对google的依赖,马麻再也不用担心访问我的网站只能看到转菊花了~ :)

你可能会眨巴着你一双无辜的水汪汪的大眼睛,问:你连谷歌都不上去又怎么离线它的css资源呢,这不也是悖论吗?我微风中头一甩,待额头上整齐的头发潇洒平安的降落在头的一侧的时候,答:当然是先把墙给翻了再做这件事喽,傻瓜~

另:网站中添加的谷歌analytics的js代码不会对网页加载产生影响。因为它是动态写上去,等网站发起对ga.js的请求的时候,网页中该请求的东西都请求完了。所以不会影响,只是有墙的情况下,由于ga.js请求不到,会影响google analytics对你网站流量监控的准确性。 <转载于:http://sudodev.cn/articles/354.html>

过滤javascript,html标签很重要
张映 发表于 2010-09-26 分类目录: [php](http://blog.51yip.com/category/php "查看 php 的全部文章")
用户输入的东西是不可信认的,例如,用户注册,用户评论等,这样的数据,你不光要做好防sql的注入,还要防止JS的注入,html的注入。 **一,javascript注入的危害** 举个简单的例子,我在一个网站留言了,并且这个网站没有对JS进行过滤,我在留言中加入以下内容
[查看](http://blog.51yip.com/php/1031.html#)[复制](http://blog.51yip.com/php/1031.html#)[打印](http://blog.51yip.com/php/1031.html#)[?](http://blog.51yip.com/php/1031.html#)
上面的代码虽然简单,可是可以无限循环,并且会一直弹东西出来,让人感觉很不爽,直到浏览器没有响应为止。浏览您网站的人,第一反应肯定是这个网站有病毒。 解决办法
[查看](http://blog.51yip.com/php/1031.html#)[复制](http://blog.51yip.com/php/1031.html#)[打印](http://blog.51yip.com/php/1031.html#)[?](http://blog.51yip.com/php/1031.html#)
  • $comment = preg_replace(“/<[^><]script[^><]>/i”,‘’,$comment);

  • 把里面的javascript标签去掉就行了。

    二,html注入的危害 1,容易引起页面错乱,对用户输入html标签不做处理的话,在读取的时候,很有可能就会破坏页面的布局。 2,影响seo,做seo的人都知道,pr高的网址,如果有链接,链到你的网站的话,可以加大自己网站的权重,这也是为什么有那么多人喜欢在高pr网站灌水的原因了。如果你没有对html标签进行处理的话,我输入以下内容

    [查看](http://blog.51yip.com/php/1031.html#)[复制](http://blog.51yip.com/php/1031.html#)[打印](http://blog.51yip.com/php/1031.html#)[?](http://blog.51yip.com/php/1031.html#)
  • <a href=http://XXX.com" style=“display:none;”>XXX.COM</a>

  • XXX.COM是个不河蟹网站,政府肯定会河蟹的,如果你的网站有链接到这样的网址,很有可能导致,你网站权重降低. 危害肯定不止这二个,因此要对这些html标签进行处理
    [查看](http://blog.51yip.com/php/1031.html#)[复制](http://blog.51yip.com/php/1031.html#)[打印](http://blog.51yip.com/php/1031.html#)[?](http://blog.51yip.com/php/1031.html#)
  • $comment = preg_replace(“/<[/!]?[^<>]?>/si”,‘’,$comment);

  • 过滤的方法有好多,也可以直接把<>这样的符号转义掉,或者直接删除掉都是可以的。

    转载请注明 作者:海底苍鹰 地址:http://blog.51yip.com/php/1031.html