东东东 陈煜东的博客

分类存档: 网站建设 ( 1 / 4)

网站的运营及网站的建设

Disqus已被认证

社交化评论系统Disqus在国外非常的流行,前几个月,我也是从duoshuo转到了Disqus,感觉评论的风格还算简洁,个人感觉也挺喜欢的。

用了一段时间,Disqus用HTTP无法访问了。为此专门研究了一下,原来HTTPS还可以访问,特意加将全站转向了HTTPS。没想到用了几个月,这两天发现评论框出不来了。

找了站长工具超级PING,发现基本一片红色呀。

大陆的访问disqus情况

大陆的访问disqus情况

各个地域的域名DNS解析

各个地域的disqus域名解析

各个地域的disqus域名解析

域名解析出来,已经到了『阿塞拜疆』,一个中东国家。

要想继续使用Disqus,那么只能靠有个海外的服务器进行反向代理了。目前没有购买海外服务器,改天看看有没有能搞一个海外服务器做反向代理。

本来想再用回duoshuo的,但是微博的头像竟然没有HTTPS的连接,想想还是先算了吧。真好搞,网上有很多『多说完美HTTPS』教程,看着搞代理,修改源码,都不太稳定。

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: Disqus已被认证 – https://www.chenyudong.com/archives/disqus-connect-timeout.html

分类: 网站建设

laravel安装使用、目录权限设置

前置条件

增加mcrypt

如果想偷懒ubuntu用户直接 apt-get install php5-mcrypt,发现还是不能用,修改/usr/local/php/lib/php.ini(每个人有差异,同时cli模式下也需要增加)增加下面内容

extension=mcrypt.so

如果你想自己编译安装,可以参考下文的openssl安装方法。

增加openssl的配置

我是从之前的PHP源码编译安装的。因为我之前的PHP源码还在的。

cd ~/php-5.5.16/ext/openssl

/usr/local/php/bin/phpize
Cannot find config.m4. 
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

mv config0.m4 config.m4
 
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config

make && make install

进入到/usr/local/php/lib/php.ini增加

extension=openssl.so

重启php-fpm。

安装

自己动手,丰衣足食版

  1. 先安装composer,参考官方文档
  2. 然后下载laravel的最新版,解压缩。
  3. 进入到目录下方compuser install
  4. 这个会让你的文件目录下多vendor。

懒人版

下载一个完整的laravel,然后解压缩就能用,不用为laravel安装组件。

这个的缺点就是你要更新你的laravel,会依赖于其他人更新。

我的方法

我是在自己的本地安装了一个composer,然后自己去下载最新的laravel组件,最后把整个包压缩上传到服务器去。不过这样更新生产环境的laravel会比较麻烦。不管了,一本开发了也不会对框架做太多的更新。

如果你迫不及待的访问url,会出现一些错误error in exception handler.。这个是因为写缓存、日志目录的没有写权限

为目录设置正确的写权限

/app/storage这个目录是laravel的一些写文件的目录,会写log、session、页面缓存等数据,所以要对这个目录设置正确的权限。

如果你为了方便设置chmod +777 app/storage也是可以的。但是我还是不推荐。

我推荐将目录的权限设置为会写文件的用户名和用户组。

chmod -R 777 app/storage
#访问一下网页,看看是否有输出。
#进入到/app/storage/session的文件组是谁?我的是nobody
#这个是php的用户组,我的nginx也是这个组
chmod -R 775 app/storage
chown -R :nobody app/storage

然后配置nginx就能访问了。

更改成debug模式,查看错误信息

有时候会出现问题,有不知道具体的信息,所以需要打开laravel的debug模式,可能查看更多的输出。

进入到laravel项目的/app/config/app.php

//把配置中的debug的false改成true
'debug' => true

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: laravel安装使用、目录权限设置 – https://www.chenyudong.com/archives/laravel-install.html

分类: 网站建设

nginx启用gzip压缩

