Преглед изворни кода

Set up dev environment with Vagrant

James Allen пре 12 година
родитељ
комит
19e6147266

+ 3 - 3
Gruntfile.coffee

@@ -207,7 +207,7 @@ module.exports = (grunt) ->
 		checkLatexmk: (callback = (error) ->) ->
 			grunt.log.write "Checking latexmk is installed... "
 			exec "latexmk --version", (error, stdout, stderr) ->
-				if error? and error.message.match("command not found")
+				if error? and error.message.match("not found")
 					grunt.log.error "FAIL."
 					grunt.log.errorlns """
 					Either latexmk is not installed or is not in your PATH.
@@ -241,7 +241,7 @@ module.exports = (grunt) ->
 		checkAspell: (callback = (error) ->) ->
 			grunt.log.write "Checking aspell is installed... "
 			exec "aspell dump dicts", (error, stdout, stderr) ->
-				if error? and error.message.match("command not found")
+				if error? and error.message.match("not found")
 					grunt.log.error "FAIL."
 					grunt.log.errorlns """
 					Either aspell is not installed or is not in your PATH.
@@ -326,7 +326,7 @@ module.exports = (grunt) ->
 		checkMake: (callback = (error) ->) ->
 			grunt.log.write "Checking make is installed... "
 			exec "make --version", (error, stdout, stderr) ->
