<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>days of linnchord &#187; linode</title>
	<atom:link href="http://linnchord.net/archives/tag/linode/feed" rel="self" type="application/rss+xml" />
	<link>http://linnchord.net</link>
	<description>南台静坐 : : :</description>
	<lastBuildDate>Thu, 03 Nov 2011 02:22:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>hosts</title>
		<link>http://linnchord.net/archives/704.html</link>
		<comments>http://linnchord.net/archives/704.html#comments</comments>
		<pubDate>Wed, 02 Dec 2009 11:37:46 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[GFW]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://linnchord.net/?p=704</guid>
		<description><![CDATA[hack GFW是选用国外主机的一大优势…… 最近似乎twitter和facebook的访问速度又慢了，写了一个php脚本在站点上跑了下，获取了最新的hosts 128.121.146.228 twitter.com 128.121.146.228 www.twitter.com 168.143.162.69 assets0.twitter.com 168.143.162.69 assets1.twitter.com 168.143.162.69 assets2.twitter.com 168.143.162.69 assets3.twitter.com 168.143.162.69 assets4.twitter.com 168.143.162.69 static.twitter.com 67.219.156.130 help.twitter.com 208.96.32.3 apiwiki.twitter.com 69.63.181.12 www.facebook.com 69.63.184.142 facebook.com 69.63.181.22 login.facebook.com 69.192.18.110 s-static.ak.facebook.com 69.63.176.69 secure-profile.facebook.com 69.63.176.59 secure-media-sf2p.facebook.com 69.63.178.15 ssl.facebook.com 77.67.91.82 profile.ak.facebook.com 208.19.38.26 b.static.ak.facebook.com 前端有dns轮询的，不过我们能用一个就ok，再跑一次脚本，或者用下面这个 128.121.146.100 twitter.com 128.121.146.100 www.twitter.com 128.121.146.229 assets0.twitter.com 128.121.146.229 assets1.twitter.com 128.121.146.229 assets2.twitter.com 128.121.146.229 assets3.twitter.com 128.121.146.229 [...]]]></description>
			<content:encoded><![CDATA[<p>hack GFW是选用国外主机的一大优势……</p>
<p>最近似乎twitter和facebook的访问速度又慢了，写了一个php脚本在站点上跑了下，获取了最新的hosts</p>
<p>128.121.146.228 twitter.com<br />
128.121.146.228 www.twitter.com<br />
168.143.162.69 assets0.twitter.com<br />
168.143.162.69 assets1.twitter.com<br />
168.143.162.69 assets2.twitter.com<br />
168.143.162.69 assets3.twitter.com<br />
168.143.162.69 assets4.twitter.com<br />
168.143.162.69 static.twitter.com<br />
67.219.156.130 help.twitter.com<br />
208.96.32.3 apiwiki.twitter.com<br />
69.63.181.12 www.facebook.com<br />
69.63.184.142 facebook.com<br />
69.63.181.22 login.facebook.com<br />
69.192.18.110 s-static.ak.facebook.com<br />
69.63.176.69 secure-profile.facebook.com<br />
69.63.176.59 secure-media-sf2p.facebook.com<br />
69.63.178.15 ssl.facebook.com<br />
77.67.91.82 profile.ak.facebook.com<br />
208.19.38.26 b.static.ak.facebook.com</p>
<p>前端有dns轮询的，不过我们能用一个就ok，再跑一次脚本，或者用下面这个<br />
<span id="more-704"></span><br />
128.121.146.100 twitter.com<br />
128.121.146.100 www.twitter.com<br />
128.121.146.229 assets0.twitter.com<br />
128.121.146.229 assets1.twitter.com<br />
128.121.146.229 assets2.twitter.com<br />
128.121.146.229 assets3.twitter.com<br />
128.121.146.229 assets4.twitter.com<br />
128.121.146.229 static.twitter.com<br />
67.219.156.130 help.twitter.com<br />
208.96.32.3 apiwiki.twitter.com<br />
69.63.181.16 www.facebook.com<br />
69.63.181.11 facebook.com<br />
69.63.181.26 login.facebook.com<br />
69.192.18.110 s-static.ak.facebook.com<br />
69.63.176.69 secure-profile.facebook.com<br />
69.63.176.59 secure-media-sf2p.facebook.com<br />
69.63.178.15 ssl.facebook.com<br />
77.67.91.82 profile.ak.facebook.com<br />
208.19.38.9 b.static.ak.facebook.com</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/704.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linode VPS with Nginx的进一步优化</title>
		<link>http://linnchord.net/archives/687.html</link>
		<comments>http://linnchord.net/archives/687.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 17:57:06 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://linnchord.net/?p=687</guid>
		<description><![CDATA[清理系统服务 可以关闭不必要的系统服务，linux下常用chkconfig，在ubuntu系统上最常用sysv-rc-conf，界面更友好使用更方便，直接通过源安装即可运行。 sudo apt-get install sysv-rc-conf sudo sysv-rc-conf 通过软件可以发现，Linode提供的系统已经关闭了很多不必要的服务，但是系统自带了apache，直接取消选择关闭即可。 nginx过期设置 在nginx中，可以对部分类型资源配置过期时间，以利用客户端缓存，降低服务器端负载，某些媒体资源可以禁用log。 在对应的nginx配置文件youdomain.com中添加 location ~* ^.+\.(gif&#124;jpg&#124;jpeg&#124;png&#124;bmp&#124;ico&#124;swf)$ { root /home/myname/wwwroot/yourdomain.com; access_log off; expires 7d; } location ~* ^.+\.(js&#124;css)$ { root /home/myname/wwwroot/yourdomain.com; expires 24h; } wordpress静态化 cos-html-cache是WP的静态化插件，他可以将WP通过UrlRewrite优化过的Url链接彻底静态化。你只需要在WP后台设置固定链接为某种静态文件类似的形式（例如/archives/%post_id%.html），你就可以使用该插件生成对应的静态文件，从此用户将直接访问此静态文件，而不必再通过php解释，极大提高运行效率。 具体操作上面链接描述很详细，无需赘述。 不过我在启用此插件后，发现能正常生成网站根目录下index.html，但无法生成/archives/%post_id%.html。我写了一个php脚本放在网站根目录下测试，也无法在/archives目录下生成文件，提示找不到该目录。在cos-html-cache源文件中可以找到，生成html文件的脚本，路径信息是通过$_SERVER["DOCUMENT_ROOT"]获取的，但是尝试打印该值发现无值。最后我发现必须在Nginx站点配置文件中在php-fast-cgi的配置项里增加网站的root路径如下 location / { root /home/myname/wwwroot/yourdomain.com; index index.html index.htm index.php; if (-f $request_filename) { break; } if (-d $request_filename) { [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>
		<strong>清理系统服务</strong></p>
<p>可以关闭不必要的系统服务，linux下常用chkconfig，在ubuntu系统上最常用sysv-rc-conf，界面更友好使用更方便，直接通过源安装即可运行。</p>
<pre class="brush:bash">
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf
		</pre>
<p>		通过软件可以发现，Linode提供的系统已经关闭了很多不必要的服务，但是系统自带了apache，直接取消选择关闭即可。
	</li>
<p><span id="more-687"></span></p>
<li>
		<strong>nginx过期设置</strong></p>
<p>在nginx中，可以对部分类型资源配置过期时间，以利用客户端缓存，降低服务器端负载，某些媒体资源可以禁用log。</p>
<p>在对应的nginx配置文件youdomain.com中添加</p>
<pre class="brush:bash">
location ~* ^.+\.(gif|jpg|jpeg|png|bmp|ico|swf)$ {
	 root /home/myname/wwwroot/yourdomain.com;
	 access_log off;
	 expires 7d;
 }

location ~* ^.+\.(js|css)$ {
	root   /home/myname/wwwroot/yourdomain.com;
	expires 24h;
}
		</pre>
</li>
<li>
		<strong>wordpress静态化</strong></p>
<p><a href="http://www.storyday.com/html/y2007/1213_cos-html-cache-wordpress-static-release-of-plug-in.html" target="_blank">cos-html-cache</a>是WP的静态化插件，他可以将WP通过UrlRewrite优化过的Url链接彻底静态化。你只需要在WP后台设置固定链接为某种静态文件类似的形式（例如/archives/%post_id%.html），你就可以使用该插件生成对应的静态文件，从此用户将直接访问此静态文件，而不必再通过php解释，极大提高运行效率。</p>
<p>具体操作上面链接描述很详细，无需赘述。</p>
<p>不过我在启用此插件后，发现能正常生成网站根目录下index.html，但无法生成/archives/%post_id%.html。我写了一个php脚本放在网站根目录下测试，也无法在/archives目录下生成文件，提示找不到该目录。在cos-html-cache源文件中可以找到，生成html文件的脚本，路径信息是通过$_SERVER["DOCUMENT_ROOT"]获取的，但是尝试打印该值发现无值。最后我发现必须在Nginx站点配置文件中在php-fast-cgi的配置项里增加网站的root路径如下</p>
<pre class="brush:bash">
location / {
	root   /home/myname/wwwroot/yourdomain.com;
	index  index.html index.htm index.php;

	if (-f $request_filename) {
		break;
	}
	if (-d $request_filename) {
		break;
	}

	rewrite ^(.+)$ /index.php?q=$1 last;

}
location ~ \.php$ {

	#必须定义root -----------------------------------------

	root   /home/myname/wwwroot/yourdomain.com;

	#------------------------------------------------------

	fastcgi_pass	127.0.0.1:9000;
	fastcgi_index	index.php;
	fastcgi_param	SCRIPT_FILENAME  /home/myname/wwwroot/yourdomain.com$fastcgi_script_name;
	include		/usr/local/nginx/conf/fastcgi_params;
}
		</pre>
<p>如果不添加该root信息，在php中则无法正确获取$_SERVER["DOCUMENT_ROOT"]参数，会导致路径定位错误。不过按照一般逻辑，这个应该是继承前面的root设置，不必重复定义。也许是因为fastcgi是从nginx转向到另一个新的进程的缘故，所以需要具体定义参数传递。不过nginx应该自动获取该值，避免重复手工操作。</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/687.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setup on Linode.com with ubuntu+nginx+php+fastcgi+mysql 续</title>
		<link>http://linnchord.net/archives/665.html</link>
		<comments>http://linnchord.net/archives/665.html#comments</comments>
		<pubDate>Sun, 29 Nov 2009 08:54:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://linnchord.net/?p=665</guid>
		<description><![CDATA[嗯嗯，继续。 nginx和fastcgi启动配置 2个配置文件,放于/etc/init.d下面。 cd /etc/init.d touch fast-cgi touch nginx sudo chmod +x /etc/init.d/nginx /etc/init.d/fast-cgi nginx #! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### [...]]]></description>
			<content:encoded><![CDATA[<p>嗯嗯，继续。</p>
<ul>
<li>
	<strong>nginx和fastcgi启动配置</strong></p>
<p>2个配置文件,放于/etc/init.d下面。</p>
<pre class="brush: bash;">
cd /etc/init.d
touch fast-cgi
touch nginx
sudo chmod +x /etc/init.d/nginx /etc/init.d/fast-cgi</pre>
<p>nginx</p>
<pre class="brush: bash;">
#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
	. /etc/default/nginx
fi

set -e

. /lib/lsb/init-functions

test_nginx_config() {
  if nginx -t
  then
    return 0
  else
    return $?
  fi
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
        test_nginx_config
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON || true
	echo "$NAME."
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON || true
	sleep 1
        test_nginx_config
	start-stop-daemon --start --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  reload)
        echo -n "Reloading $DESC configuration: "
        test_nginx_config
        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
            --exec $DAEMON || true
        echo "$NAME."
        ;;
  configtest)
        echo -n "Testing $DESC configuration: "
        if test_nginx_config
        then
          echo "$NAME."
        else
          exit $?
        fi
        ;;
  status)
	status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx &#038;&#038; exit 0 || exit $?
	;;
  *)
	echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&#038;2
	exit 1
	;;
esac

exit 0</pre>
<p><span id="more-665"></span></p>
<p>fast-cgi</p>
<pre class="brush: bash;">
#! /bin/sh

### BEGIN INIT INFO
# Provides:          fast-cgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the fast-cgi web server
# Description:       starts fastcgi using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

NAME=spawn-fcgi
DESC=spawn-fcgi
DAEMON=/usr/local/bin/spawn-fcgi

DAEMON_OPTS="-u www-data -g www-data -C 8 -a 127.0.0.1 -p 9000 -P /var/run/$NAME.pid -- /usr/bin/php5-cgi"

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
	echo -n "Starting $DESC: "
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
	echo "$NAME."
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
	sleep 1
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
      echo "$NAME."
      ;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&#038;2
	exit 1
	;;
esac
exit 0</pre>
<p>这两个脚本需要注意的是目录的定位，如果在编译阶段加入了目录设置的参数，那么你同时需要在这里修改定义。另外fast-cgi需要注意DAEMON_OPTS的参数设置。</p>
<p>这2个脚本都有一个同样的问题，就是无法正常停止服务。我虽然不太了解shell程序，但是根据我其他编程经验，两个脚本都是通过start-stop-daemon命令来开启和停止服务。但我使用的情况是可以正常开启，但无法正常关闭。所以我不得不写了一个简单的关闭并重启nginx服务的脚本，是通过直接kill进程来实现的。</p>
<pre class="brush: bash;">
cd ~
mkdir tools
cd tools
touch reset_nginx
chmod +x reset_nginx</pre>
<p>reset_nginx内容</p>
<pre class="brush: bash;">
sudo kill `cat /usr/local/nginx/logs/nginx.pid`
sudo /etc/init.d/nginx start</pre>
<p>但是fast-cgi的服务即使我kill进程并删除pid文件也无济于事，fast-cgi仍然照常运行……这有点不合逻辑，也许我操作错误，或者是权限问题。不过fast-cgi开启后一般也没有必要进行重启或其他操作，这个问题留待以后解决吧。或者有哪位同学知道的，请不吝赐教！</p>
<p>最后这2个脚本需要注册为系统服务，需要安装rcconf。</p>
<pre class="brush: bash;">
sudo apt-get install rcconf
sudo rcconf</pre>
<p>嗯，很怀旧的DOS操作界面……呵呵，大家选择2个脚本，再ok退出即可。</p>
</li>
<li>
	<strong>nginx站点配置</strong></p>
<p>由于dreamhost的习惯，并且这个虚拟机还要放callaly的blog（<a href="http://callaly.net" target="_blank">http://callaly.net</a>），所以nginx的站点我放到用户目录下去了。</p>
<pre class="brush: bash;">
cd ~
mkdir wwwroot
cd wwwroot
mkdir yourdomain.com</pre>
<p>编辑/usr/local/nginx/conf/nginx.conf</p>
<pre class="brush: bash;">
user www-data;
worker_processes 2;

events {
	worker_connections  1024;
	use epoll;
}

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

	sendfile       on;
	tcp_nopush     on;
	tcp_nodelay    on;

	keepalive_timeout  65;

	gzip  on;

	#设置默认站点，禁止所有IP访问
	server {
		listen 80 default;
		return 403;
	}

	#包含其他站点配置
	include /usr/local/nginx/sites-enabled/*;

}</pre>
<p>创建站点文件</p>
<pre class="brush: bash;">
cd /usr/local/nginx
sudo mkdir sites-available
sudo mkdir sites-enabled
sudo touch sites-available/yourdomain.com
sudo ln -s sites-available/yourdomain.com sites-enabled/yourdomain.com
	</pre>
<p>编辑sites-available/yourdomain.com</p>
<pre class="brush: bash;">
server {
	listen       80;
	server_name  www.yourdomain.com yourdomain.com;

	access_log	/home/myname/wwwroot/log/yourdomain.com.access.log;
   	error_log	/home/myname/wwwroot/log/yourdomain.com.error.log;

	location / {
		root   /home/myname/wwwroot/yourdomain.com;
		index  index.html index.htm index.php;

		# WordPress URL优化
		if (-f $request_filename) {
			break;
		}
		if (-d $request_filename) {
			break;
		}

		# WordPress URL重写，如果你的wp目录不在根目录，请修改路径
		rewrite ^(.+)$ /index.php?q=$1 last;
	}

	location ~ \.php$ {
		fastcgi_pass	127.0.0.1:9000;
		fastcgi_index	index.php;
		fastcgi_param	SCRIPT_FILENAME /home/myname/wwwroot/yourdomain.com$fastcgi_script_name;
		include		/usr/local/nginx/conf/fastcgi_params;
	}

	#如果前面编译nginx时添加了with-http_stub_status_module参数
	#就可以通过此设置访问yourdomain.com/status（名称自定）查看站点状态
	location /status {
		stub_status on;
		access_log off;
	}
}</pre>
<p>nginx的站点配置基本ok</p>
</li>
<li>
	<strong>wordpress备份和恢复</strong></p>
<p>
		需要把dreamhost主机上的内容迁移过来，可操作方法很多，最好在服务器端直接操作，速度更快。文件操作很简单不赘述，关于数据库的备份和恢复简单说下。
	</p>
<pre class="brush: bash;">
#导出 - 在原服务器
mysqldump -h old_host -p old_dbname -u old_dbuser >wp_bak.sql

#登录mysql
mysql -h new_host -u new_dbuser

#创建新数据库，注意编码
create database 'new_dbname' default character set utf8 collate utf8_general_ci;

#导入 - 确保备份sql文件在当前目录
use new_dbname;
source wp_bak.sql;</pre>
<p>至此整个站点配置已经基本完成，可以敲域名访问了。</p>
</li>
</ul>
<p>这篇文章大部分内容来自于网上，我东拼西凑来的，特在此列出供大家参考。</p>
<ul class="recommend">
<li><a href="http://www.mensk.com/webmaster-toolbox/perfect-ubuntu-hardy-nginx-mysql5-php5-wordpress/" target="_blank">Perfect Setup: Ubuntu Hardy+Nginx+MySQL5+PHP5+Wordress</a></li>
<li><a href="http://www.jifuyi.com/linode-vps-register-nginx-wordpress-setting/" target="_blank">Linode VPS的申请和设置及基于Nginx的WordPress详细配置</a></li>
<li><a href="http://www.nginx.com.cn/?p=315" target="_blank">为nginx设置默认虚拟主机（空主机头，默认主机头）</a></li>
<li><a href="http://www.7yan.com.cn/2008/01/22/dreamhost-mysql-beifen-huifu/" target="_blank">如何备份/恢复dreamhost空间里的mysql数据库</a></li>
<li><a href="http://www.jefflei.com/post/1015.html" target="_blank">nginx重定向规则详细介绍</a></li>
<li><a href="http://shiningray.cn/nginx-de-wordpress-pei-zhi.html" target="_blank">Nginx的WordPress配置</a></li>
<li><a href="http://wiki.nginx.org/NginxChsInstallOptions" target="_blank">NginxChsInstallOptions</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/665.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setup on Linode.com with ubuntu+nginx+php+fastcgi+mysql</title>
		<link>http://linnchord.net/archives/652.html</link>
		<comments>http://linnchord.net/archives/652.html#comments</comments>
		<pubDate>Fri, 27 Nov 2009 06:32:10 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://linnchord.net/?p=652</guid>
		<description><![CDATA[我对Linux系统还处于初入门阶段，在配置安装Linode VPS的服务过程中学到了不少东西，了解了不少概念，特记之。 启用 Linode的网站设计非常简洁，一个粗略认识英文的同学都可以轻易申请搞定，就不需要再介绍了。 在选择服务器网络物理位置的时候，Linode提供了一个下载测试列表供大家测试，你可以选择访问速度最优的位置。网上其它同学很多选择Fremont，不过我测试下来（杭州ADSL4M）Newark最快，浏览器单线程下载速度稳定达到300K+，所以我选择了Newark。估计各地网络不同有所区别，大家选用建议自行测试。 系统我选择的是ubuntu（嗯，已经提供9.10Server了），主要是出于我对ubuntu桌面版的使用习惯和偏爱。网上很多说法是ubuntu服务器版不够专业，不过我本来也不太够专业，也不知道ubuntu哪里不够专业，呵呵，也就无所谓了。 环境基本配置 在web面板开启虚拟机以后，你就可以通过root用户和密码在客户端（推荐putty）登录。登陆后第一件事情，增加一个新账号（用你的常用名 例如myname）。 adduser myname visudo 在该文件中增加以下行 myname ALL=(ALL) ALL 此操作使myname用户可以使用sudo命令，如果要给其他账号提供sudo操作权限，类推。 ok，exit命令退出putty登录再重启，通过myname账号和你设置的密码重新登录系统。Linode默认提供的ubuntu的源缺少一些开发包，所以我们先编辑一下源。 sudo vi /etc/apt/source.list 我们需要做的仅仅是将文件中已经注释掉的几行源去掉前面的“#”，重新开启即可——不需要为具体的源担心，默认的已经飞速了。然后我们需要刷新一下 sudo apt-get update 我习惯使用vim，所以先安一个 sudo apt-get install vim 我们还需要一个中文UTF的本地环境，不过这得看情况，也许你不需要？ sudo locale-gen zh_CN.UTF-8 sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8 将服务器时间设置为上海时间 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime nginx+spawn-fastcgi+php+mysql 我们先来安一个编译包吧 sudo apt-get install build-essential 然后php和mysql安装最方便，直接从apt源安装即可 sudo apt-get -y install php5-common php5-mysql [...]]]></description>
			<content:encoded><![CDATA[<p>我对Linux系统还处于初入门阶段，在配置安装Linode VPS的服务过程中学到了不少东西，了解了不少概念，特记之。</p>
<ol>
<li>
<strong>启用</strong></p>
<p>Linode的网站设计非常简洁，一个粗略认识英文的同学都可以轻易申请搞定，就不需要再介绍了。</p>
<p>在选择服务器网络物理位置的时候，Linode提供了一个<a href="http://www.linode.com/forums/viewtopic.php?t=2636" target="_blank">下载测试列表</a>供大家测试，你可以选择访问速度最优的位置。网上其它同学很多选择Fremont，不过我测试下来（杭州ADSL4M）Newark最快，浏览器单线程下载速度稳定达到300K+，所以我选择了Newark。估计各地网络不同有所区别，大家选用建议自行测试。</p>
<p>系统我选择的是ubuntu（嗯，已经提供9.10Server了），主要是出于我对ubuntu桌面版的使用习惯和偏爱。网上很多说法是ubuntu服务器版不够专业，不过我本来也不太够专业，也不知道ubuntu哪里不够专业，呵呵，也就无所谓了。</p>
</li>
<li>
<strong>环境基本配置</strong></p>
<p>在web面板开启虚拟机以后，你就可以通过root用户和密码在客户端（推荐<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">putty</a>）登录。登陆后第一件事情，增加一个新账号（用你的常用名 例如myname）。</p>
<pre class="brush: bash;">
adduser myname
visudo
</pre>
<p>在该文件中增加以下行</p>
<pre class="brush: bash;">
myname ALL=(ALL) ALL
</pre>
<p>此操作使myname用户可以使用sudo命令，如果要给其他账号提供sudo操作权限，类推。</p>
<p>ok，exit命令退出putty登录再重启，通过myname账号和你设置的密码重新登录系统。Linode默认提供的ubuntu的源缺少一些开发包，所以我们先编辑一下源。</p>
<pre class="brush: bash;">
sudo vi /etc/apt/source.list
</pre>
<p>我们需要做的仅仅是将文件中已经注释掉的几行源去掉前面的“#”，重新开启即可——不需要为具体的源担心，默认的已经飞速了。然后我们需要刷新一下</p>
<pre class="brush: bash;">
sudo apt-get update
</pre>
<p>我习惯使用vim，所以先安一个</p>
<pre class="brush: bash;">
sudo apt-get install vim
</pre>
<p>我们还需要一个中文UTF的本地环境，不过这得看情况，也许你不需要？</p>
<pre class="brush: bash;">
sudo locale-gen zh_CN.UTF-8
sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8
</pre>
<p>将服务器时间设置为上海时间</p>
<pre class="brush: bash;">
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
</pre>
</li>
<p><span id="more-652"></span></p>
<li>
<strong>nginx+spawn-fastcgi+php+mysql</strong></p>
<p>我们先来安一个编译包吧</p>
<pre class="brush: bash;">
sudo apt-get install build-essential
</pre>
<p>然后php和mysql安装最方便，直接从apt源安装即可</p>
<pre class="brush: bash;">
sudo apt-get -y install php5-common php5-mysql php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-cgi php5-mcrypt php5-curl php5-gd php5-memcache php5-mhash php5-pspell php5-sqlite libmagick9-dev php5-cli
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev
</pre>
<p>php的安装命令我是copy的，然后去掉了一些不必要的包，如果你觉得不必要也可以去掉，真正基本环境必须的只有php5 php5-cgi而已。mysql在安装过程中会让你设置root的密码，不要设置太简单了，也不要和系统root密码一样。</p>
<p>然后我们需要安装nginx</p>
<pre class="brush: bash;">
cd ~
mkdir source
cd source
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar -zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64
sudo apt-get install libssl-dev libpre3-dev zlib1g-dev
./configure --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --with-http_stub_status_module
make
sudo make install
</pre>
<p>在configure的时候可以定义很多参数，官方的参考文档在<a href="http://wiki.nginx.org/NginxChsInstallOptions" target="_blank">这里</a>。我在网上看的相关的文章，定义了很多路径的参数，也许有什么特别的理由或习惯需要特别定义，我不太了解，所以我都去掉了，就用默认的路径就好。nginx默认的安装路径是/usr/local/nginx，其中包含了配置、基本的html页面、log、站点设置等。with-md5-asm和with-sha1-asm官方wiki说只建议使用一种，不过只用一种我无法通过编译，不知道问题所在。另外with-http_stub_status_module可以开通nginx内置的状态统计功能，建议都配置上，后面会开启该功能。</p>
<p>然后我们来安装spawn-fcgi，这是lighttpd的fastcgi管理器，目前已经是独立项目了，当前最新版本是1.6.3。</p>
<pre class="brush: bash;">
cd ~/source
wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
tar -zxvf spawn-fcgi-1.6.3.tar.gz
cd spawn-fcgi-1.6.3
sudo ./configure &#038;&#038; make &#038;&#038; make install
</pre>
</li>
</ol>
<p>………</p>
<p>做的事情不多，要写清楚真累，太长了，休息下，明天再整理。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/652.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dreamhost to Linode</title>
		<link>http://linnchord.net/archives/644.html</link>
		<comments>http://linnchord.net/archives/644.html#comments</comments>
		<pubDate>Mon, 23 Nov 2009 06:32:10 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[随记]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://linnchord.net/?p=644</guid>
		<description><![CDATA[dreamhost越来越2了，整天不务正业优化服务，就知道往我邮箱发PS广告。广告倒是吹的挺不错，不过问题是你旧的成熟的虚拟主机都做不好，我怎么可能信任你PS呢？后来网上很多同仁的经验也表明dh的PS不太靠谱。 Linode口碑一直不错，但是价格虽然在VPS中算是实惠，也总比一般虚拟主机高一截。最近Linode在国内似乎小火了一把，好些网上同仁撰文推荐，重新上去看看，发现最低配置已经由原来256M升级到了360M，性价比又有提升了。琢磨一下，弄个nginx+fastcgi跑wordpress，再搞一个jetty在后面跑java小应用，应该没啥问题。 正好dreamhost到期了,嗯，搞搞。]]></description>
			<content:encoded><![CDATA[<p><a href="http://dreamhost.com" target="_blank">dreamhost</a>越来越2了，整天不务正业优化服务，就知道往我邮箱发PS广告。广告倒是吹的挺不错，不过问题是你旧的成熟的虚拟主机都做不好，我怎么可能信任你PS呢？后来网上很多同仁的经验也表明dh的PS不太靠谱。</p>
<p><a href="http://linode.com" target="_blank">Linode</a>口碑一直不错，但是价格虽然在VPS中算是实惠，也总比一般虚拟主机高一截。最近Linode在国内似乎小火了一把，好些网上同仁撰文推荐，重新上去看看，发现最低配置已经由原来256M升级到了360M，性价比又有提升了。琢磨一下，弄个nginx+fastcgi跑wordpress，再搞一个jetty在后面跑java小应用，应该没啥问题。</p>
<p>正好dreamhost到期了,嗯，搞搞。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/644.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