网站的访问量如果越来越高,那么就需要考虑带宽的问题了,因为流量会提升一些费用成本,没有经过压缩的文本也会影响网页的加载速度。当然我目前对这个考虑还是远了,因为流量对我来说还没感受到那么大的问题。只是考虑用户提升访问速度。

当然了gzip压缩在当前HTTP传输来说还是主流的,所有的服务器应该都能启用gzip压缩才对。

对于Nginx来启用gzip很简单。打开nginx.conf配置进行编辑:

http {   #在http里面进行设置

    #开启gzip压缩
    gzip  on;

    #启用gzip压缩最小长度必须大于1kB,否则不启用压缩
    gzip_min_length 1k;

    # gzip压缩的缓冲区
    gzip_buffers 4 16k;

    # gzip压缩的等级,0-9之间,数字越大,压缩率越高,但是cpu消耗也大。
    gzip_comp_level 9;

    # 启用gzip的文件类型,一般text、css、json、javascript、xml进行压缩,image最好不要压缩了吧?
    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # 和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持。
    # 因此,为避免浪费不支持的也压缩,需要根据客户端的HTTP头来判断,是否需要压缩。
    gzip_vary on;

    # 好吧,IE6对gzip压缩不太好,但是应该要淘汰IE6了吧,你的受众是IE6用户,那么你也太没有魅力了。
    #gzip_disable "MSIE [1-6]\.";
}

推荐一个:http://gtmetrix.com/可以对页面访问速度进行一个打分,类似google page speed。

参考文章

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: nginx启用gzip压缩 – https://www.chenyudong.com/archives/nginx-enable-gzip.html

分类: 网站建设

让php-fpm开机启动启动

开机启动程序对于一些服务程序特别需要,因为有时候需要重启,但是每次重启后需要重新启动一些程序会比较麻烦,服务受影响的时间更长了。对于搭建Web服务,可以参考搭建Web网站服务教程

在编译安装php—fpm后,默认是不会开启自动启动的,需要进行一些配置才能开机启动。

执行vim /etc/init.d/php-fpm新建下面的内容:

#!/bin/sh
#
# php-fpm - this script starts and stops the php-fpm daemin
#
# chkconfig: - 85 15
# processname: php-fpm
# config:      /usr/local/php/etc/php-fpm.conf

set -e

#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="php-fpm daemon"
NAME=php-fpm
DAEMON=/usr/local/php/sbin/$NAME     #这里设成自己的目录
CONFIGFILE=/usr/local/php/etc/php-fpm.conf   #这里设成自己的目录
PIDFILE=/var/run/$NAME.pid   #这里设成自己的目录
SCRIPTNAME=/etc/init.d/$NAME   #这里设成自己的目录

# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0

d_start(){
   $DAEMON -y $CONFIGFILE || echo -n " already running"
}

d_stop(){
   kill -QUIT `cat $PIDFILE` || echo -n " no running"
}

d_reload(){
   kill -USR2 `cat $PIDFILE` || echo -n " could not reload"
}

case "$1" in
   start)
       echo -n "Starting $DESC: $NAME"
       d_start
       echo "."
       ;;
   stop)
       echo -n "Stopping $DESC: $NAME"
       d_stop
       echo "."
       ;;
   reload)
       echo -n "Reloading $DESC configuration..."
       d_reload
       echo "Reloaded."
       ;;
   restart)
       echo -n "Restarting $DESC: $NAME"
       d_stop
       # Sleep for two seconds before starting again,
       # this should give the nginx daemon some time to perform a graceful stop
       sleep 2
       d_start
       echo "."
       ;;
   *)
       echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload)" >&2
       exit 3
       ;;
esac
exit 0

添加可执行权限

chmod +x /etc/init.d/php-fpm

添加到开机自动启动

chkconfig --add php-fpm
chkconfig php-fpm on

这样后,php-fpm就会开机自动启动了,而且可以使用以下命令进行重启

service php-fpm start
service php-fpm stop
service php-fpm reload

另外一种平滑重启php-fpm可以使用kill -USR2 php-fpm.pid来进行,通过service命令就快很多啦。

