質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

Windows subsystem for Linux内でPostgresqlサーバを起動したい

解決済

回答 2

投稿

  • 評価
  • クリップ 3
  • VIEW 1,531

YasuoOmori

score 7

前提・実現したいこと

『Ruby on Rails 5速習実践ガイド』を参考に、railsを使ってwebアプリを作成しようとしています。
(IDEはVScodeで、ターミナルにWindows subsystem for Linuxを使ってUbuntu18.04です)
データベースにPostgresqlを選び、インストールには成功しました。
しかしデータベースを作成しようとした際に、以下のエラーをもらいます。

bin/rails db:create
could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?


そこで、DBが起動していないのではと思い、起動しようとすると、さらに以下のようなエラーが出ます。これはどのように解決できますか?

UbuntuやPostgresqlの再インストールを3回しましたが、結果は同じでした。

お手数をお掛けしますがよろしくお願いします。

発生している問題・エラーメッセージ

sudo service postgresql start
 * Starting PostgreSQL 11 database server                                                                                                                     * Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /var/lib/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log -s -o  -c config_file="/etc/postgresql/11/main/postgresql.conf"  exited with status 1:

2019-02-22 22:42:30.415 DST [28695] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2019-02-22 22:42:30.496 DST [28696] LOG:  database system was interrupted; last known up at 2019-02-22 21:31:50 DST
2019-02-22 22:42:30.497 DST [28696] PANIC:  could not flush dirty data: Function not implemented
2019-02-22 22:42:30.502 DST [28695] LOG:  startup process (PID 28696) was terminated by signal 6: Aborted
2019-02-22 22:42:30.502 DST [28695] LOG:  aborting startup due to startup process failure
2019-02-22 22:42:30.520 DST [28695] LOG:  database system is shut down
pg_ctl: could not start server
Examine the log output.

試したこと

ログを頼りに、次のサイトを参考にして試しましたが、同じでした。

https://medium.com/@stephanedmonson/solution-for-connecting-postgresql-via-wsl-windows-subsystem-for-linux-ubuntu18-c79940fa5742 

 sudo /etc/init.d/postgresql start
 * Starting PostgreSQL 11 database server                                                                                                                     * Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /var/lib/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log -s -o  -c config_file="/etc/postgresql/11/main/postgresql.conf"  exited with status 1:

2019-02-22 23:18:54.960 DST [28728] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2019-02-22 23:18:55.062 DST [28729] LOG:  database system was interrupted; last known up at 2019-02-22 21:31:50 DST
2019-02-22 23:18:55.064 DST [28729] PANIC:  could not flush dirty data: Function not implemented
2019-02-22 23:18:55.069 DST [28728] LOG:  startup process (PID 28729) was terminated by signal 6: Aborted
2019-02-22 23:18:55.070 DST [28728] LOG:  aborting startup due to startup process failure
2019-02-22 23:18:55.094 DST [28728] LOG:  database system is shut down
pg_ctl: could not start server
Examine the log output.

補足情報(FW/ツールのバージョンなど)

  • VScode 1.31.1
  • postgresql -v 11.2
  • Ubuntu18.04 in Windows subsystem for Linux
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • wwbQzhMkhhgEmhU

    2019/02/23 16:04

    切り分けが出来ないならWSLは諦めましょう。↓の問題です。
    https://github.com/Microsoft/WSL/issues/645

    キャンセル

  • YasuoOmori

    2019/02/24 16:09 編集

    回答ありがとうございます。切り分けなどの意味がまずわからなかったので、素直にgit bashに移行しました。いずれ挑戦したいと思います。

    キャンセル

回答 2

checkベストアンサー

+3

ちょうどその書籍を追っていて、そして今まさにこの問題に直面していたところですが、自分はこの方法で解決しました。
postgresql11が該当書籍出版後に登場しています。そのため、何も指示せずにpostgresqlをインストールすると、11がインストールされてしまうのですが、これが何らかの問題を抱えているので、そのままだと接続できません。

したがって全部のpostgresqlを削除してから、明示的にpostgresql10をインストールするようにしたら大丈夫です(11の設定ファイルも邪魔していることがわかったので消してください)

Re: WSL (windows subsystem on linux) users will need to turn fsync off as of 11.2

$sudo apt remove postgresql*
$sudo rm -rf /etc/postgresql/11 /*設定ファイルも消さないと色々邪魔される*/
$sudo apt install postgresql-10
$sudo /etc/init.d/postgresql start

【postgresql11で起動するには】
pg11はaptリポジトリで用意されていないので、キーを追加してアップデートするといいようです。敢えて11で動かさないといけないこともないでしょうけど。また、色々調べたら、postgresql.confからfsyncというステータスをoffにする必要があることがわかりました(読み込み専用となっている場合は、mainフォルダに書き込み権限を与える必要があります)

$sudo chmod -R 777 /etc/postgresql/11/main
$sudo vi /etc/postgresql/11/main/postgresql.conf
/*postgresql.conf内でfsyncを検索*/
fsync = off  /*コメントアウトを外しステータスをoffにする*/

Getting Started With PostgreSQL 11 on Ubuntu 18.04

Railsの画像

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/07 11:51 編集

    つながりました!!! ただ一つだけ付け加えさせていただきますと、postgresql10.7をインストールしても、Is the server running?のようなエラーが出てきました。しかし、fsyncをoffにしたところ、解決しました。11じゃなくても、設定しないといけないということでしょうかね?とりあえず、本当にありがとうございます!

    キャンセル

  • 2019/03/07 11:57 編集

    報告ありがとうございます。その件は自分も再検証してみた結果、設定ファイルが邪魔してると考えています。

    11の設定ファイルを全部削除した後、10に対してもとのpostgresql.confの設定に戻したらつながりましたので、そう書いています。

    キャンセル

0

postgreSQL10.4ですが、動作実績があります。
同じ内容のログは出ることもあるんですが、WARNINGレベルで結果的に起動できていますね。

サービスを使わずにpostgresユーザで以下の方法で起動してみてはいかがでしょうか?

/usr/local/pgsql/bin/pg_ctl start -w
※pg_ctlの場所はインストール先よって違うことがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/24 16:27 編集

    ご回答ありがとうございます。WSLでの開発環境構築はしばらく諦めようと思います。これに一週間以上悩まされていまして、コードを書くのが重要なのに、環境構築で一日がただただ過ぎていくのが、無駄なように感じています。上述しましたが、VScodeのターミナルをGit Bashで学習したいと思います。そこではDBを作成出来ています。本当に優しく指導してくださってありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る