Rubyと筋肉とギターとわたし

筋トレが仕事です

【gloudコマンド】ファイアーウォール ルールへ複数IPを設定するシェルを作った

f:id:rdwbocungelt5:20180727094804j:plain

どうもてぃです。

ちょっと前に書いた記事でファイアーウォールルールを20個弱作成しました。

smot93516.hatenablog.jp

確認しながらだったので1時間弱の工数

これをプロジェクト毎に同じ量作成していくって考えるとおぞましい。まじで。

本来なら別プロジェクトでもファイアーウォールルールを共有できたらと思っていろいろ調べてたのですが、よーわからんかったので今回の方法に落ち着きました。

経緯

GCPへ移行させたとある会社のサーバーへ、1分間に3、 4通の頻度で大量の迷惑メールが届いているとの報告をうけました。

ドメインqq.comです。中国?のメールらしい。

Sendgridの管理画面を見てみるとランダムな数字@qq.comのメールが頻繁にきてました。

f:id:rdwbocungelt5:20180823135754p:plain

アクセスログを見てIPを検索した結果、ほぼすべてがフィリピンからの攻撃。

いままで、中国から攻撃が来てたのでその対策はしてたのですが、盲点でした。

思い込みって怖いですね。

今後もファイアーウォールルールを作るって考えると本当に鬱になりそうだったので、だれでもシェルを叩いて作成でき、GitHubに公開して共有すればみんな幸せになるんじゃなかろうか、ということで作成しました。

準備

ローカルでgloudコマンドが使える環境を作っておいてください。

インストール方法は上の記事に載ってます。

GitHub貼っておくのでcloneしてください。

github.com

README.mdに拙い英語でやり方書いてるので、文章間違えあればプルリクおねがいします。

中国、韓国、北朝鮮、フィリピンのIPを制限

cn-kr-kp-firewall.shが中国、韓国、北朝鮮のIPを制限するシェルです。

philippines-firewall.shがフィリピンのIPを制限するシェル。

また攻撃先があれば随時シェルを追加していきます。

さいごに

本当はもっとシェルスクリプトをうまく使って、.txtを全て整形してgcloudコマンド実行させたかった。

もっと勉強します。

【備忘録】docker exec <container ID> bash -cで怒られた

f:id:rdwbocungelt5:20180816164743p:plain

docker execlsコマンドを打とうとしたらエラーが出たので、備忘録として。

環境

  • Docker 17.12.0-ce, build c97c6d6
  • elementary OS 0.4.1 Loki (ubuntu 16.04.1)

状態

docker psで出てくるのが以下2つです。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5f5341ffb035        0f9e103b1a23        "bash"              About an hour ago   Up About an hour                        xenodochial_albattani
402d9d6b0227        ubuntu:16.04        "bash"              About an hour ago   Up About an hour                        gifted_meninsky

一番上のコンテナ内のルートディレクトリを参照したい。

$ docker exec 5f5341ffb035 bash -c 'ls /'
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"/bin/bach\": stat /bin/bach: no such file or directory": unknown

だめっぽい。

bashディレクトリをちゃんと指定してあげても・・・

$ docker exec 5f5341ffb035 /bin/bash -c 'ls /'
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"/bin/bach\": stat /bin/bach: no such file or directory": unknown

だめですね。

解決

stackoverflow.com

これですね。

docker execのオプションが足りなかった模様。

docker exec -i 5f5341ffb035 bash -c 'ls /'
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
samplefile
sbin
srv
sys
tmp
usr
var

わざわざコンテナの中に入らずとも無事参照できました。

おわりに

dockerのロゴ使用に決まりとかあったんですね。

みなさんも気をつけましょう。

www.docker.com

【Linuxコマンド】特定のファイルを削除する

f:id:rdwbocungelt5:20180919135208j:plain

どうもってぃです。

サーバー移行している時に不要なファイルが大量に出てきたので全検索削除を行いました。

そんときのメモがこちら。

ディレクトリ配下該当ファイル全削除

$ find . -name '.htaccess' | xargs rm -f