参考文章:http://www.cnblogs.com/buffer/archive/2011/08/15/2138762.html

 

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 让php-fpm开机启动启动 – https://www.chenyudong.com/archives/add-php-fpm-to-autostart.html

分类: 网站建设

搭建Web网站服务教程

本文只介绍如何搭建Web所需的底层如何编译安装程序以及配置,不介绍如何编写Web网页。

Nginx相关

MySQL

PHP

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 搭建Web网站服务教程 – https://www.chenyudong.com/archives/build-website-tutorial.html

分类: 网站建设

关于IPv6视频直播的自动化监控计划

收集IPv6视频直播也有好长时间了,也都还是比较土的方式进行监控(哈哈,就是人工去监控啦)。虽然现在提供IPv6视频直播的学校已经变的很少了,但是还是要随时监控。而且过一段时间就毕业了,离开学校后想要获得IPv6地址已经很难了,就算获得了网速也得不到保证。因此在学校的时候先写好监控的代码,将来让研究生的同学从老师获得的服务器,放置一下代码。

现状

  1. 视频是否可以播放。视频能不能播放,全靠人工去点击,查看是否可以播放。这样的效率非常低下,而且也没有那么多的精力去人工检测这些视频的地址是否还可以播放。
  2. mms播放地址的网页更新。现在网页的还是使用纯HTML语言编写,没有涉及到后台的脚本。这样就导致我每次更新URL地址的时候得一个个的修改,特别是对于热门频道,我需要修改两次。这样的繁琐操作不像是一个科班出生的程序员的行为。
  3. 热门频道的排序。当时我的收藏夹还没推出,热门频道感觉还是一个不错的东西。当时发现CCTV5居然占据了第一名,是第二名湖南台的好几倍了。
  4. 视频地址与频道对不上号。经常学校那边给的播放频道与他的文字链接对不上号,经常出现频道漂移的情况,这样的问题需要解决。如果方便自己提取台标,或者让用户帮忙选择。
  5. 及时更新收藏夹的内容。更新频道的播放地址后,需要更新用户收藏夹的内容。现在是使用JS,人工的修改变量。将来需要保存上次的修改时间了。现在的出发时间还只精确到天,以后需要精确到秒,这个通过设置好服务器时钟很容易解决。

措施

  1. 针对第一点,需要编写程序脚本,想使用Python编写,但是好像vlc程序将mms转成rtsp协议就可以获取到数据,只是这样不知道成功率是否高?
  2. 第二点,mms链接的更新,这个只能存放在数据库中比较方便,现在需要将数据提取存储到数据库中,然后编写页面做展示。
  3. 第三点,热门频道已经进行了事件的监听,现在可以使用Google Analytics的API接口拉取数据,可以每天一拉取。但是在监听事件上要做一些修改,以融入特别的记录信息(高清独立提取出来)。
  4. 第四点,自己提取台标的方案与同学讨论后,发现这样的有难度,一个是图片的不清晰导致中文的提取有出现一些问题。可以考虑用户进行wiki,但是信任度的问题如何解决比较麻烦。
  5. 第五点,这个最简单,更改一些比较的逻辑,然后进行测试一下就可以了。

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 关于IPv6视频直播的自动化监控计划 – https://www.chenyudong.com/archives/about-ipv6-live-monitor-plan.html

分类: 网站建设

宜搜移动顶告的垃圾wap建站系统

有个好友让我打理一下宜搜的wap手机建站系统(居然还给它做了超链接,我这是万分的纠结要不要链接呢)。他说他买了个顶告(就是页面最上方的一个广告,不同于竞价排名)花了几万元买了几年的使用权。好像看上去也不贵,才几万元就买了个好的关键字,当然了,如果在百度上那是能产生巨大的流量的,但是在宜搜就不知道了。

惨不忍睹的登录页面

