def start_ckan(self, production=False, log_syslog=False, paster_reload=True,<EOL>interactive=False):
self.stop_ckan()<EOL>address = self.address or '<STR_LIT:127.0.0.1>'<EOL>port = self.port<EOL>log_syslog = True if self.always_prod else log_syslog<EOL>production = production or self.always_prod<EOL>override_site_url = (self.address is None<EOL>and not is_boot2docker()<EOL>and not self.site_url)<EOL>command = ['<STR_LIT>', str(production), str(override_site_url), str(paster_reload)]<EOL>if not production:<EOL><INDENT>css = self.target + '<STR_LIT>'<EOL>if not exists(css + '<STR_LIT>'):<EOL><INDENT>from shutil import copyfile<EOL>copyfile(css + '<STR_LIT>', css + '<STR_LIT>')<EOL><DEDENT><DEDENT>ro = {<EOL>self.target: '<STR_LIT>',<EOL>scripts.get_script_path('<STR_LIT>'): '<STR_LIT>'<EOL>}<EOL>if not is_boot2docker():<EOL><INDENT>ro[self.datadir + '<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>datapusher = self.needs_datapusher()<EOL>if datapusher:<EOL><INDENT>run_container(<EOL>self._get_container_name('<STR_LIT>'),<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>ro=ro,<EOL>volumes_from=(self._get_container_name('<STR_LIT>') if is_boot2docker() else None),<EOL>log_syslog=log_syslog)<EOL><DEDENT>while True:<EOL><INDENT>self._create_run_ini(port, production)<EOL>try:<EOL><INDENT>self._run_web_container(port, command, address, log_syslog=log_syslog,<EOL>datapusher=datapusher, interactive=interactive)<EOL>if not is_boot2docker():<EOL><INDENT>self.address = address<EOL><DEDENT><DEDENT>except PortAllocatedError:<EOL><INDENT>port = self._next_port(port)<EOL>continue<EOL><DEDENT>break<EOL><DEDENT>
Start the apache server or paster serve

:param log_syslog: A flag to redirect all container logs to host's syslog
:param production: True for apache, False for paster serve + debug on
:param paster_reload: Instruct paster to watch for file changes