apacheからnginxへ移行するときに不要になる.htaccessファイルがどのディレクトリにもあったので、上記のコマンドで削除しました。

くっそ邪魔な.DS_Store

$ find . -name '.DS_Store' | xargs rm -f

これでおk。

lsとgrepを使う

今いるディレクトリの.txtファイルを全て削除したい場合

$ ls | grep .txt | xargs rm

ディレクトリ配下全ての.txtを削除したい場合

$ find . | grep .txt | xargs rm -f

今回サーバー移行で大量にあったのががファイル名に入っているもの。

エンジニアでなければ前のファイルはバックアップを取らずにという文字列を頭につけてそのまま残しておくみたい。

いと愚かなり。

$ find . | grep 旧 | xargs rm -f

いらないものは削除しましょう。

終わりに

find . -name 'ファイル名'find . | grep hogeも、どれもそうですが、削除する前に一度検索かけて、該当するものが出てきているか確認してから削除しましょう。

いきなり削除してしまって、ああ削除したらいけんやったのにぃ〜となっても知りませんよ。

くれぐれも、気をつけてくださいね。

番外編

nginxのプロセスを全て削除したい場合

$ ps aux | grep [n]ginx | awk '{ print "kill -9", $2 }'

【gloudコマンド】ファイアーウォール ルールへ複数IPを設定する

f:id:rdwbocungelt5:20180727094804j:plain

いろんなサイトをサーバー移行しています。

その中で、とあるサイトがかなり攻撃を受けるらしく、ストレージをS3に持って行き、サクラVPSで運用しているといったことを聞き、それならいっそのこと攻撃元の海外を全て遮断してしまえばいいんじゃないかと思いやってみました。

gloudコマンドのインストール

まずcurlでとってくる。

$ curl https://sdk.cloud.google.com | bash

Y/nと何回か聞かれるけど、基本的に全部Enterでおk。

最後に

Enter a path to an rc file to update, or leave blank to use [/home/User/.bashrc]:

と聞かれるので、bashrcで管理してる人は特に意識せずそのままEnter。僕はこのまま行きました。

zshだとめんどくさいみたいですけど。

.bashrcを読み込みなおしてwhichでパスが表示されればおk。

$ source ~/.bashrc

$ which gloud
~/google-cloud-sdk/bin/gcloud

gloud initで認証

自分のアカウントにログインします。

$ gcloud init
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.                                                                                                                                                            
Reachability Check passed.
Network diagnostic (1/1 checks) passed.

You must log in to continue. Would you like to log in (Y/n)?  y

yもしくはEnterを押すと、ブラウザが開いて、googleのアカウントログイン画面に飛びます。

ログインがうまく行けば認証完了。 ターミナルに戻ると、

既存のブラウザ セッションに新しいウィンドウが作成されました。
You are logged in as: [example@test.com].

Pick cloud project to use: 
 [1] test-project
 [2] testtest-project
Please enter numeric choice or text value (must exactly match list item):

と、プロジェクトを既に作成していれば、候補が出てくるので適当に選択します。

次に、リージョンを選択すれば終わりです。僕は面倒だったのでデフォルトのままにしてます。

中国、韓国、北朝鮮のIPを遮断

する前に、リストを作成します。

以下にアクセス。

https://ipv4.fetus.jp/krfilter

cn,kr,kpのnginx用の雛形を開きます。

全てコピーして、vim42.156.0.0/19,の形に総置換、総整形します。

これでおk。

実際には250行ごとに改行をなくす置換したものを使っていきます。

firewallルールの作成

ブラウザ上で作成したものに対してupdateかければ簡単です。

雛形こんな感じ。

f:id:rdwbocungelt5:20180806144637p:plain

ソースIPの範囲は適当で大丈夫です。あとからupdateかけるので。

ちなみに、この一つのルールに255個しか設定できないみたいなので、何個も作る形になります。

根気、大事。

gloudコマンドでfirewallをアップデート

gcloudコマンドはTAB補完が優秀ですね。

それはおいておいて、今回の対象ルールはchina-block-01です。

前に準備しておいた、中国IPを250個くらいコピーして--source-rangesオプションの後にくっつけます。