-				if error? and error.message.match("command not found")
+				if error? and error.message.match("not found")
 					grunt.log.error "FAIL."
 					grunt.log.errorlns """
 					Either make is not installed or is not in your path.

+ 1 - 1
Vagrantfile

@@ -23,7 +23,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
     chef.add_recipe 'mongodb'
     chef.add_recipe 'nodejs'
     chef.add_recipe 'texlive'
-    chef.add_recipe 'sharelatex'
+    chef.add_recipe 'packages'
 
     # You may also specify custom JSON attributes:
     chef.json = {}

+ 8 - 8
chef/cookbooks/sharelatex/README.md → chef/cookbooks/packages/README.md

@@ -1,5 +1,5 @@
-sharelatex Cookbook
-===================
+redis Cookbook
+==============
 TODO: Enter the cookbook description here.
 
 e.g.
@@ -11,14 +11,14 @@ TODO: List your cookbook requirements. Be sure to include any requirements this
 
 e.g.
 #### packages
-- `toaster` - sharelatex needs toaster to brown your bagel.
+- `toaster` - redis needs toaster to brown your bagel.
 
 Attributes
 ----------
 TODO: List you cookbook attributes here.
 
 e.g.
-#### sharelatex::default
+#### redis::default
 <table>
   <tr>
     <th>Key</th>
@@ -27,7 +27,7 @@ e.g.
     <th>Default</th>
   </tr>
   <tr>
-    <td><tt>['sharelatex']['bacon']</tt></td>
+    <td><tt>['redis']['bacon']</tt></td>
     <td>Boolean</td>
     <td>whether to include bacon</td>
     <td><tt>true</tt></td>
@@ -36,17 +36,17 @@ e.g.
 
 Usage
 -----
-#### sharelatex::default
+#### redis::default
 TODO: Write usage instructions for each cookbook.
 
 e.g.
-Just include `sharelatex` in your node's `run_list`:
+Just include `redis` in your node's `run_list`:
 
 ```json
 {
   "name":"my_node",
   "run_list": [
-    "recipe[sharelatex]"
+    "recipe[redis]"
   ]
 }
 ```

+ 7 - 0
chef/cookbooks/packages/metadata.rb

@@ -0,0 +1,7 @@
+name             'packages'
+maintainer       'ShareLaTeX'
+maintainer_email 'team@sharelatex.com'
+license          'AGPLv3'
+description      'Installs/Configures packages'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version          '0.1.0'

+ 9 - 0
chef/cookbooks/packages/recipes/default.rb

@@ -0,0 +1,9 @@
+#
+# Cookbook Name:: packages
+# Recipe:: default
+#
+# Copyright 2014, ShareLaTeX
+#
+
+package 'git'
+package 'vim'

+ 0 - 12
chef/cookbooks/sharelatex/CHANGELOG.md

@@ -1,12 +0,0 @@
-# CHANGELOG for sharelatex
-
-This file is used to list changes made in each version of sharelatex.
-
-## 0.1.0:
-
-* Initial release of sharelatex
-
-- - -
-Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
-
-The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.

+ 0 - 8
chef/cookbooks/sharelatex/metadata.rb

@@ -1,8 +0,0 @@
-name             'sharelatex'
-maintainer       'YOUR_COMPANY_NAME'
-maintainer_email 'YOUR_EMAIL'
-license          'All rights reserved'
-description      'Installs/Configures sharelatex'
-long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
-version          '0.1.0'
-depends          'texlive'

+ 0 - 121
chef/cookbooks/sharelatex/providers/app.rb

@@ -1,121 +0,0 @@
-action :start do
-	package "git"
-	package "build-essential"
-
-	r = new_resource
-
-	deploy_to = "/var/www/" + r.name
-
-	node_environment = "production"
-
-	directory deploy_to do
-		user r.user if r.user
-		recursive true
-	end
-
-	env = {
-		"HOME" => deploy_to
-	}
-
-	directory "#{deploy_to}/releases" do
-		user r.user if r.user
-		recursive true
-	end
-
-	shared_dir = "#{deploy_to}/shared"
-	directory shared_dir do
-		user r.user if r.user
-		recursive true
-	end
-	directory "#{shared_dir}/config" do
-		user r.user if r.user
-		recursive true
-	end
-	directory "#{shared_dir}/log" do
-		user r.user if r.user
-		recursive true
-	end
-
-	deploy_revision deploy_to do
-		repository r.repository
-		revision r.revision
-		user r.user if r.user
-
-		purge_before_symlink [
-			"log", "config", "node_modules"
-		]
-		create_dirs_before_symlink []
-		symlinks({
-			"log"    => "log",
-			"config" => "config"
-		})
-		symlink_before_migrate({
-			"node_modules" => "node_modules"
-		})
-
-		environment env
-
-		migrate true
-		migration_command "npm install; grunt install"
-
-		before_migrate do
-			directory "#{deploy_to}/shared/node_modules" do
-				user r.user if r.user
-				recursive true
-			end
-		end
-
-		notifies :restart, "service[#{r.name}]"
-	end
-
-	env = ""
-	r.environment.each do |key, value|
-		env += "#{key}=#{value} "
-	end
-
-	file "/etc/init/#{r.name}.conf" do
-		content <<-EOS
-			description "#{r.name}"
-			author      "ShareLaTeX <team@sharelatex.com>"
-
-			start on started mountall
-			stop on shutdown
-
-			respawn
-
-			limit nofile 8192 8192
-			
-			script
-				echo $$ > /var/run/#{r.name}.pid
-				chdir #{deploy_to}/current
-				exec sudo -u #{r.user} env NODE_ENV=#{node_environment} SHARELATEX_CONFIG=/etc/sharelatex/settings.coffee #{env} node app.js >> log/production.log 2>&1
-			end script
-		EOS
-
-		notifies :restart, "service[#{r.name}]"
-	end
-
-	directory "/etc/sharelatex"
-	template "/etc/sharelatex/settings.coffee" do
-		mode 0400
-		user "www-data"
-		notifies :restart, "service[#{r.name}]"
-	end
-
-	service "#{r.name}" do
-		provider Chef::Provider::Service::Upstart
-		action :start
-	end
-
-	file "/etc/logrotate.d/#{r.name}" do
-		content <<-EOS
-			#{deploy_to}/shared/log/*.log {
-				rotate 7
-				size 5M
-				missingok
-				compress
-				copytruncate
-			}
-		EOS
-	end
-end

+ 0 - 47
chef/cookbooks/sharelatex/recipes/default.rb

@@ -1,47 +0,0 @@
-#
-# Cookbook Name:: sharelatex
-# Recipe:: default
-#
-# Copyright 2014, ShareLaTeX
-#
-
-# For filestore conversions
-package "imagemagick"
-package "optipng"
-
-for dir in ["", "compiles", "clsi-cache", "user_files"] do
-	directory "/var/lib/sharelatex/#{dir}" do
-		user  "www-data"
-		group "www-data"
-		recursive true
-	end
-end
-
-sharelatex_app "web-sharelatex" do
-	repository "https://github.com/sharelatex/web-sharelatex.git"
-	revision   "master"
-end
-
-sharelatex_app "document-updater-sharelatex" do
-	repository "https://github.com/sharelatex/document-updater-sharelatex.git"
-	revision   "master"
-end
-
-sharelatex_app "filestore-sharelatex" do
-	repository "https://github.com/sharelatex/filestore-sharelatex.git"
-	revision   "master"
-end
-
-sharelatex_app "track-changes-sharelatex" do
-	repository "https://github.com/sharelatex/track-changes-sharelatex.git"
-	revision   "master"
-end
-
-sharelatex_app "clsi-sharelatex" do
-	repository "https://github.com/sharelatex/clsi-sharelatex.git"
-	revision   "master"
-	environment({
-		"PATH" => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:#{node[:texlive][:bin_dir]}"
-	})
-end
-

+ 0 - 13
chef/cookbooks/sharelatex/resources/app.rb

@@ -1,13 +0,0 @@
-actions :start
-
-attribute :revision, :kind_of => String, :default => "master"
-attribute :repository, :kind_of => String
-attribute :user, :kind_of => String, :default => "www-data"
-attribute :group, :kind_of => String, :default => "www-data"
-attribute :environment, :kind_of => Hash, :default => {}
-
-def initialize(*args)
-	super
-	@action = :start
-end
-

+ 0 - 268
chef/cookbooks/sharelatex/templates/default/settings.coffee.erb

@@ -1,268 +0,0 @@
-Path = require('path')
-http = require('http')
-http.globalAgent.maxSockets = 300
-
-# Make time interval config easier.
-seconds = 1000
-minutes = 60 * seconds
-
-# These credentials are used for authenticating api requests
-# between services that may need to go over public channels
-httpAuthUser = "sharelatex"
-httpAuthPass = "password"
-httpAuthUsers = {}
-httpAuthUsers[httpAuthUser] = httpAuthPass
-
-sessionSecret = "secret-please-change"
-
-module.exports =
-	# File storage
-	# ------------
-	#
-	# ShareLaTeX needs somewhere to store binary files like images.
-	# There are currently two options:
-	#     Your local filesystem (the default)
-	#     Amazon S3
-	filestore:
-		# which backend persistor to use.
-		# choices are 
-		# s3 - Amazon S3
-		# fs - local filesystem
-		backend: "fs"	
-		stores:
-			# where to store user and template binary files
-			#
-			# For Amazon S3 this is the bucket name to store binary files
-			#
-			# For local filesystem this is the directory to store the files in.
-			# This path must exist, not be tmpfs and be writable to by the user sharelatex is run as.
-			user_files: "/var/lib/sharelatex/user_files"
-		# Uncomment if you need to configure your S3 credentials
-		# s3:
-		# 	# if you are using S3, then fill in your S3 details below
-		# 	key: ""
-		# 	secret: ""
-
-	# Databases
-	# ---------
-	mongo:
-		url : 'mongodb://127.0.0.1/sharelatex'
-
-	redis:
-		web:
-			host: "localhost"
-			port: "6379"
-			password: ""
-
-		api:
-			host: "localhost"
-			port: "6379"
-			password: ""
-
-	mysql:
-		clsi:
-			database: "clsi"
-			username: "clsi"
-			password: ""
-			dialect: "sqlite"
-			storage: "/var/lib/sharelatex/clsi.sqlite"
-
-	# Service locations
-	# -----------------
-
-	# Configure which ports to run each service on. Generally you
-	# can leave these as they are unless you have some other services
-	# running which conflict, or want to run the web process on port 80.
-	internal:
-		web:
-			port: webPort = 3000
-			host: "localhost"
-		documentupdater:
-			port: docUpdaterPort = 3003
-			host: "localhost"
-		clsi:
-			port: clsiPort = 3013
-			host: "localhost"
-		filestore:
-			port: filestorePort = 3009
-			host: "localhost"
-		trackchanges:
-			port: trackchangesPort = 3015
-			host: "localhost"
-
-	# Tell each service where to find the other services. If everything
-	# is running locally then this is easy, but they exist as separate config
-	# options incase you want to run some services on remote hosts.
-	apis:
-		web:
-			url: "http://localhost:#{webPort}"
-			user: httpAuthUser
-			pass: httpAuthPass
-		documentupdater:
-			url : "http://localhost:#{docUpdaterPort}"
-		clsi:
-			url: "http://localhost:#{clsiPort}"
-		filestore:
-			url: "http://localhost:#{filestorePort}"
-		trackchanges:
-			url: "http://localhost:#{trackchangesPort}"
-		thirdPartyDataStore:
-			url : "http://localhost:3002"
-			emptyProjectFlushDelayMiliseconds: 5 * seconds
-		tags:
-			url :"http://localhost:3012"
-		spelling:
-			url : "http://localhost:3005"
-		versioning:
-			snapshotwaitms:3000
-			url: "http://localhost:4000"
-			username: httpAuthUser
-			password: httpAuthPass
-		recurly:
-			privateKey: ""
-			apiKey: ""
-			subdomain: ""
-		chat:
-			url: "http://localhost:3010"
-		templates:
-			port: 3007
-		blog:
-			port: 3008
-		templates_api:
-			url: "http://localhost:3007"
-
-	# Where your instance of ShareLaTeX can be found publically. Used in emails
-	# that are sent out, generated links, etc.
-	siteUrl : 'http://localhost:3000'
-
-	# Same, but with http auth credentials.
-	httpAuthSiteUrl: 'http://#{httpAuthUser}:#{httpAuthPass}@localhost:3000'
-
-	# Security
-	# --------
-	security:
-		sessionSecret: sessionSecret
-
-	httpAuthUsers: httpAuthUsers
-
-	# Default features
-	# ----------------
-	#
-	# You can select the features that are enabled by default for new
-	# new users.
-	defaultFeatures: defaultFeatures =
-		collaborators: -1
-		dropbox: true
-		versioning: true
-
-	plans: plans = [{
-		planCode: "personal"
-		name: "Personal"
-		price: 0
-		features: defaultFeatures
-	}]
-
-	# Spelling languages
-	# ------------------
-	#
-	# You must have the corresponding aspell package installed to 
-	# be able to use a language.
-	languages: [
-		{name: "English", code: "en"}
-	]
-
-	# Email support
-	# -------------
-	#
-	#	ShareLaTeX uses nodemailer (http://www.nodemailer.com/) to send transactional emails.
-	#	To see the range of transport and options they support, see http://www.nodemailer.com/docs/transports
-	#email:
-	# Who should emails be from by default?
-	#	fromAddress: ""
-	# The default replyTo field, if it should be set
-	#	replyTo: ""
-	#	lifecycle: false
-	## Example transport and parameter settings for Amazon SES
-	#	transport: "SES"
-	#	parameters:
-	#		AWSAccessKeyID: ""
-	#		AWSSecretKey: ""
-
-
-	# Third party services
-	# --------------------
-	#
-	# ShareLaTeX's regular newsletter is managed by Markdown mail. Add your
-	# credentials here to integrate with this.
-	# markdownmail:
-	# 	secret: ""
-	# 	list_id: ""
-	#
-	# Fill in your unique token from various analytics services to enable
-	# them.
-	# analytics:
-	# 	mixpanel:
-	# 		token: ""
-	# 	ga:
-	# 		token: ""
-	# 	heap:
-	# 		token: ""
-	# 
-	# ShareLaTeX's help desk is provided by tenderapp.com
-	# tenderUrl: ""
-	#
-
-	# Production Settings
-	# -------------------
-
-	# Should javascript assets be served minified or not. Note that you will
-	# need to run `grunt compile:minify` within the web-sharelatex directory
-	# to generate these.
-	useMinifiedJs: false
-
-	# Should static assets be sent with a header to tell the browser to cache
-	# them.
-	cacheStaticAssets: false
-
-	# If you are running ShareLaTeX over https, set this to true to send the
-	# cookie with a secure flag (recommended).
-	secureCookie: false
-
-	# Internal configs
-	# ----------------
-	path: 
-		# If we ever need to write something to disk (e.g. incoming requests
-		# that need processing but may be too big for memory, then write
-		# them to disk here).
-		dumpFolder: Path.resolve "data/dumpFolder"
-		# Where to write the project to disk before running LaTeX on it
-		compilesDir:  "/var/lib/sharelatex/compiles"
-		# Where to cache downloaded URLs for the CLSI
-		clsiCacheDir: "/var/lib/sharelatex/clsi-cache"
-	
-	# Automatic Snapshots
-	# -------------------
-	automaticSnapshots:
-		# How long should we wait after the user last edited to 
-		# take a snapshot?
-		waitTimeAfterLastEdit: 5 * minutes
-		# Even if edits are still taking place, this is maximum
-		# time to wait before taking another snapshot.
-		maxTimeBetweenSnapshots: 30 * minutes
-
-	# Smoke test
-	# ----------
-	# Provide log in credentials and a project to be able to run
-	# some basic smoke tests to check the core functionality.
-	#
-	# smokeTest:
-	# 	user: ""
-	# 	password: ""
-	# 	projectId: ""
-
-	# Filestore health check
-	# ----------------------
-	# Project and file details to check in filestore when calling /health_check
-	# health_check:
-	# 	project_id: ""
-	# 	file_id: ""

+ 1 - 1
chef/cookbooks/texlive/attributes/default.rb

@@ -1,2 +1,2 @@
 default[:texlive][:schema]  = "small"
-default[:texlive][:bin_dir] = "/usr/local/texlive/2013/bin/x86_64-linux"
+default[:texlive][:bin_dir] = "/usr/local/texlive/2014/bin/x86_64-linux"