2014-12-03 36 views
6

我試圖創建簡單的開發環境與流浪者,但與postgres的問題。postgres in vagrant(ubuntu14.04)

我Vagrantfile很簡單:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 
VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.network "forwarded_port", guest: 8000, host: 8000 
    config.vm.network :public_network 

    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "playbook.yml" 
    end 
end 

我用ansible的規定:

- name: Configure development machine 
    hosts: all 
    sudo: True 
    tasks: 
    - name: install postgres 
     apt: name={{ item }} update_cache=yes 
     with_items: 
     - postgresql 
     - postgresql-contrib 

但不順心的事,當我ssh到虛擬機,我看到Postgres的安裝不正確

奇怪的事情:

$ /etc/init.d/postgresql start 
perl: warning: Setting locale failed. 
perl: warning: Please check that your locale settings: 
     LANGUAGE = (unset), 
     LC_ALL = (unset), 
     LC_TIME = "uk_UA.UTF-8", 
     LC_MONETARY = "uk_UA.UTF-8", 
     LC_ADDRESS = "uk_UA.UTF-8", 
     LC_TELEPHONE = "uk_UA.UTF-8", 
     LC_NAME = "uk_UA.UTF-8", 
     LC_MEASUREMENT = "uk_UA.UTF-8", 
     LC_IDENTIFICATION = "uk_UA.UTF-8", 
     LC_NUMERIC = "uk_UA.UTF-8", 
     LC_PAPER = "uk_UA.UTF-8", 
     LANG = "en_US.UTF-8" 
    are supported and installed on your system. 
perl: warning: Falling back to the standard locale ("C"). 
psql: could not connect to server: No such file or directory 
     Is the server running locally and accepting 

並且沒有/ etc/postgresql目錄(但存在/ etc/postgresql-common)任何想法?

Github repo

+1

你可以嘗試'ENV -i /etc/init.d/postgresql的start'到確認它是語言環境問題? – 2014-12-05 22:06:45

+0

@gslin我有同樣的問題,只是與不同的區域設置,el_GR,而不是uk_UA。這裏是你所要求的:vagrant @ vagrant-ubuntu-trusty-64:〜$ sudo env -i /etc/init.d/postgresql start *沒有PostgreSQL集羣存在;請參閱「man pg_createcluster」 – alefteris 2015-03-21 10:49:12

+0

我對Ubuntu的設置不太熟悉,但在RHEL/CentOS中,您必須先執行'service postgresql initdb'來首先創建羣集。也許嘗試'/etc/init.d/postgresql initdb'或者失敗'pg_ctl initdb' – harmic 2015-03-21 11:57:58

回答

7

添加以下行shell啓動文件

LANGUAGE=en_US.UTF-8 
LANG=en_US.UTF-8 
LC_ALL=en_US.UTF-8 

然後運行(以root權限)

locale-gen en_US.UTF-8 
dpkg-reconfigure locales 
+0

我可以使用ansible(非交互式工作)執行'dpkg-reconfigure locales'步驟嗎?如果你能寫下完美的任務來執行你的指示,那會更好。謝謝。 – alefteris 2015-03-28 10:49:40

+0

我對Ansible並不是非常熟悉,但是這個模塊也許可能是你需要的http://docs.ansible.com/locale_gen_module.html(這裏的源代碼有更多的文檔https:// github。COM/ansible/ansible模塊-額外/斑點/ 400166a655b304094005aace178d0fab1cfe9763 /系統/ locale_gen.py)。如果這不起作用,可以將這些命令保存爲shell腳本並使用' - shell:locale_script.sh'運行 – Railslide 2015-03-28 11:18:27

3

就可以解決這個問題,在Ubuntu機器記錄和使用以下命令重新配置區域設置:

dpkg-reconfigure locales 

並選擇所需的語言環境。

解決區域問題之後,你可能想使用初始化的Postgres集羣和結構:

/etc/init.d/postgresql start 

你應該在這之後,適當的配置。我使用的Postgres的9.3版本,所以配置的路徑是

/etc/postgresql/9.3/main 

乾杯

張國榮