设置http响应头Cache-Control及Pragma,增加CDN cache命中率

最近在折腾CDN cache命中率。然后就发现在伪静态环境下,cdn缓存命中率非常低,一番折腾后发现如果源站的http头部包含一些不缓存的信息,那么CDN”也许“会相应的继承源站发出的HTTP状态。
通常喜欢用军哥LNMP安装包的朋友会发现,在动态及伪静态的环境中,HTTP头部信息会包含Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0 和 Pragma: no-cache,“可能“就是这种状态影响了CDN对源站缓存的判断。

如何去掉Cache-Control及Pragma在http头部中的状态呢?
如果没有看到此文的话,你会非常痛苦的认为是网站程序本身所发出的状态,然后一番查找修改后发现依然无解,我理解这个过程,因为我就是这么干的。非常之痛苦。。。。

其实解决Cache-Control: no-store,no-cache.....和Pragma: no-cache很简单,只需修改php.ini中的session.cache_limiter参数,军哥lnmp默认值是nocache,只要修改为none即可解决这个HTTP状态中的缓存问题。耶!耶!耶!耶!耶~~~~~~~~~


session.cache_limiter = nocache

改为 

session.cache_limiter = none

重启apache

HTTP响应拆分漏洞 WASC Threat Classification解决方案

HTTP响应拆分漏洞描述:
HTTP响应拆分漏洞,也叫CRLF注入攻击。CR、LF分别对应回车、换行字符。
HTTP响应拆分漏洞危害:攻击者可能注入自定义HTTP头。例如,攻击者可以注入会话cookie或HTML代码。这可能会进行类似的XSS(跨站点脚本)或会话固定漏洞。
HTTP响应拆分漏洞解决方案:
HTTP响应拆分漏洞修复的基本思路:
限制用户输入的CR和LF,或者对CR和LF字符正确编码后再输出,以防止注入自定义HTTP头。
HTTP响应拆分漏洞-PHP语言的解决方案:
这种现象往往表现在带有参数传递的网页,只要合理的过滤好就OK啦,PHP语言的一些过滤方法:
$uuid = trim($uuid);
$uuid = strip_tags($uuid,””); //清除HTML等代码
$uuid = ereg_replace(“\t”,””,$uuid); //去掉制表符号
$uuid = ereg_replace(“\r\n”,””,$uuid); //去掉回车换行符号
$uuid = ereg_replace(“\r”,””,$uuid); //去掉回车
$uuid = ereg_replace(“\n”,””,$uuid); //去掉换行
$uuid = ereg_replace(” “,””,$uuid); //去掉空格
$uuid = ereg_replace(“‘”,””,$uuid); //去掉单引号

在LINUX下有什么办法防止用户使用nmap -PS扫描时主机显示为host up状态

 请教高手,在LINUX下有什么办法防止用户使用nmap -SP扫描时主机显示为host up状态?谢谢
19:16:31
【冒泡】fred@深圳 2015/3/16 19:16:31

不允许ping,关闭全部端口应该可以吧

详细看看nmap -SP测试结果,通过tcpdump抓包发现,建立tcp连接后nmap就关闭连接了。

QQ图片20150316193330.jpg

 #nmap -Pn xxx.xxx.71.27 

我们看到服务器xxx.xxx.71.27只有80端口响应了,因此可以判断xxx.xxx.71.27 host up。

QQ图片20150316194947.png

Linux 免重新编译php安装扩展(示范zip安装)

PHPExcel读取Excel表格的时候报ZipArchive library is not enabled错误. 缺少zip 模块. 在Linux下没有zip.so这个模块文件(有也不会起作用的),所以需要重新编译一下php的增加zip模块。

1)重新到原来编译php的目录

#cd php-5.3.6/ext/zip

先执行phpize

# /usr/local/php/bin/phpize

返回:Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

2)运行了这个zip目录下会自动生成几个文件,其中包括configure

  1. #./configure  –enable-zip –with-php-config=/usr/local/php/bin/php-config 
  2. # make
  3. # make install

3)安装完成后修改一下php.ini

  1. # vim /usr/local/php/etc/php.ini

加入

  1. extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/zip.so   (路径可能不太一样,参考make install 返回路径)
  2. 然后同样在php.ini文件中,将 zlib.output_compression = Off 改为 zlib.output_compression = On .

之后重启/etc/init.d/httpd restart

Installing Redmine3 项目管理工具Redmine安装

Installing Redmine3 项目管理工具Redmine安装In

stalling Redmine

This is the installation documentation for Redmine 1.4.0 and higher. You can still read the document for 1.3.x here.

Requirements

Operating system

Redmine should run on most Unix, Linux, MacMac Server and Windows systems as long as Ruby is available on this platform. See specific installation HowTos here.

Ruby interpreter

The required Ruby versions for a given Redmine version is:

Redmine version Supported Ruby versions Rails version used
current trunk ruby 1.9.3, 2.0.01, 2.1, 2.2 Rails 4.2
trunk < r13482 ruby 1.8.72, 1.9.2, 1.9.3, 2.0.01, 2.1, jruby-1.7.6 Rails 3.2
3.0 ruby 1.9.3, 2.0.01, 2.1, 2.2 Rails 4.2
2.6 ruby 1.8.72, 1.9.2, 1.9.3, 2.0.01, 2.1, jruby-1.7.6 Rails 3.2