于是我就登录后台看了下,一个页面那么丑,就知道是很久之前开发的了(虽然版权时间写的是2014年,也不好说这个是不是程序自动生成的)。看了下登录页面,抓取了数据的流量包看了下。我会和你说他的验证码居然是用JS生成的,压根不涉及到后台的服务器的交互;而且密码居然是明文传输,这得是个多么老的系统啊。本来想搞搞SQL注入的,但是试了许久就是没有搞出来。让一个朋友找了下,马上就找出来了(我这技术还真是差的,想学习安全访问的知识还是得走很长的路啊)。

一般明文的密码,后台是SQL的where username=username and password=password条件判断是结果集是否大于0;如果是hash加密过的,那么后台一般是从数据库select password 字段,然后程序看两者是否相等。因此明文密码字段可以存在SQL注入,hash的密码字段就不方便了。

功能不全的管理后台

进入到后台,后台的丑就不多说了,那个学习安全的朋友说研究一下有没有上传漏洞,看看传个网马是否可以。后文就不了解了。

我尝试进行文章、栏目的管理。在发了几篇文章后,显示的文章列表居然不是按照文章时间排序的(最新的文章在最上面),而是越早发布的文章在最前面,这样就有个结果是用户看到的永远就是老的文章。这个对于一个信息管理系统来说,简直就是逆天了。也不知道是哪个产品想的,这么基本的需求就没有想到么,还是你们根本就没有什么产品经理。而且在发布文章的页面还有个发布时间的字段,这个又是要给谁看呢,这个只是那么一个小小的SQL的问题居然都没支持?

我问客服,那这样怎么办啊?他说这个功能没支持,但是会给你反馈到技术人员那里去。给我提到一个内嵌的搜索模块,提供一个关键字能自动更新里面的内容。这个功能对我来说并没有用,但是我尝试了使用下这个功能看看效果,结果大吃一惊。5条的结果,有两条完全与那个关键字无关。另外三条还和关键字勉强有关系。但是点击里面的链接一看,得,都是2013年的新闻呢。你这个新闻搜索的索引是多久没有更新过了?

忽悠骗人的移动顶告

宜搜的顶告在2012年底就说停止运行了,并且不会再卖顶告了。而手机wap建站系统是依附顶告出现的。用户在购买顶告的同时可以获得一个wap建站的账号,用户可以在里面发文章,建立自己的wap页面。从后台的管理页面下载的文档可以看到文档的最后修订时间是2011.11.21。在一年的时间里居然都没有再更新文档了,到现在也2年多了也没更新。我问客服,客服说一个月前还更新过呢,鬼知道呢。

听我那个朋友说,经常还有会人打电话给他说帮他装修wap页面、或者说想高价购买他的顶告关键字。装修页面就更忽悠了,因为装修页面其实很简单,但是却需要收很高的钱。想高价购买关键字这个很可能也是骗人的,因为他们为了唬住他的客户不起什么争端。因为用户在购买关键字的时候,宜搜的工作人员告诉他们顶告是一个很好的投资,将来会升值,为了给用户一个心理安慰或者说平静用户的心理,于是就不定期的想高价购买这些用户的关键字,其实最后什么都没有发生。

现在网络上还有很多说这个顶告是如何类似传销骗人的呢,本人不对真实性验证,请自觉判断。参见:

进入新的无线推广

上面的2012年底停止了移动顶告,早在2012年6月发布了宜点通系统,方便用户投放搜索广告,这个搜索广告就像百度的竞价排名类似,混在搜索的结果里面。

其实移动顶告确实很影响页面的体验结果,因为风格完全格格不入。

现在用户在购买宜点通的关键字的时候可以有触屏版的网站建站系统,不过这个我没有去看过里面是个怎么个情况。我问过客服,说wap要转成触屏的建站系统APP,需要开通宜点通的账户,开户费600,首次预存5000。

我对这个不看好,懒的去看。

有待提升的安全隐私

我尝试打他们的客服电话问问情况,惊奇的发现还真的有客服,并且还有QQ客服。我问了一些使用上的问题,他问了我的顶告关键字,于是就直接进入我的后台帮我进行捣鼓了。我也知道是客服好意主动帮我进行设置,但是就这样进入我的后台也太随意了,也不经过我的允许。