$ gloud compute firewall-rules update chine-block-01 \
--source-ranges 1.0.1.0/24,1.0.2.0/23,1.0.8.0/21,1.0.32.0/19,1.1.0.0/24,1.1.2.0/23,1.1.4.0/22,1.1.8.0/21,1.1.16.0/20,1.1.32.0/19,1.2.0.0/23,1.2.2.0/24,1.2.4.0/22,1.2.8.0/21,1.2.16.0/20,1.2.32.0/19,1.2.64.0/18,1.3.0.0/16,1.4.1.0/24,1.4.2.0/23,1.4.4.0/22,1.4.8.0/21,1.4.16.0/20,1.4.32.0/19,1.4.64.0/18,1.8.0.0/16,1.10.0.0/21,1.10.8.0/23,1.10.11.0/24,1.10.12.0/22,1.10.16.0/20,1.10.32.0/19,1.10.64.0/18,1.11.0.0/16,1.12.0.0/14,1.16.0.0/14,1.24.0.0/13,1.45.0.0/16,1.48.0.0/14,1.56.0.0/13,1.68.0.0/14,1.80.0.0/12,1.96.0.0/12,1.116.0.0/14,1.176.0.0/15,1.180.0.0/14,1.184.0.0/15,1.188.0.0/14,1.192.0.0/13,1.201.0.0/16,1.202.0.0/15,1.204.0.0/14,1.208.0.0/12,1.224.0.0/11,14.0.0.0/21,14.0.12.0/22,14.0.32.0/19,14.0.64.0/18,14.1.0.0/22,14.1.24.0/22,14.1.96.0/22,14.1.108.0/22,14.4.0.0/14,14.16.0.0/12,14.32.0.0/11,14.64.0.0/11,14.102.128.0/22,14.102.156.0/22,14.102.180.0/22,14.103.0.0/16,14.104.0.0/13,14.112.0.0/12,14.128.128.0/17,14.129.0.0/16,14.130.0.0/15,14.134.0.0/15,14.138.0.0/16,14.144.0.0/12,14.192.60.0/22,14.192.76.0/22,14.192.80.0/20,14.196.0.0/15,14.204.0.0/15,14.206.0.0/16,14.208.0.0/12,27.0.128.0/21,27.0.160.0/21,27.0.188.0/22,27.0.204.0/22,27.0.208.0/21,27.0.236.0/22,27.1.0.0/16,27.8.0.0/13,27.16.0.0/12,27.34.232.0/21,27.35.0.0/16,27.36.0.0/14,27.40.0.0/13,27.50.40.0/21,27.50.128.0/17,27.54.72.0/21,27.54.152.0/21,27.54.192.0/18,27.96.128.0/18,27.98.208.0/20,27.98.224.0/19,27.99.128.0/17,27.100.128.0/17,27.101.0.0/16,27.102.0.0/15,27.106.128.0/18,27.106.204.0/22,27.109.32.0/19,27.109.124.0/22,27.111.96.0/19,27.112.0.0/18,27.112.80.0/20,27.112.112.0/21,27.112.128.0/17,27.113.0.0/17,27.113.128.0/18,27.115.0.0/16,27.116.44.0/22,27.116.64.0/18,27.116.128.0/17,27.117.0.0/16,27.118.64.0/18,27.118.128.0/17,27.119.0.0/16,27.120.0.0/18,27.121.72.0/21,27.121.120.0/21,27.122.128.0/17,27.123.232.0/22,27.124.128.0/17,27.125.0.0/17,27.126.0.0/18,27.128.0.0/15,27.131.220.0/22,27.144.0.0/16,27.148.0.0/14,27.152.0.0/13,27.160.0.0/11,27.192.0.0/11,27.224.0.0/14,27.232.0.0/13,27.255.64.0/18,36.0.0.0/22,36.0.8.0/21,36.0.16.0/20,36.0.32.0/19,36.0.64.0/18,36.0.128.0/17,36.1.0.0/16,36.4.0.0/14,36.16.0.0/12,36.32.0.0/14,36.36.0.0/16,36.37.0.0/19,36.37.36.0/23,36.37.39.0/24,36.37.40.0/21,36.37.48.0/20,36.38.0.0/15,36.40.0.0/13,36.48.0.0/15,36.51.0.0/16,36.56.0.0/13,36.96.0.0/11,36.128.0.0/10,36.192.0.0/11,36.248.0.0/14,36.254.0.0/16,36.255.116.0/22,36.255.128.0/22,36.255.164.0/22,36.255.172.0/22,36.255.176.0/22,36.255.220.0/22,39.0.0.0/24,39.0.2.0/23,39.0.4.0/22,39.0.8.0/21,39.0.16.0/20,39.0.32.0/19,39.0.64.0/18,39.0.128.0/17,39.4.0.0/14,39.16.0.0/12,39.64.0.0/11,39.96.0.0/13,39.104.0.0/14,39.108.0.0/16,39.112.0.0/12,39.128.0.0/10,40.72.0.0/15,40.125.128.0/17,40.126.64.0/18,42.0.0.0/22,42.0.8.0/21,42.0.16.0/21,42.0.24.0/22,42.0.32.0/19,42.0.128.0/17,42.1.0.0/19,42.1.32.0/20,42.1.48.0/21,42.1.56.0/22,42.1.128.0/17,42.4.0.0/14,42.8.0.0/13,42.16.0.0/12,42.32.0.0/12,42.48.0.0/13,42.56.0.0/14,42.62.0.0/17,42.62.128.0/19,42.62.160.0/20,42.62.180.0/22,42.62.184.0/21,42.63.0.0/16,42.80.0.0/15,42.82.0.0/16,42.83.64.0/20,42.83.80.0/22,42.83.88.0/21,42.83.96.0/19,42.83.128.0/17,42.84.0.0/14,42.88.0.0/13,42.96.64.0/19,42.96.96.0/21,42.96.108.0/22,42.96.112.0/20,42.96.128.0/17,42.97.0.0/16,42.99.0.0/18,42.99.64.0/19,42.99.96.0/20,42.99.112.0/22,42.99.120.0/21,42.100.0.0/14,42.120.0.0/15,42.122.0.0/16,42.123.0.0/19,42.123.36.0/22,42.123.40.0/21,42.123.48.0/20,42.123.64.0/18,42.123.128.0/17,42.128.0.0/12

