dotCloud 是一个平台,或者是一个有人代为管理的服务器。它的主要用途是让人们免费的发布自己的 Web 应用,并且在其之上省去了管理服务器的工作,也就省去了相当的繁琐,使得发布应用更快速方便,并且使得 Developer 专注于应用,而不用为发布操太多心。想想那些名字,apache、nginx、php-fpm、uwsgi、SSL 等等等等,各种各样的各不相同的设置与调试只会让人觉得麻烦、不轻松,虽然这其中也有知识。
然而 dotCloud 的应用发布则相当简单:
(dotcloud 的 python 客户端安装及命令行基本使用方法请参考官方文档,很简单。)
- 新建 namespace。
$ dotcloud create kdblue
- 建立 Build File。
dotcloud.yml: www: approot: blog type: php instances: 3 db: type: mysqlwww与db为 service 名称。approot指定该 service 所在的本地根目录。type指定应用类型(语言、服务器)。instances设置进程数,若是 php 应用则会启动相应数量的 php-fpm 进程。
- 将设置推送至服务器。
$ dotcloud push kdblue .
这样,一个名为 Build File 的 dotcloud.yml 文件就完成了所有服务器端的设置,简单并且轻量。
接下来的工作就是 WordPress 的自身设置,根据著名的5分钟安装教程教我们的:
- 搞到 WordPress。
- 在服务器上搞定数据库设置。
- 首先获取 mysql 数据库密码及地址。
$ dotcloud info kdblue.db build_revision: rsync-1309344965.25 cluster: wolverine config: hostname: kdblue-default-blog-db-0 mysql_password: tpKsNbSjxXlb7I8DM3RH created_at: 1309267100.7312429 ports: - name: ssh url: tcp://53e93k2c.dotcloud.com:9219 - name: mysql url: tcp://53e93k2c.dotcloud.com:9220 state: running type: mysql - 登录并创建 WordPress 用数据库。
$ dotcloud run kdblue.db -- mysql -u root -ptpKsNbSjxXlb7I8DM3RH (Below in mysql shell) > create user 'dql' identified by 'password'; > create database wordpress; > grant all on wordpress.* to 'dql'@'%' identified by 'password'; > flush privileges;
- 首先获取 mysql 数据库密码及地址。
- 重命名
wp-config-sample.php为wp-config.php。 - 修改
wp-config.php中的数据库设置。define('DB_NAME', 'blog'); define('DB_USER', 'dql'); define('DB_PASSWORD', 'password'); define('DB_HOST', '53e93k2c.dotcloud.com:9220'); - 确认一下文件树结构。
myapp/ |- dotcloud.yml |_ blog/ |_ wordpress/ |_ wp-config.php |_ wp-contents/ |_ ... - 将设置完毕的 WordPress 推送至服务器并重启进程。
$ dotcloud push kdblue . $ dotcloud restart kdblue.www
至此 WordPress 便部署成功,访问
http://53e93k2c.dotcloud.com/wordpress/wp-admin/install即可完成安装。 - 有域名的可以设置自定义域名,并按说明更改相应 DNS 设置。
$ dotcloud alias add kdblue.www www.example.com
$ wget http://wordpress.org/latest.zip $ unzip latest.zip
之后是一些有用的 Tip。
- 因为每次
push都会将服务器端的更改删除(例如安装插件),因此可以使用一个 Post-Install Hook 来避免。#!/bin/sh if [ -d ~/data/wp-content ] then rm -rf ~/current/wordpress/wp-content else mkdir -p ~/data mv ~/current/wordpress/wp-content ~/data/wp-content fi ln -s ~/data/wp-content ~/current/wordpress/wp-content将此文件命名为
postinstall加上执行权限后放在approot目录下,这样每次push后之前网页端所做的更改都会保留。(但升级 WordPress 本体似乎必须在本地执行后推送) - 若要直接在域名处(
www.example.com)而非子目录处(www.example.com/wordpress)显示 WordPress,则需要自定义一项 nginx 设置。try_files $uri $uri/ /index.php;
保存为
nginx.conf后放在approot目录中。 - wwwizer 可以免费将 dotcloud 不支持的 naked domain 301重定向到前缀 www 的子域名,免费且不用注册,直接 A 记录指向其提供的 IP 即可。
Pingback: DotCloud | Loco交易空間