什么明文保存的密码、验证码等等问题。不过令我惊讶的是在文章的查看页面居然还一直没有找到SQL注入的漏洞。

其实这些也都不算什么了,网上有帖子说用户购买宜搜的顶告关键字后,那些资料就被卖给我中搜,然后中搜的人就给你狂轰乱炸来电话让你也购买他们的东西。

关于宜搜的流量

宜搜这个搜索我是没有听过,在2G流行的时候,我在2007年上高中,那个时候主要是诺基亚的塞班手机为主。2010年后我上大学了,这个时候只能才流行起来智能机。网上说在2G时代,宜搜在那个时候占有一些的市场份额。那个时代还有百度、易查(这个我同桌用过)。

看了易观的2013年Q4移动搜索流量,宜搜居然占了17%的份额,百度72%,腾讯搜搜7%。我对这个还是很怀疑的。因为其他的网上报道说宜搜已经基本不见。见国外的comScore、StatCounter都没有指出宜搜的份额。很可能是宜搜的软文也说不定。

问问周围的人,都没有听说过这个搜索引擎,你也可以问问周围的朋友是否有听过这个。当然了我的周围都是程序员,一般用Google和百度,所以没听听过也还比较正常。

但是看到easou的alexa流量百度指数。我不的不说这个流量还是很大的,而且考虑到手机端的alexa取值不太方便,因此还会再更多很多。但是这个并不能说明市场份额。但是看出现在关注的人已经变的少了,从2013年就开始下降了。

我在WAP的管理后台查看点击的流量,看了下每天才不到10个人点击。看帖子说当时宣传可以有上万的点击量呢。因为我那个朋友购买的关键字是和地域有关的,所以要看也应该是本省的用户点击才是,但是看统计居然是全国各地的用户点击进入的。谁知道这个数据是不是假的,或者这些用户都不是目标客户。

PS:宜搜的搜索主页触屏版还挺好看的。

宜搜会不会存在不好说,但是搜索这块是不行的了。除非切入垂直领域,正在转行手游?

更多关于宜搜的帖子:

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 宜搜移动顶告的垃圾wap建站系统 – https://www.chenyudong.com/archives/easou-bad-wap-system.html

分类: 网站建设

源码编译安装MySQL5.6.16

mysql5.6.16的安装和之前的5.5、5.1有些不同,编译的时候不再使用./configure来进行了,使用了cmake命令来进行编译项目。

准备编译环境

因为我的Linux是刚安装的,需要安装很多的必要程序。

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel gcc \ 
       autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*

下载MySQL

进入http://dev.mysql.com/downloads/mysql/ 的source/Generic Linux (Architecture Independent), Compressed TAR Archive,文件mysql-5.6.16.tar.gz

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz
tar xvf mysql-5.6.16.tar.gz
cd mysql-5.6.16

编译源码

接下来组织项目

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

注意,这个cmake是替代以前的./configure 步骤。如果你需要更多的参数,请参考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

有时候会出现类似的问题。

Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source. — If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80
  • 使用参数-DENABLE_DOWNLOADS=1 自动下载。
  • 有网络限制,设置http代理export http_proxy=http://example.com:80。环境变量http_proxy 也为 curl 等其他工具所用。尽管 yum 可以识别大写或小写的 http_proxy,但curl 要求环境变量的名称是小写。

如果这个cmake这个步骤有出现问题,解决后重新再cmake一次。如果输出类似这样,那么就好了。

-- Running cmake version 2.6.4
-- MySQL 5.6.16
-- Packaging as: mysql-5.6.16-Linux-x86_64
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- Using cmake version 2.6.4
-- Not building NDB
-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- GMOCK_SOURCE_DIR:/root/mysql-5.6.16/source_downloads/gmock-1.6.0
-- GTEST_LIBRARIES:gmock;gtest
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.6.16

接着编译源码

make && make install

编译时间缓慢,等待中…

修改文件权限,生成数据库

groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/mysql
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql --ldata=/data/mysql/data
chown -R root .
chown -R mysql data

说明:参数--ldata说明你的数据文件存放的目录,如果你使用默认的路径,那么这个参数可以去除。如果你不增加此参数,但是在配置文件(见下方的datadir配置)中指定了其他的目录,那么会在启动MySQL的时候出现类似的提示:

Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/data/VM_208.pid).

出现这个的解决办法就是增加--ldata参数,指定和配置文件中datadir相同的值,重新执行mysql_install_db即可。

设置配置文件

MySQL 5.6.8开始,就不在分发my.cnf等配置的demo,所以想随便拿一个用都比较麻烦。

my.cnf的配置文件的默认读取顺序为
File Name(上面的优先) Purpose
/etc/my.cnf Global options
/etc/mysql/my.cnf Global options
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options
defaults-extra-file The file specified with --defaults-extra-file=path, if any
~/.my.cnf User-specific options
~/.mylogin.cnf Login path options
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8

[mysqld]
port=3306
bind-address=127.0.0.1
basedir=/usr/local/mysql
datadir=/data/data/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

############# default settings  ################
# time zone
default-time-zone = system
character-set-server = utf8
default-storage-engine = InnoDB

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我的这个配置比较简单,声明一下常用的变量,如果你需要对性能优化,那么你需要细细研读一下配置文件。可以参考

启动MySQL,开机自动启动设置

手动启动MySQL。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
/etc/init.d/mysql start
##或者
service mysql start

在上面的步骤后,开机自动启动设置

chkconfig --add mysql
##有的系统需要下面的
chkconfig --level 345 mysql on

可以参考:http://dev.mysql.com/doc/refman/5.6/en/automatic-start.html

修改root密码

默认的密码是空的,很危险,需要修改一下。

在此之前,为方便调用mysql,我们先生成一个mysql的软链。

ln -s /usr/local/mysql/bin/mysql /usr/bin/

然后修改密码

mysql -uroot  -h127.0.0.1 -p
mysql> SET PASSWORD = PASSWORD('123456');

将来如果你忘记了root密码,可以参考重置MySQL密码

通过上面的步骤,就可以使用MySQL数据库了,另外可以为mysql安装phpmyadmin作为前端的管理界面。

参考资料

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 源码编译安装MySQL5.6.16 – https://www.chenyudong.com/archives/building-mysql-5-6-from-source.html

分类: 网站建设

Chrome插件onUpdate事件多次运行

在编写Chrome的一个插件,查询PR值的时候,发现网络访问请求了两次。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo,tab) {
    if ("loading"!=tab.status)return; 
    var url = tab.url;
    console.log("tab.url"+tab.url);
    if(url != undefined) {
        //do something
    }
});

以前知道按F5刷新页面onUpdated这个事件会触发两次。

  • 一次是loading的的时候
  • 一次是completed的时候

所以使用了if ("loading"!=tab.status)return; 来进行过滤两次的问题。

注意,新建一个tab页面的时候、进入新的链接(打开新的页面),这个opUpdated事件也是会被触发的。

虽然我使用了tab.status != “loading”来进行过滤两次的问题。但是还有一个问题。每次F5刷新页面,下面的代码只运行了一次,但是新建tab页面的时候、进入新的链接的时候,下面的代码居然运行了2次!

我在跟踪的过程中发现,这两种情况(新建tab页面、进入新的链接)下导致运行两次是因为favicon.ico这个文件。原来浏览器的tab页面每次更新url,都会去访问favicon.ico这个文件,每次访问都会触发这个事件。

提示:favicon.ico位于网站的根目录下方。比如我的是http://www.chenyudong.com/favicon.ico,这个文件在浏览器的tab页面的图标上显示。我的是

所以在tab更新url的时候,会有下面的三种情况

  • 访问url,触发事件,loading
  • 访问favicon,触发事件
  • 访问url结束,触发事件,complete

我们来看看changeInfotab这两个变量在这三种情况下的信息