Updated [https://www.googleapis.com/compute/v1/projects/あなたのプロジェクト名/global/firewalls/china-block-01].

問題なければupdatedと出てきます

GCPのファイアーウォールルールを確認すると。。。

f:id:rdwbocungelt5:20180806145520p:plain

(入りきれてないですが)ちゃんと更新されてるのが確認できました\(^o^)/

おわりに

https://cloud.google.com/compute/docs/reference/rest/v1/firewalls/update

ここのTry this APIが固まって使えなかったので、gcloudコマンド入れてやる次第になったのですが、複数一気に追加できるのは凄い便利です。

updateではなくcreateで作った方がいいなと思ったり思わなかったり。

追記

最終的にファイアーウォールルールを24個も作成しました。

同じ作業の繰り返しでうつになるかとおもった。

Google Compute Engineのsshが突然接続できなくなった

f:id:rdwbocungelt5:20180727094804j:plain

いろんなサーバーをGCPに移行していっているんですが、突然ブラウザ上のSSHコンソールが接続できなくなったので対処法を書こうと思います。

環境

原因不明

文字通り突然接続できなくなりました。

他プロジェクトのVMインスタンスでは接続できるのにどうしてこんなことが起こったのか謎。

ちなみにSSHはカスタムポートで動くように設定してます。

ファイアーウォールルールも設定済みで、sshd_configにも記述済みの状態です。

マジ謎。

エラーメッセージ

プロジェクト メタデータへの鍵転送に異常に長い時間がかかっています。インスタンス メタデータに転送する方が所要時間は短くなる可能性がありますが、鍵が転送されるのはこの VM のみになります。この仮想マシンから他の仮想マシンSSH 接続する場合は、鍵を適切に転送する必要があります。 鍵をインスタンス メタデータに転送する場合は、こちらをクリックしてください。この設定は後で変更できず、有効にした後に、[インスタンスの詳細] ページで無効にする必要があります。

日本語でおk

その後に一瞬ですがシリアルコンソール云々という文言が出てきたので、とりあえずVMインスタンスからシリアルコンソールを開きました。

開けない(disabledになっている)方はインスタンスの編集からシリアルポート接続を許可にチェックを入れてください。

やったこと

VMインスタンスから該当のインスタンス名をクリック、その後「シリアルコンソールに接続」で接続できます。

接続するとえげつない量のエラーが。。。

vm google-accounts: ERROR Exception calling the response handler. [Errno 28] No space left on device.#012Traceback (most recent call last):#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/metadata_watcher.py", line 196, in WatchMetadata#012    handler(response)#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/accounts/accounts_daemon.py", line 263, in HandleAccounts#012    self.utils.SetConfiguredUsers(desired_users.keys())#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/accounts/accounts_utils.py", line 288, in SetConfiguredUsers#012    updated_users.flush()#012IOError: [Errno 28] No space left on device

なんか容量っぽい・・・。

# df
ファイルシス   1K-ブロック     使用          使用可     使用%   マウント位置
/dev/sda1       15716368   15716348      20           100%         /
devtmpfs        3481172          0            3481172       0%          /dev
tmpfs              3488804          0            3488804      0%          /dev/shm
tmpfs              3488804      17828        3470976      1%          /run
tmpfs              3488804          0            3488804      0%          /sys/fs/cgroup
tmpfs               697764           0            697764        0%          /run/user/1000
tmpfs               697764           0            697764        0%          /run/user/0

100%

ということで少しファイル数を減らして、容量をあけることにします。

シリアルコンソール接続中も継続的にエラーが出てきてたのですが、容量を開けたら出なくなりました。

SSHコンソールに接続

f:id:rdwbocungelt5:20180727103524p:plain

だめですねぇ :)

