#環境
- macOS 10.12.6
- MacBook pro 2016
- VirtualBox 5.2.18
- CentOS 7.6-1810
#リポジトリの追加
yumコマンドでインストールします。
CentOS 7では公式のyumリポジトリにnginxがないので、まずはnginxの公式が用意しているリポジトリを追加します。
※ yum
と リポジトリ
に関しては、こちらの記事をご覧ください。
###nginxの.repoファイルを作成
nginx.repo
というファイル名で、 /etc/yum.repos.d/
配下にファイルを作成してください。
# cd /etc/yum.repos.d
# touch nginx.repo
ファイルの中身を書き加えましょう。
# vi nginx.repo
.repoファイルの書き方は以下のような感じです。
[nginx] # リポジトリID(なんのリポジトリなのかを表す、ユニークで任意な名前)
name=nginx repo # リポジトリ名(yum repolistで表示される)
baseurl=http://nginx.org/packages/centos/7/$basearch/ # リポジトリの場所(このurlの先のリモートにリポジトリがある)
gpgcheck=0 # GPG署名確認を有効にするか否か(0 = しない, 1 = する)
enabled=1 # yum コマンド利用時にこのリポジトリを使用するかどうか(0 = しない, 1 = する)
#yumでインストール
まずは、先ほど追加したリポジトリが反映されているかのチェック。
# yum info nginx
利用可能なパッケージ
名前 : nginx
アーキテクチャー : x86_64
エポック : 1
バージョン : 1.14.2
リリース : 1.el7_4.ngx
容量 : 754 k
リポジトリー : nginx/x86_64
要約 : High performance web server
URL : http://nginx.org/
ライセンス : 2-clause BSD-like license
説明 : nginx [engine x] is an HTTP and reverse proxy server, as well as
: a mail proxy server.
こんな感じでリポジトリ情報が出てくれていれば、確認OK
あとは、インストール
# yum install nginx
#Nginxの起動と停止
###nginxのポートに気をつける
yumでnginxをインストールした際、デフォルトのポートは80番になっています。
nginxと一緒にApacheも入れてどちらもデフォルトのポート番号だと、ポートが被ってしまってうまく起動してくれません。
さらに、nginxは1024よりも低いポート番号(80番とか)で起動しようとすると、エラーログ( /var/log/nginx/error.log
)に以下のようなエラーが出ます。
bind() to 0.0.0.0:80 failed (13: Permission denied)
この場合、管理者権限(root権限)で、起動しなければならないみたいです。
しかし!自分の場合、sudoで実行しても、rootユーザーで実行しても全くこのエラーが解消されずでした…
なので、自分はポート番号を変えて解決しました!
###-- 2019/02/14 追記
SELinuxという標準の制御機能があるらしく、そいつの制御に引っかかって弾かれていたみたいです…(そんなのこのエラーだけじゃわからんよ…)
SELinuxの状態は以下で確認できます。
# getenforce
enforcing
・enforcing SELinux有効でありアクセス制御が有効となる
・permissive アクセス制御は無効だが警告メッセージを表示する
・disabled SELinux無効
こちらより
なので、今回はSELinuxをpermissive
にしなくてはなりませんね。
変更のやり方はこうです
# setenforce 0 //permissiveに変更
# setenforce 1 //enforcingに変更
これでどんなポートでも設定できちゃいます!!!やったー!!!
###nginxで使用するポートの変更
設定できるのが、 /etc/nginx/conf.d/default.conf
のファイルです。
# vi /etc/nginx/conf.d/default.conf
以下の部分を書き換えましょう!
server {
listen 8080; # この部分でポート番号を変更できる
server_name localhost;
###起動
# systemctl start nginx
CentOS 6 以下は、service
コマンドを使ってください。
###起動の確認
# systemctl status nginx
たくさん文字が出てきますが、Active: active (running)
とどこかにあれば動いている証しです。
###停止
# systemctl stop nginx
#自動起動の設定
これは、CentOSの起動・再起動の際に一緒にnginxも起動するようにする設定です。
以下のコマンドでOK
# systemctl enable nginx
CentOS 6 以下は、chkconfig
コマンドを使ってください。
#ブラウザ確認
まずは、CentOSがデフォルトでfirewalldが動いていてアクセス制御されているので、nginxで設定したポートを許容するように設定します。
これも、コマンドでできちゃいます。
# firewall-cmd --add-port=開けたいポート番号/tcp --zone=public --permanent
# firewall-cmd --reload //反映