//第一种 访问url,触发事件,loading
changeInfo = {status: "loading", url: "http://www.chenyudong.com/"} 
tab =  {
    active: true
    height: 992
    highlighted: true
    id: 3598
    incognito: false
    index: 39
    pinned: false
    selected: true
    status: "loading"
    title: "http://www.chenyudong.com/"
    url: "http://www.chenyudong.com/"
    width: 1846
    windowId: 1955
}

//第二种 访问favicon,触发事件
changeInfo  = {favIconUrl: "http://www.chenyudong.com/favicon.ico"} 
tab =  {
    active: true
    height: 992
    highlighted: true
    id: 3598
    incognito: false
    index: 39
    pinned: false
    selected: true
    status: "loading"
    title: "http://www.chenyudong.com/"
    url: "http://www.chenyudong.com/"
    width: 1846
    windowId: 1955
}

//第三种 访问url结束,触发事件,complete
changeInfo =  {status: "complete"} 
tab = {
    active: true
    favIconUrl: "http://www.chenyudong.com/favicon.ico"
    height: 992
    highlighted: true
    id: 3598
    incognito: false
    index: 39
    pinned: false
    selected: true
    status: "complete"
    title: "东东东  陈煜东的博客"
    url: "http://www.chenyudong.com/"
    width: 1846
    windowId: 1955
}

通过查看,我们可以发现,只有一次在访问url的时候,changeInfo会有url这个字段,所以可以利用这个字段来判断,让onUpdate里面的代码对每个url只运行一次。

//以后就使用下面的代码啦
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo,tab) {
    if( changeInfo.url == undefined)return;
    var url = tab.url;
    console.log("tab.url"+tab.url);
    if(url != undefined) {
        // do something
    }
});

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: Chrome插件onUpdate事件多次运行 – https://www.chenyudong.com/archives/chrome-extension-onupdate-event-twice.html

分类: 网站建设

Nginx上搭建WordPress及配置 完美迁移

昨天晚上20点,空间的带宽达到上限了,本来1个月才2G的流量,现在20天就跑5G,23点才发现网站不能访问。赶紧将www.daoiqi.com域名解析转成日本的Linode服务器上,但是博客却还没有迁移,因为要在Nginx上搭建WordPress比较麻烦,需要配置一些东西。

今天趁着零碎的时间,终于把博客给迁移到Nginx上了。这篇文章是参考http://codex.wordpress.org/Nginx,官网给出的配置,我这里没办法使用,但是我已经解决了。

第一步:上传代码

将代码上传到服务器,目录/data/www/chenyudong.com/wwwroot

第二步:设置Nginx.conf

修改nginx.conf文件,它可能在/etc/nginx/nginx.conf或者/usr/local/nginx/conf/nginx.conf下,看你的具体情况。本文假定在/usr/local/nginx/conf/nginx.conf目录下。

# Generic startup file.
user {user} {group};

#ususally equal to number of CPU's you have. run command "grep processor /proc/cpuinfo | wc -l" to find it
worker_processes  2;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

# Keeps the logs free of messages about not being able to bind().
#daemon     off;

events {
    worker_connections  1024;
}