Redmine 2.x does not support Ruby 2.2. Redmine 3.0 supports Ruby 2.2 (#18947).

MRI 1.9.3p327 contains a bug breaking plugin loading under Windows which 1.9.3p194 or 1.9.3p392 haven’t.

1 At time of writing (3/19/2013), SQL Server support is reported broken with ruby 2.0.0 under Windows because of a database adapter gem incompatibility

2 Ruby MRI 1.8.7 support has reached its EOL and its use is discouraged. See Important: Ruby 1.8.7 out of support and #14371 for additional information.

Supported database back-ends

  • MySQL 5.0 or higher

    • make sure to install the C bindings for Ruby that dramatically improve performance. You can get them by running gem install mysql2.
    • Redmine 2.x is not compatible with mysql 5.7.3 (#17460). Il will be supported by Redmine 3.
  • PostgreSQL 8.2 or higher

    • make sure your database datestyle is set to ISO (Postgresql default setting). You can set it using: ALTER DATABASE "redmine_db" SET datestyle="ISO,MDY";
    • some bugs in PostgreSQL 8.4.0 and 8.4.1 affect Redmine behavior (#4259#4314), they are fixed in PostgreSQL 8.4.2
  • Microsoft SQL Server

    • Redmine 2.x: 2008 or higher (since Redmine 2.3.0)
    • Redmine 3.x: 2012 or higher
  • SQLite 3 (not for multi-user production use!)

Optional components

  • SCM binaries (eg. svn), for repository browsing (must be available in your PATH). See RedmineRepositories for SCM compatibility and requirements.
  • ImageMagick (to enable Gantt export to PNG image and thumbnails generation).
  • Ruby OpenID Library (to enable OpenID support). Version 2 or greater is required.

Redmine Version

It is recommended that the majority of users install the proper point releases of redmine. Redmine currently releases a new version every 6 months, and these releases are considered very usable and stable. It is not recommended to install redmine from trunk, unless you are deeply familiar with Ruby on Rails and keep up with the changes – Trunk does break from time-to-time.

Installation procedure

Step 1 – Redmine application

Get the Redmine source code by either downloading a packaged release or checking out the code repository.

See the download page for details.

Step 2 – Create an empty database and accompanying user

Redmine database user will be named redmine hereafter but it can be changed to anything else.

MySQL

CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; 

For versions of MySQL prior to 5.0.2 – skip the ‘create user’ step and instead:

GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'my_password'; 

PostgreSQL

CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine; 

SQL Server

The database, login and user can be created within SQL Server Management Studio with a few clicks.

If you prefer the command line option with SQLCMD, here’s some basic example:

Step 3 – Database connection configuration

Copy config/database.yml.example to config/database.yml and edit this file in order to configure your database settings for “production” environment.

Example for a MySQL database using ruby 1.8 or jruby:

production: adapter: mysql database: redmine host: localhost username: redmine password: my_password 

Example for a MySQL database using ruby 1.9 (adapter must be set to mysql2):

production: adapter: mysql2 database: redmine host: localhost username: redmine password: my_password 

If your server is not running on the standard port (3306), use this configuration instead:

production: adapter: mysql database: redmine host: localhost port: 3307 username: redmine password: my_password 

Example for a PostgreSQL database (default port):

production: adapter: postgresql database: <your_database_name> host: <postgres_host> username: <postgres_user> password: <postgres_user_password> encoding: utf8 schema_search_path: <database_schema> (default - public) 

Example for a SQL Server database (default host localhost, default port 1433):

production: adapter: sqlserver database: redmine username: redmine # should match the database user name password: redminepassword # should match the login password 

Step 4 – Dependencies installation

Redmine uses Bundler to manage gems dependencies.

You need to install Bundler first:

gem install bundler

Then you can install all the gems required by Redmine using the following command:

bundle install --without development test

Optional dependencies

RMagick (allows the use of ImageMagick to manipulate images for PDF and PNG export)

If ImageMagick is not installed on your system, you should skip the installation of the rmagick gem using:

bundle install --without development test rmagick

If you have trouble installing rmagick on Windows, refer to this HowTo.

Database adapters

Redmine automatically installs the adapter gems required by your database configuration by reading it from the config/database.yml file (eg. if you configured only a connection using the mysql2 adapter, then only the mysql2 gem will be installed).

Don’t forget to re-run bundle install --without development test ... after adding or removing adapters in the config/database.yml file!

Additional dependencies (Gemfile.local)

If you need to load gems that are not required by Redmine core (eg. Puma, fcgi), create a file named Gemfile.local at the root of your redmine directory. It will be loaded automatically when running bundle install.

Example:

# Gemfile.local
gem 'puma'

这里有提示,大致意思是说mysql-adapter有问题。 然后看了一下配置database.yml文件,确定adapter是mysql2,然后gem安装mysql2

$ gem install mysql2

Step 5 – Session store secret generation

This step generates a random key used by Rails to encode cookies storing session data thus preventing their tampering.
Generating a new secret token invalidates all existing sessions after restart.

  • with Redmine 1.4.x:
rake generate_session_store
  • with Redmine 2.x:
rake generate_secret_token

Step 6 – Database schema objects creation

Create the database structure, by running the following command under the application root directory:

RAILS_ENV=production rake db:migrate

Windows syntax:

set RAILS_ENV=production
rake db:migrate

It will create tables by running all migrations one by one then create the set of the permissions and the application administrator account, named admin.


Ubuntu troubleshooting:

If you get this error with Ubuntu:

Rake aborted!
no such file to load -- net/https

Then you need to install libopenssl-ruby1.8 just like this: apt-get install libopenssl-ruby1.8.

Step 7 – Database default data set

Insert default configuration data in database, by running the following command:

RAILS_ENV=production rake redmine:load_default_data

Redmine will prompt you for the data set language that should be loaded; you can also define the REDMINE_LANG environment variable before running the command to a value which will be automatically and silently picked up by the task.

E.g.:

Unices:

RAILS_ENV=production REDMINE_LANG=fr rake redmine:load_default_data

Windows:

set RAILS_ENV=production
set REDMINE_LANG=fr
rake redmine:load_default_data

Step 8 – File system permissions

NB: Windows users can skip this section.

The user account running the application must have write permission on the following subdirectories:

  1. files (storage of attachments)
  2. log (application log file production.log)
  3. tmp and tmp/pdf (create these ones if not present, used to generate PDF documents among other things)
  4. public/plugin_assets (assets of plugins)

E.g., assuming you run the application with a redmine user account:

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

Step 9 – Test the installation

Test the installation by running WEBrick web server:

  • with Redmine 1.4.x:
ruby script/server webrick -e production
  • with Redmine 2.x:
ruby script/rails server webrick -e production

Once WEBrick has started, point your browser to http://localhost:3000/. You should now see the application welcome page.

Note: Webrick is not suitable for production use, please only use webrick for testing that the installation up to this point is functional. Use one of the many other guides in this wiki to setup redmine to use either Passenger (aka mod_rails), FCGI or a Rack server (Unicorn, Thin, Puma, hellip;) to serve up your redmine.

Step 10 – Logging into the application

Use default administrator account to log in:

  • login: admin
  • password: admin

You can go to Administration menu and choose Settings to modify most of the application settings.

Configuration

Redmine settings are defined in a file named config/configuration.yml.

If you need to override default application settings, simply copy config/configuration.yml.example to config/configuration.yml and edit the new file; the file is well commented by itself, so you should have a look at it.

These settings may be defined per Rails environment (production/development/test).


Important

 : don’t forget to restart the application after any change.

Email / SMTP server settings

Email configuration is described in a dedicated page.

SCM settings

This configuration section allows you to:

  • override default commands names if the SCM binaries present in the PATH variable doesn’t use the standard name (Windows .bat/.cmd names won’t work)
  • specify the full path to the binary

Examples (with Subversion):

Command name override:

scm_subversion_command: "svn_replacement.exe"

Absolute path:

scm_subversion_command: "C:\Program Files\Subversion\bin\svn.exe"

Attachment storage settings

You can set a path where Redmine attachments will be stored which is different from the default ‘files’ directory of your Redmine instance using theattachments_storage_path setting.

Examples:

attachments_storage_path: /var/redmine/files
attachments_storage_path: D:/redmine/files

Logging configuration

Redmine defaults to a log level of :info, writing to the log subdirectory. Depending on site usage, this can be a lot of data so to avoid the contents of the logfile growing without bound, consider rotating them, either through a system utility like logrotate or via the config/additional_environment.rb file.

To use the latter, copy config/additional_environment.rb.example to config/additional_environment.rb and add the following lines. Note that the new logger defaults to a high log level and hence has to be explicitly set to info.

#Logger.new(PATH,NUM_FILES_TO_ROTATE,FILE_SIZE) config.logger = Logger.new('/path/to/logfile.log', 2, 1000000)
config.logger.level = Logger::INFO 

Backups

Redmine backups should include:

  • data (stored in your redmine database)
  • attachments (stored in the files directory of your Redmine install)

Here is a simple shell script that can be used for daily backups (assuming you’re using a mysql database):

# Database
/usr/bin/mysqldump -u <username> -p<password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz

# Attachments
rsync -a /path/to/redmine/files /path/to/backup/files

Notes on Linux/Unix installation

Be sure to disable security hardenning tools during the installation process if you run into bizarre permission problems. These problems are mostly silent and can be caused by tools like extended ACLs, SELinux, or AppArmor. There tools are mostly used in big companies with a strict security policy, default Linux/Unix distributions settings shouldn’t be a problem.

Notes on Windows installation

There is an prebuilt installer of Ruby MRI available from http://rubyinstaller.org.
After installing it, select Start Command Prompt with Ruby in the start menu.


Specifying the RAILS_ENV environment variable:

When running command as described in this guide, you have to set the RAILS_ENV environment variable using a separate command.

I.e. commands with the following syntaxes:

RAILS_ENV=production <any commmand>
<any commmand> RAILS_ENV=production

have to be turned into 2 subsequent commands:

set RAILS_ENV=production
<any commmand>


MySQL gem installation issue:

You may need to manually install the mysql gem using the following command:

gem install mysql

And in some case it is required to copy the libmysql.dll file in your ruby/bin directory.
Not all libmysql.dll are ok this seem to works http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll.

Important note for Win7 and later
On Win7 and later, localhost is commented out in the hosts file1 and IPV6 is the default2. As the mysql2 gem does no support IPV6 addresses3, a connection can’t be established and you get the error “Can't connect to MySQL server on 'localhost' (10061)“.
You can confirm this by pinging localhost, if ping targets “::1:” IPV6 is being used.


Workaround:


Replace localhost with 127.0.0.1 in database.yml.

1 http://serverfault.com/questions/4689/windows-7-localhost-name-resolution-is-handled-within-dns-itself-why

2 http://www.victor-ratajczyk.com/post/2012/02/25/mysql-fails-to-resolve-localhost-disable-ipv6-on-windows.aspx

3 https://github.com/brianmario/mysql2/issues/279

Alternative to manual installation

Some users may prefer to skip manual installation by using one of the third-party Redmine bundles on the download page.

腰椎小关节紊乱锻炼恢复方法

腰椎小关节紊乱康复锻炼方法

 

 

本法是笔者亲自体验发现的一个方法,

方法十分简单,

不花一分钱,

对身体无任何损害,

很可能为你尽快解除痛苦。

不久前,

由于一次劳动,

导致腰痛难忍,经医生检查确诊为腰椎间盘突出及腰椎小关节紊乱,其

中以后者为主。经过理疗、推拿按摩、贴敷各种膏药、口服壮腰建肾丸

等药,效果均不显著。后来自己突发奇想,做了几次下蹲运动,结果奇

迹发生了:两天见效,不到两周症状完全消失。具体做法是:

 

1

、自然站立,两腿分开与肩同宽,两手自然下垂,挺胸、抬头、

收腹,目视前方。

 

2

、下蹲:大约每分钟

30

——

40

次,下蹲时,两臂自然向前、向上

摆动至与眼同高,手心向下,下蹲到最低时,手臂上摆到最高位置(与

眼同高)

。下蹲的位置可根据个人年龄、体质情况决定,一般向下的幅

度在

20

——

30

厘米左右,幅度越大,运动强度越大;站起时,手臂随

之自然下垂摆动。依此反复下蹲——站起。大约做

200

——

300

次即可,

时间约

7

——

10

分钟。

 

坚持用本法锻炼,不仅可以治疗腰椎小关节紊乱,而且对身体的锻

炼效果也十分显著,各位不妨一试,相信您一定会尝到甜头的!

 

祝各位身体健康!

   脊椎小关节综合征又称脊椎小关节紊乱,系指脊椎小关节在扭转外力作用下,超出正常活动范围而发生侧向滑移,造成其周围韧带肌肉损伤和超出生理活动范围,且不能自行复位而导致脊椎功能障碍者。临床较为常见,本病的出现,既有脊椎结构上的内因,又有脊椎不能承受负荷失稳的外因。包括:颈椎小关节错位、胸椎小关节错位、腰椎小关节错位、骶髂关节错位。本病好发于青壮年,若治疗不当,或耽误治疗,可引起持续性的颈、胸、腰、骶部的疼痛。其中腰椎小关节错位又称腰椎滑膜嵌顿综合征最为常见及严重,另节叙述。本节主要讨论颈、胸及骶髂关节错位。


    本法是笔者亲自体验发现的一个方法,方法十分简单,不花一分钱,对身体无任何损害,很可能为你尽快解除痛苦。不久前,由于一次劳动,导致腰痛难忍,经医生检查确诊为腰椎间盘突出及腰椎小关节紊乱,其中以后者为主。经过理疗、推拿按摩、贴敷各种膏药、口服壮腰建肾丸等药,效果均不显著。后来自己突发奇想,做了几次下蹲运动,结果奇迹发生了:两天见效,不到两周症状完全消失。具体做法是:  
1、自然站立,两腿分开与肩同宽,两手自然下垂,挺胸、抬头、收腹,目视前方。  
2、下蹲:大约每分钟30——40次,下蹲时,两臂自然向前、向上摆动至与眼同高,手心向下,下蹲到最低时,手臂上摆到最高位置(与眼同高)。下蹲的位置可根据个人年龄、体质情况决定,一般向下的幅度在20——30厘米左右,幅度越大,运动强度越大;站起时,手臂随之自然下垂摆动。依此反复下蹲——站起。大约做200——300次即可,时间约7——10分钟。  
   坚持用本法锻炼,不仅可以治疗腰椎小关节紊乱,而且对身体的锻炼效果也十分显著,各位不妨一试,相信您一定会尝到甜头的! 

免费且开源的项目管理工具redmine3的安装和升级

Redmine

这是一款开源的、灵活的项目管理Web解决方案。使用Ruby on Rails框架编写的,支持跨平台和跨数据库。主要功能包括:

  • 灵活的项目控制;
  • 支持多个项目;
  • 灵活的问题追踪系统;
  • Gantt图表;
  • 新闻、文件/文档管理;
  • 电子邮件/心疼通知;
  • 实时追踪;
  • 每个项目论坛;
  • 每个项目Wiki;
  • 自定义字段条目时、问题、影虎以及项目;
  • SCM集成(CVS,SVN,Git,Mercurial,Darcs,Bazaar);
  • 支持多个LDAP验证;
  • 支持多语言;
  • 使用email创建问题;
  • 支持用户自定义注册;

  • 支持多种数据库。

免费且开源的项目管理工具redmine3的安装和升级

参考:

http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Requirements

Redmine 3.0的需求:
current trunk	ruby 1.9.3, 2.0.01, 2.1, 2.2	Rails 4.2

1. 搭建redmine3环境

【安装软件包】
# yum install zlib-devel gcc gcc-c++ make autoconf curl-devel ImageMagick-devel mysql mysql-devel


【下载安装包,修改db和email的设置】
# tar zxvf redmine-3.0.0.tar.gz && cd redmine-3.0.0/config
# cp -a database.yml.example database.yml
# cp -a configuration.yml.example configuration.yml


【建立ruby2.2 + rails 4.2的环境】
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# curl -sSL https://get.rvm.io | bash -s stable --ruby --rails               

重新登录一次:
$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
$ rails -v
Rails 4.2.0


# rvm gemset list

gemsets for ruby-2.2.0 (found in /usr/local/rvm/gems/ruby-2.2.0)
=> (default)
   global

# cd /data/website/ ;mv redmine-3.0.0 redmine  【安装依赖包】
# ./bin/bundle install --without development test
--- bundle install的时候半天没有响应,具体可以用 gem install bundle -V 来查看执行过程。
如何更换:
$ gem sources --remove https://rubygems.org/ 
$ gem sources -a https://ruby.taobao.org/ 
$ gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org # 请确保只有 ruby.taobao.org $ gem install rails
# useradd -s /sbin/nologin -M -c "redmine" redmine
# chown -R redmine:redmine /data/website/redmine-3.0.0

若是全新安装:
【db】

mysql登录后,建立redmine数据库和用户:
# mysql -h x.x.x.x -P xxxx -uroot -p 
mysql> create database redmine character set utf8 collate utf8_bin;
mysql> create user ‘redmine‘@‘127.0.0.1‘ identified by ‘xxxxxx‘;
mysql> grant all privileges on redmine.* to ‘redmine‘@‘127.0.0.1‘;
mysql> exit;

# rake generate_secret_token
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
# mkdir -p tmp tmp/pdf public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets


若是升级:
【db】
备份数据库
检查db用户权限
命令行测试连接

执行:
# bundle exec rake generate_secret_token
# bundle exec rake db:migrate RAILS_ENV=production
若有插件:
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production

# bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV=production




启动服务:
# cd /data/website/redmine-3.0.0/
# ruby bin/rails server webrick -e production
也可以放入后台:
# nohup ruby bin/rails server webrick -e production >>/data/log/web/redmine/running_redmine.log 2>&1 &


默认管理员:admin, admin
访问http://IP:3000


2. 迁移redmine服务到nginx下
# yum install pcre pcre-devel
# wget http://nginx.org/download/nginx-1.6.2.tar.gz
# tar zxvf nginx-1.6.2.tar.gz -C /data/download/
# mkdir -p /var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp}
# gem install passenger
# passenger -v
Phusion Passenger version 4.0.59

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

注:若遇到gem install passenger不能生效的问题,可能是ruby的仓库被GFW了,此时,先安装fastthread可以解决问题:
# gem install fastthread
# gem install passenger

安装:
# passenger-install-nginx-module

Enter your choice (1 or 2) or press Ctrl-C to abort: 2

--------------------------------------------

Where is your Nginx source code located?

Please specify the directory: /data/download/nginx-1.6.2

--------------------------------------------

Where do you want to install Nginx to?

Please specify a prefix directory [/opt/nginx]: /etc/nginx

--------------------------------------------

Extra Nginx configure options

If you want to pass extra arguments to the Nginx ‘configure‘ script, then
please specify them. If not, then specify nothing and press Enter.

If you specify nothing then the ‘configure‘ script will be run as follows:

  sh ./configure --prefix=‘/etc/nginx‘ --with-http_ssl_module --with-http_gzip_static_module \
 --with-http_stub_status_module --with-cc-opt=‘-Wno-error‘\
 --add-module=‘/usr/local/rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/ext/nginx‘

Extra arguments to pass to configure script: --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
 --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx

--------------------------------------------

Confirm configure flags

The Nginx configure script will be run as follows:

  sh ./configure --prefix=‘/etc/nginx‘ --with-http_ssl_module --with-http_gzip_static_module \
--with-http_stub_status_module --with-cc-opt=‘-Wno-error‘ \
--add-module=‘/usr/local/rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/ext/nginx‘ \
--sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx



--------------------------------------------

Nginx with Passenger support was successfully installed.

Please edit your Nginx configuration file,
and set the passenger_root and passenger_ruby configuration options in the
‘http‘ block, like this:

  http {
      ...
      passenger_root /usr/local/rvm/gems/ruby-2.2.0/gems/passenger-4.0.59;
      passenger_ruby /usr/local/rvm/gems/ruby-2.2.0/wrappers/ruby;
      ...
  }

After you (re)start Nginx, you are ready to deploy any number of web
applications on Nginx.


Press ENTER to continue.

--------------------------------------------

Deploying a web application: an example

Suppose you have a web application in /somewhere. Add a server block
to your Nginx configuration file, set its root to /somewhere/public, and set
‘passenger_enabled on‘, like this:

   server {
      listen 80;
      server_name www.yourhost.com;
      root /somewhere/public;   # <--- be sure to point to ‘public‘!
      passenger_enabled on;
   }

And that‘s it! You may also want to check the Users Guide for security and
optimization tips and other useful information:

  /usr/local/rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/doc/Users guide Nginx.html
  https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.



# useradd -s /sbin/nologin -M -c "nginx Server" nginx
# mkdir -p /etc/nginx/conf.d /data/log/svr/nginx /data/log/web/redmine

$ cat /etc/nginx/nginx.conf

#user  nobody;
worker_processes  4;

error_log  /data/log/svr/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /var/run/nginx.pid;


events {
    use epoll;
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  /data/log/svr/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
    keepalive_timeout  65;


    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_body_temp_path /tmp;
    client_max_body_size 500m;


    fastcgi_connect_timeout 600;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 3600;
    fastcgi_buffer_size 400k;
    fastcgi_buffers 16 1m;
    fastcgi_busy_buffers_size 10m;
    fastcgi_temp_file_write_size 20m;
    fastcgi_intercept_errors on;

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_disable        "MSIE [1-6].";
    gzip_types  text/plain application/x-javascript text/css text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    
    passenger_root /usr/local/rvm/gems/ruby-2.2.0/gems/passenger-4.0.59;
    passenger_ruby /usr/local/rvm/gems/ruby-2.2.0/wrappers/ruby;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include conf.d/*.conf;

}


$ cat /etc/nginx/conf.d/redmine.conf    
#
# redmine
#
server {
    listen       10.221.221.118:80;
    server_name  redmine.xxx.com;
    root   /data/website/redmine-3.0.0/public;
    passenger_enabled on;

    access_log  /data/log/web/redmine/access.log  main;
}

爆笑的邮件自动回复内容,邮件自动回复心理

相信很多人都会在外出或休假时把自己的邮件设置成“自动回复”——写上一小段话向来信的人说明自己不在。而以下这几位老兄就有才了,看看他们的回复,你会不会哭笑不得呢?不过有些人明明在工作,没有出差旅行也设置自动回复,到底是什么心理?

1. I am currently out of the office at a job interview and will reply to you if I fail to get the position. Please be prepared for my mood。

我现在不在办公室、在外头面试一工作。如果成不了,我就回来回复你——你最好有心理准备我会发飙。

2. You are receiving this automatic notification because I am out of the office. If I was in, chances are you wouldn’t have received anything at all。

你现在收到这个自动回复就表示我不在办公室。如果我在办公室,那你多半啥也收不到。

3. Sorry to have missed you, but I’m at the doctor’s having my brain and heart removed so I can be promoted to our management team。

抱歉错过了你的消息,因为我现在医生这里、让他们把我整一个没心没肺的,好晋升到管理层。

4. I will be unable to delete all the emails you send me until I return from vacation. Please be patient, and your mail will be deleted in the order it was received。

要等我休假回来我才有时间删你发来的邮件哦。耐心点,我会按你发的顺序依次删除哒!

5. Thank you for your email. Your credit card has been charged $5.99 for the first 10 words and $1.99 for each additional word in your message。

谢谢你的来信。前十个字将从你的信用卡中扣除5.99美金,以后每个字按1.99美金计费。

6. The email server is unable to verify your server connection. Your message has not been delivered. Please restart your computer and try sending again。

邮件服务器无法检测到你的链接。你的讯息未能被发送,请重启电脑试着再发一遍。

7. Thank you for your message, which has been added to a queuing system. You are currently in 352nd place, and can expect to receive a reply in approximately 19 weeks。

谢谢你的来信,它已被添加到列队等候系统。你现在所在的位置是352位,预计将于19周后收到回复。

8. Hi, I’m thinking about what you’ve just sent me. Please wait by your PC for my response。

嗨,我在想你刚刚发给我的东西,请侯在电脑旁边等我回复。

9. I’ve run away to join a different circus。

我跟你现在不是一圈子里的人。

10. I will be out of the office for the next two weeks for medical reasons. When I return, please refer to me as ‘Kate’ instead of Dave。

我因为身体原因未来两周都会休假。等我回来之后记得叫我“凯特”(女生名),不要再叫大卫了。



人明明在工作,难道跟运营商打交道的都喜欢这样,但是其他公司没有这个习惯呀,真的是奇葩公司!发完邮件给别人后立即就能收到自动回复,没有意义,还要删除,觉得很烦人。这是礼貌的表现吗?

QQ截图20150313163831.jpg

同意LZ,不同意LS。自动回复只是到达对方服务器了,又不代表对方看到邮件了,没有意义。

我平时邮件很多,最烦的就是自动回复了。。。感觉很rude。

其实自动回复的作用主要在,比如“I’m on vacation, 需要几时才能回复你的邮件”这种时候,平时就不用开了吧。。。


这玩意主要是两个作用:

1、用来告诉对方他的邮件确实已经收到了,并且你没发错人,和为了避免以后出问题扯皮,主要是对服务对象的用户体验上的要求。–看来还有人是这个心理,无语了

2、确实是不在,告诉对方可能会过一段时间才会回复邮件

linux之CentOS配置proftpd

1.proftpd软件下载安装

[root@chenghy ~]# cd /root

[root@chenghy ~]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4c.tar.gz

[root@chenghy ~]# tar zxvf proftpd-1.3.4c.tar.gz

[root@chenghy ~]# cd proftpd-1.3.4c

[root@chenghy ~]# ./configure –prefix=/usr/local/proftpd

[root@chenghy ~]# make

[root@chenghy ~]# make install


 2.修改proftpd配置文件

[root@chenghy ~]# vim /usr/local/proftpd/etc/proftpd.conf

ServerName “chenghy’s FTP Server”

ServerType standalone # 以独立进程方式运行

DefaultServer on

Port 2100 # FTP端口

Umask 002 # 权限,建议设置为002

UseReverseDNS off # 禁止DNS反查

IdentLookups off # 禁止DNS反查

ServerIdent off # 隐藏软件版本信息

AllowRetrieveRestart on # 下载断点续传

AllowStoreRestart on # 上传断点续传

## 虚拟用户认证信息

AuthOrder mod_auth_file.c # 只允许虚拟用户登陆

AuthUserFile /usr/local/proftpd/etc/ftp.users

AuthGroupFile /usr/local/proftpd/etc/ftp.group

DefaultRoot ~ # 将用户限定在根目录下

PassivePorts 20000 30000 # 被动模式端口段

SystemLog /var/log/proftpd/proftpd.log # 软件日志

TransferLog /var/log/proftpd/proftpd.xfer.log

LogFormat default “%h %u %t %D \”%r\” %s %b” # 日志格式

ExtendedLog /var/log/proftpd/access.log WRITE,READ default # 访问日志

MaxInstances 250 # 允许最大连接

MaxClients 20 # 最大用户数

MaxLoginAttempts 3 # 最大尝试连接次数

TimeoutLogin 30 # 身份验证超时

TimeoutIdle 120 # 发呆超时

TimeoutNoTransfer 300 # 无数据传输超时

User nobody # 定义ftp以哪个用户身份运行

Group nobody # 定义ftp以哪个用户组身份运行

<Directory ~/>

AllowOverwrite on # 允许写入覆盖

 <Limit LOGIN CWD RETR READ DIRS> # 设置虚拟用户读权限

 AllowALL

 </Limit>

 <Limit ALL> # 设置omd用户所有权限

 Order allow,deny

 AllowUser omd

 DenyALL

 </Limit>

</Directory>


 3.添加proftpd虚拟用户和组

[root@chenghy ~]# /usr/local/proftpd/bin/ftpasswd –passwd –name=bsmp –home=/home/omd/file/ –uid=2001 –gid=2000 –shell=/sbin/nologin –file=/usr/local/proftpd/etc/ftp.users

[root@chenghy ~]# /usr/local/proftpd/bin/ftpasswd –passwd –name=omd –home=/home/omd/ –uid=2002 –gid=2000 –shell=/sbin/nologin –file=/usr/local/proftpd/etc/ftp.users

[root@chenghy ~]# /usr/local/proftpd/bin/ftpasswd –group –name=myftp –gid=2000 –member=bsmp –member=omd –file=/usr/local/proftpd/etc/ftp.group


 4.将proftpd用户目录设置权限

[root@chenghy ~]# chown -R 2002:2000 /home/omd/


####下面两行用来删除用户和组###########

[root@chenghy ~]# /usr/local/proftpd/bin/ftpasswd –passwd –name=bsmp  –delete-user –file=/usr/local/proftpd/etc/ftp.users

[root@chenghy ~]# /usr/local/proftpd/bin/ftpasswd –group –name=myftp  –delete-group –file=/usr/local/proftpd/etc/ftp.group


 5.将proftpd添加到系统服务

按照网上的资料修改/etc/rc.d/init.d/proftpd文件后发现配置不成功,后来自己修改了一下此文件完成了配置

[root@chenghy ~]# vim /etc/rc.d/init.d/proftpd

#!/bin/sh

# Source function library.

. /etc/rc.d/init.d/functions

RETVAL=0

start() {

 echo -n $”Starting proftpd : “

 daemon /usr/local/proftpd/sbin/proftpd -c /usr/local/proftpd/etc/proftpd.conf 2>/dev/null

# daemon命令是/etc/rc.d/init.d/functions中自带的

 RETVAL=$?

 echo

 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd

}

stop() {

 echo -n $”Shutting down proftpd : “

 killproc proftpd

# killproc命令是/etc/rc.d/init.d/functions中自带的

 RETVAL=$?

 echo

 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd

}

# See how we were called.

case “$1” in

 start)

 start

 ;;

 stop)

 stop

 ;;

 restart)

 stop

 start

 ;;

 *)

 echo “Usage: proftpd { start | stop | restart }”

esac

[root@chenghy ~]# chmod 755 /etc/rc.d/init.d/proftpd

[root@chenghy ~]# chkconfig add proftpd

[root@chenghy ~]# chkconfig –level 35 proftpd on

[root@chenghy ~]# service proftpd start

 6.防火墙设置proftpd端口

只允许主动模式访问添加下面的第①、②条,只允许被动模式访问添加下面的②、③条,两种模式都允许添加下面①、②、③条。

[root@chenghy ~]# iptables -A RH-Firewall-1-INPUT -p tcp -m tcp –dport 20 -j ACCEPT

[root@chenghy ~]# iptables -A RH-Firewall-1-INPUT -p tcp -m tcp –dport 2100 -j ACCEPT

[root@chenghy ~]# iptables -A RH-Firewall-1-INPUT -p tcp -m tcp –dport 20000:30000 -j ACCEPT

中国长宽的DNS IP地址大全(32个省)

中国长宽DNS IP地址,包括广东长宽DNS,湖北长宽DNS,北京长宽DNS,天津长宽DNS上海长宽DNS等共全国32个长宽省份的DNS IP地址。

DNS 用户数 国家 省份 地区 运营商 用户数排名(省份) 用户数比例(省份)
211.162.78.1 301900 中国 广东 深圳 长宽 15 0.53%
211.162.78.2 278800 中国 广东 深圳 长宽 17 0.49%
211.162.62.61 171200 中国 广东 广州 长宽 22 0.30%
211.161.159.3 167800 中国 湖北 武汉 长宽 11 1.25%
211.162.61.236 163400 中国 广东 广州 长宽 24 0.28%
211.161.158.10 159400 中国 湖北 武汉 长宽 12 1.18%
211.161.159.5 156800 中国 湖北 武汉 长宽 13 1.16%
211.161.192.1 148400 未知 未知 未知 长宽 2 2.32%
211.162.62.1 142000 中国 广东 广州 长宽 26 0.25%
211.161.46.84 140100 中国 北京 长宽 7 1.22%
211.161.46.85 136100 中国 北京 长宽 8 1.18%
220.115.240.242 133900 中国 天津 长宽 3 3.39%
211.161.158.11 133000 中国 湖北 武汉 长宽 14 0.99%
220.115.240.246 131400 中国 天津 长宽 4 3.33%
211.162.61.235 115500 中国 广东 广州 长宽 28 0.20%
211.162.130.33 97100 中国 四川 成都 长宽 8 0.68%
211.162.130.8 88500 中国 四川 成都 长宽 9 0.62%
211.161.192.73 71900 中国 上海 长宽 17 0.75%
211.162.208.2 66200 中国 重庆 长宽 10 0.85%
211.162.208.18 63700 中国 重庆 长宽 11 0.82%
211.162.0.10 59600 中国 安徽 合肥 长宽 10 0.56%
211.162.32.1 59100 中国 福建 厦门 长宽 11 0.45%
211.162.32.20 56700 中国 福建 厦门 长宽 12 0.43%
211.161.116.153 41400 中国 湖南 长沙 长宽 22 0.34%
211.161.112.249 36800 中国 江西 南昌 长宽 12 0.48%
211.161.112.253 36500 中国 江西 南昌 长宽 13 0.48%
211.161.78.2 34300 中国 广东 惠州 长宽 43 0.06%
211.162.31.8 32100 中国 江苏 南京 长宽 18 0.16%
211.162.31.20 30800 中国 江苏 南京 长宽 19 0.16%
211.162.47.1 26800 中国 福建 福州 长宽 22 0.20%
211.162.47.2 26500 中国 福建 福州 长宽 23 0.20%
211.162.96.1 24700 中国 广东 东莞 长宽 55 0.04%
180.89.255.2 23300 中国 未知 长宽 5 5.86%
220.114.222.53 19200 中国 广东 肇庆 长宽 64 0.03%
211.161.159.114 17200 中国 湖北 武汉 长宽 30 0.13%
211.162.62.2 16800 中国 广东 广州 长宽 74 0.03%
220.113.150.8 15400 中国 天津 长宽 12 0.39%
220.114.252.1 15300 中国 广东 韶关 长宽 76 0.03%
220.113.150.58 15000 中国 天津 长宽 13 0.38%
211.161.159.115 13900 未知 未知 未知 长宽 20 0.22%
180.89.255.22 12100 中国 未知 长宽 6 3.04%
211.162.223.4 8400 中国 四川 成都 长宽 43 0.06%
220.115.166.85 5700 中国 广东 广州 长宽 142 0.01%
220.115.166.91 5700 中国 广东 广州 长宽 141 0.01%
DNS 用户数 国家 省份 地区 运营商 用户数排名(省份) 用户数比例(省份)
211.162.78.1 301900 中国 广东 深圳 长宽 15 0.53%
211.162.78.2 278800 中国 广东 深圳 长宽 17 0.49%
211.162.62.61 171200 中国 广东 广州 长宽 22 0.30%
211.161.159.3 167800 中国 湖北 武汉 长宽 11 1.25%
211.162.61.236 163400 中国 广东 广州 长宽 24 0.28%
211.161.158.10 159400 中国 湖北 武汉 长宽 12 1.18%
211.161.159.5 156800 中国 湖北 武汉 长宽 13 1.16%
211.161.192.1 148400 未知 未知 未知 长宽 2 2.32%
211.162.62.1 142000 中国 广东 广州 长宽 26 0.25%
211.161.46.84 140100 中国 北京 长宽 7 1.22%
211.161.46.85 136100 中国 北京 长宽 8 1.18%
220.115.240.242 133900 中国 天津 长宽 3 3.39%
211.161.158.11 133000 中国 湖北 武汉 长宽 14 0.99%
220.115.240.246 131400 中国 天津 长宽 4 3.33%
211.162.61.235 115500 中国 广东 广州 长宽 28 0.20%
211.162.130.33 97100 中国 四川 成都 长宽 8 0.68%
211.162.130.8 88500 中国 四川 成都 长宽 9 0.62%
211.161.192.73 71900 中国 上海 长宽 17 0.75%
211.162.208.2 66200 中国 重庆 长宽 10 0.85%
211.162.208.18 63700 中国 重庆 长宽 11 0.82%
211.162.0.10 59600 中国 安徽 合肥 长宽 10 0.56%
211.162.32.1 59100 中国 福建 厦门 长宽 11 0.45%
211.162.32.20 56700 中国 福建 厦门 长宽 12 0.43%
211.161.116.153 41400 中国 湖南 长沙 长宽 22 0.34%
211.161.112.249 36800 中国 江西 南昌 长宽 12 0.48%
211.161.112.253 36500 中国 江西 南昌 长宽 13 0.48%
211.161.78.2 34300 中国 广东 惠州 长宽 43 0.06%
211.162.31.8 32100 中国 江苏 南京 长宽 18 0.16%
211.162.31.20 30800 中国 江苏 南京 长宽 19 0.16%
211.162.47.1 26800 中国 福建 福州 长宽 22 0.20%
211.162.47.2 26500 中国 福建 福州 长宽 23 0.20%
211.162.96.1 24700 中国 广东 东莞 长宽 55 0.04%
180.89.255.2 23300 中国 未知 长宽 5 5.86%
220.114.222.53 19200 中国 广东 肇庆 长宽 64 0.03%
211.161.159.114 17200 中国 湖北 武汉 长宽 30 0.13%
211.162.62.2 16800 中国 广东 广州 长宽 74 0.03%
220.113.150.8 15400 中国 天津 长宽 12 0.39%
220.114.252.1 15300 中国 广东 韶关 长宽 76 0.03%
220.113.150.58 15000 中国 天津 长宽 13 0.38%
211.161.159.115 13900 未知 未知 未知 长宽 20 0.22%
180.89.255.22 12100 中国 未知 长宽 6 3.04%
211.162.223.4 8400 中国 四川 成都 长宽 43 0.06%
220.115.166.85 5700 中国 广东 广州 长宽 142 0.01%
220.115.166.91 5700 中国 广东 广州 长宽 141 0.01%