もう一回シリアルコンソールに接続して、firewallとselinuxがdisableになっているか確認します。

$ sudo systemctl is-enabled firewalld
disabled

$ getenforce
disabled

どっちもdisabledになってるね。

とりあえずよくわからんからsudo yum updateすると、固まりました\(^o^)/

ctrl + cしてもダメ、ウィンドウ閉じて開き直してもダメ。

いまのところ打つ手なし。

諦めてローカルからSSH

正直ブラウザのコンソールだと感度悪いし、起動速度もそんなに速くないです。

これを機に大人しくローカルから接続する方法に切り替えました。

$ cd ~/.ssh & ssh-keygen -t rsa -b 4096 -C "rdwbocungelt5@gmail.com"
#=> あとは順をおって作成するだけ。

出来上がったrsa.pubをコピーして、GCEのメタデータに貼っつけます。

Compute Engine -> メタデータ -> SSH認証鍵 -> 編集で鍵を貼り付けるだけです。

おわりに

ブラウザからSSHコンソールに接続する方法は解決できませんでしたが、暫定的にローカルからSSHすることで解決させました。

解決策が見つかれば後日追記等したいと思います。





アリーヴェデルチ

後日追記(7 / 31)

久しぶりにブラウザからSSHコンソール開いてみたら何の問題もなく開きました。

時間が解決してくれるってことですかね。

失恋じゃねえんだから。

MySQLでユーザーを作成するとAccess Deniedで弾かれる

f:id:rdwbocungelt5:20180718152643p:plain

はい、出ました。

またMySQLのエラー。

zabbixでDB周りの監視をやるための設定をしている時に詰まりました。

ハマった経緯

blog.apar.jp

いつもこちらのサイトを参考にさせてもらってるんですが、 MySQL監視用ユーザー作成の部分で詰まりました。

$ mysql -u root -p
password:

MariaDB [(none)]> grant process on *.* to zabbixagent@localhost identified by '<password>';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

はい、エラーです。

対処法

まずはmysqlを止める。

$ service mysqld stop

既にzabbixで監視対象にしているので、調査しているときに障害通知メールが来ました。

