https://github.com/chloerei/writings
前略,约定的 writings.io 开源。
我不打算继续投入到这个项目了,所以不会有特性更新和技术支持。如果有安全漏洞或者哪块代码需要注释,可以发 isuess 或 PR。
开源的意义在于:
谁有意继续这个项目的,我乐意为之宣传,但是不会参与,因为我的看法是消极的,不利于项目发展。
接下来我会回到 Gitbub Pages 搭建个人网站,也推荐技术型作者用 Github Pages。
不过还是不建议关闭网站,网站只要花不多的钱就可以维系下去。比如我的http://www.mystory.cc 流量和注册用户数都远不及 writings.io,都没有关掉。
Writings 给我的感觉是,早上刚刚注册的,还来不及好好看下功能,那天下午就发邮件说被拖库了,并且由于一个比较低级的错误... 隔了几天上去看了一下,发现这东西居然收费... 然后几天前,突然收到邮件,说要关站了,好吧。
刚学 Rails , 对这个社区不是很熟悉,看了 Rei 的资料,发现还是挺 Senior 的工程师。"这个社区的第一位用户".......
不过这个开源的事情还是挺不错的,谢谢分享。
#32 楼 @xiaoronglv 现在在 UCSD 这边读书,有个 Cal Tech 毕业的 faculty,之前做了一个 beta 版,反映很好,现在打算从工具入手,因为主要面向给学术圈的人用,所以能参考很多 writting.io 的设计
Gem::RemoteFetcher::UnknownHostError: no such name (https://rubygems.org/gems/factory_girl_rails-4.2.1.gem)
An error occurred while installing factory_girl_rails (4.2.1), and Bundler cannot continue.
Make sure that gem install factory_girl_rails -v '4.2.1'
succeeds before bundling.
看看这个是什么情况啊
#69 楼 @cassiuschen Mongodb for database.
这些怎么弄来?
#70 楼 @u1378130755 就按照说的安装gem install factory_girl_rails -v '4.2.1'
啊…………第二个就是说你需要安装mongodb
通过 ubuntu apt 装的,安装说明看这里 https://github.com/chloerei/writings/blob/master/doc/INSTALL-ubuntu.md
#74 楼 @Rei 你的那个编辑器我很喜欢,很想集成进 Pragmatic.ly, 不知道方不方便?上次还跟 Terry 说,愿意付费购买使用权...
@Rei writings.io,我刚注册了用户,还没三天就关闭了,我有种负罪感。
不过,对于 lz 来说,fail fast,是个好事。看过你写的关于 Writings.io 失败的文章,我觉的你考虑的第二个方案,我觉得可以实施,产品只提供给想用的那部分用户,但是你的心已经放弃了,所以你选了第 3 种方案,关闭,确实,自己没有这个心劲,实在是无法继续前行的。
愿 lz 重新启航,继续加油!
worker_processes 4
app_root = File.expand_path("../..", __FILE__)
working_directory app_root
# Listen on fs socket for better performancelisten "/tmp/unicorn.sock", :backlog => 64
# Nuke workers after 30 seconds instead of 60 seconds (the default)
timeout 30
# App PID
pid "#{app_root}/tmp/pids/unicorn.pid"
# By default, the Unicorn logger will write to stderr.
# Additionally, some applications/frameworks log to stderr or stdout,
# so prevent them from going to /dev/null when daemonized here:
stderr_path "#{app_root}/log/unicorn.stderr.log"
stdout_path "#{app_root}/log/unicorn.stdout.log"
# To save some memory and improve performance
preload_app true
GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true
# Force the bundler gemfile environment variable to
# reference the Сapistrano "current" symlinkbefore_exec do |_|
ENV["BUNDLE_GEMFILE"] = File.join(app_root, 'Gemfile')
end
before_fork do |server, worker|
# 参考 http://unicorn.bogomips.org/SIGNALS.html
# 使用USR2信号,以及在进程完成后用QUIT信号来实现无缝重启
old_pid = app_root + '/tmp/pids/unicorn.pid.oldbin'
if File.exists?(old_pid) && server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
# someone else did our job for us
end
end
# the following is highly recomended for Rails + "preload_app true"
# as there's no need for the master process to hold a connection
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
# 禁止GC,配合后续的OOB,来减少请求的执行时间
GC.disable
# the following is *required* for Rails + "preload_app true",
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
Nginx 的配置是
upstream writings-unicorn {
server unix:/tmp/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name writings.xxx.com;
root /var/mirrors/writing/public;
try_files $uri $uri/index.html @user2;
location @user3 {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://writings-unicorn;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
依然子域名访问失败… dns 上 writings 和*.writings 全指向这台服务器,用端口模式访问的时候子域名正常,用 socket 就出问题了……很纠结…看来应该是 unicorn 配置问题…