http {
#   rewrite_log on;

    include mime.types;
    default_type       application/octet-stream;
    access_log         /var/log/nginx/access.log;
    sendfile           on;
#   tcp_nopush         on;
    keepalive_timeout  3;
#   tcp_nodelay        on;
#   gzip               on;
        #php max upload limit cannot be larger than this
    client_max_body_size 13m;
    index              index.php index.html index.htm;

    # Upstream to abstract backend connection(s) for PHP.
    upstream php {
        #this should match value of "listen" directive in php-fpm pool
        #server unix:/tmp/php-fpm.sock;
        server 127.0.0.1:9000;
    }

    include sites-enabled/*;
}

对着你的Nginx.conf的配置,参考一下这个配置

  • 其中33~37行,这个是php-fpm的一些设置,php-fpm是运行php用的一个cgi,一般都用这个;
  • 第39行,这个是为了添加多个站点使用的,以后新增站点就不用修改nginx.conf,直接在sites-enabled目录下添加一个nginx的配置即可

我的机器上,只有监听127.0.0.1:9000端口进行php的处理,没有/tmp/php-fpm.sock这个sock,所以我将上面的一行给注释了。如果没有注意到,这里会出现403 Forbidden的错误。

每个站点的设置

你肯定是有多个站点的吧,不可能装一个nginx就跑一个网站。新建一个文件/usr/local/nginx/conf/sites-enabled/chenyudong.conf。注意文件的位置,是在conf/sites-enabled目录下面。

# Redirect everything to the main site. We use a separate server statement and NOT an if statement - see http://wiki.nginx.org/IfIsEvil
server {
        server_name  _;
        rewrite ^ $scheme://mysite.com$request_uri redirect;
}

server {
    server_name www.chenyudong.com;
    root /data/www/chenyudong.com/wwwroot;

    include global/restrictions.conf;

    # Additional rules go here.

    # Only include one of the files below.
    include global/wordpress.conf;
#   include global/wordpress-ms-subdir.conf;
#   include global/wordpress-ms-subdomain.conf;
}

我们注意到11行include了一个文件,17行include了一个文件。这两个文件因为比较具有通用性,所以将其单独提取出来,方便以后多个站点进行include,减少重复的编写。

第三步:编写restrictions.conf

新建一个文件夹/usr/local/nginx/conf/global/,并在这个目录下新建一个文件restrictions.conf,绝对路径为/usr/local/nginx/conf/global/restrictions.conf。

这个配置是给限制一些文件的访问的。

# Global restrictions configuration file.
# Designed to be included in any server {} block.</p>
location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~ /\. {
    deny all;
}

# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}

文件说明:

  • 比如favicon.ico这个文件,一个网站的icon,就不用访问日志了,打出来也是浪费。robots.txt这个文件是给搜索引擎看得,也没必要打log
  • .开头的隐藏文件也禁止访问,这里面有重要的信息,比如 .htaccess, .htpasswd, .DS_Store (Mac).
  • uploads或者files下的php禁止访问,通常这个目录的意义是用户上传的一些文件,为了保证安全,防止用户上传可运行的脚本,禁止其访问。

通用的WordPress设置,配置文件

# WordPress single blog rules.
# Designed to be included in any server {} block.

# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
    index        index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
}

# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
    # Zero-day exploit defense.
    # http://forum.nginx.org/read.php?2,88845,page=3
    # Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
    # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#   fastcgi_intercept_errors on;
    fastcgi_pass php;
}

注意到第7行,指明默认的首页的文件名是什么。我之前没有这一样,在nginx.conf里,也没有为站点做设置,结果访问http://www.chenyudong.com/index.html跳转到了http://www.chenyudong.com/,但是因为没有指定index的文件,导致又一个403 Forbidden错误。

第8行,try_files这个命令相当于做一个url重写,可以利用它来做一个伪静态。try_files $uri $uri/ /index.php?$args,$uri是nginx的一个变量,他的意义是先查看一下uri这个文件是不是存在,存在就返回,不存在就检查uri/这个目录看是否存在,存在返回,不存在查看index.php?$args这个是不是存在,如果不存在就返回默认的错误码,一般是404错误。

确认是否需要更改数据库密码

从其他的地方迁移过来,检查一下是否需要更改数据库的用户名和密码,在文件/wp-config.php,可以更改博客的数据库用户名和密码。

重启nginx

重启一下nginx,准确的说应该是重新读取一下配置。/usr/local/nginx/sbin/nginx -s reload

访问一下http://www.chenyudong.com/就可以了,而且原有的重写规则还是可以用的。

参考文章:http://codex.wordpress.org/Nginx

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: Nginx上搭建WordPress及配置 完美迁移 – https://www.chenyudong.com/archives/nginx-support-wordpress-and-configure.html

分类: WordPress, 网站建设

较早的文章

Copyright © 2017 东东东 陈煜东的博客 粤ICP备13059639号-1

SITEMAP回到顶部 ↑