zabbix優秀ですね。

次に、 --skip-grant-tablesで立ち上げ直す。

$ mysqld_safe --skip-grant-tables

そして、/etc/my.cnf.d/server.cnfにskip-grant-tablesを追加する。

$ vim /etc/my.cnf.d/server.cnf

・
・
・
[mysqld]
・
・
・
skip-grant-tables #=> 僕は最後の行に入れました

[galera]
・
・
・

ここまで終わったら、mysqlを立ち上げ直す。

$ service mysqld start

ここで、mysqlにログインしてみます。--skip-grant-tablesをやっているのでパスワード無しでいけます。

$ mysql -u root

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.34-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

念願のcreate userをやってみると・・・

MariaDB [(none)]> create user zabbixagent identified by 'password';
ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement

ん〜、だめっぽい。

データベースを見てみると、mysqlってのができているのでみてみると・・・

MariaDB [(none)]> use mysql;

MariaDB[(mysql)]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

userってとこにありそう。

いろいろ探して、ここを参考に直接userをINSERTしてみました。

ここ↓を参考

stackoverflow.com

MariaDB [mysql]> INSERT INTO mysql.user SET user = 'zabbixagent', host = 'localhost', password = Password('password'),
    -> Select_priv = 'y',
    ->     Insert_priv = 'y',
    ->     Update_priv = 'y',
    ->     Delete_priv = 'y',
    ->     Create_priv = 'y',
    ->     Drop_priv = 'y',
    ->     Reload_priv = 'y',
    ->     Shutdown_priv = 'y',
    ->     Process_priv = 'y',
    ->     File_priv = 'y',
    ->     Grant_priv = 'y',
    ->     References_priv = 'y',
    ->     Index_priv = 'y',
    ->     Alter_priv = 'y',
    ->     Show_db_priv = 'y',
    ->     Super_priv = 'y',
    ->     Create_tmp_table_priv = 'y',
    ->     Lock_tables_priv = 'y',
    ->     Execute_priv = 'y',
    ->     Repl_slave_priv = 'y',
    ->     Repl_client_priv = 'y',
    ->     Create_view_priv = 'y',
  2 # These groups are read by MariaDB server.
    ->     Show_view_priv = 'y',
    ->     Create_routine_priv = 'y',
    ->     Alter_routine_priv = 'y',
    ->     Create_user_priv = 'y',
    ->     Event_priv = 'y',
    ->     Trigger_priv = 'y',
    ->     Create_tablespace_priv = 'y';
Query OK, 1 row affected, 4 warnings (0.00 sec)

おっ、いけた。

userテーブルを見てみると先ほど入れたユーザーが入ってました。

いとをかし。

あと始末

先ほど追加した/etc/my.cnf.d/server.cnfskip-grant-tablesを削除し、mysqlを起動し直します。

これでおkです。

【備忘録】service nginx restartが失敗し、nginx.pidに苦しめられた

f:id:rdwbocungelt5:20180713105520p:plain

サーバー移行でkusanagiwordpressを使うことになり、もちろんそれに伴ってnginxの修正が必要でした。

nginxは前の会社でも苦しめられた経験があったので、懸念してましたが見事にハマりましたね。

環境

エラー内容

/etc/nginx/nginx.confのuserを変更し、service nginx restartをしました(nginx -s reloadだったかも)。

すると。。。

$ service nginx restart

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)

/var/run/nginx.pidがないみたい。

なので、ファイルを作ってもう一度nginxを立ち上げます。

$ touch /var/run/nginx.pid && service nginx restart

nginx: [error] invalid PID number "" in "/var/run/nginx.pid"

invalid PID number

これでぐぐると、nginxのプロセス関係でエラってるっぽい。

解決策

$ service nginx stop

$ ps aux | grep nginx

まず、nginxを止めて、出てくるnginxのプロセスを全てkillしてあげる。

※ 該当プロセス全削除は、以下の記事を参照

smot93516.hatenablog.jp

そしてnginxを起動し直すと。。。

$ service nginx start
Redirecting to /bin/systemctl start nginx.service

無事起動できました\(^o^)/