7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7系 初期設定からNGINX+PHP+DB 環境を作るまで

Last updated at Posted at 2018-04-17

CentOS7系 初期設定からNginx + MySQL + php 環境を作るまで


初期設定

とりあえずアプデ
  • yum upgrade
再起動
  • shutdown -r now
管理ユーザーを追加
  • useradd admin
  • passwd admin
rootになれるユーザーをadminのみにする
  • usermod -G wheel admin
  • vi /etc/pam.d/su
  • auth required pam_wheel.so use_uid ←コメント解除
firewalldを有効化する
  • systemctl start firewalld
  • systemctl enable firewalld
firewalldでポートを管理する

VPSやパブリッククラウドの場合いくらここで開けても、より上位にある管理画面からポートを開けてやらないと通信ができないので注意

  • firewall-cmd add-port=80/tcp --permanent (80番ポートを解放)
  • firewall-cmd add-port=443/tcp --permanent (443番ポートを解放)
  • firewall-cmd --reload

必要になるであろう各種パッケージを入れる

  • yum groupinstall base development
各種リポジトリを追加
Repository Command Description
EPEL yum install epel-release エンタープライズ向け外部リポジトリ
remi yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm PHP7.1が必要なため入れる。不安定なものも提供されているので注意が必要
nginx yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm WebサーバーNGINXの公式リポジトリ。
MySQL yum install https://dev.mysql.com/get/mysql57-community-release-elrpm -q --whatprovides /etc/redhat-release --qf '%{version}\n'-9.noarch.rpm MySQL(DB)のコミュニティ版(評価版?)のリポジトリ。
SELinuxを無効化する

デフォでOnになってるこの機能はその強すぎる保護機能のせいで他のアプリケーションに悪さをすることもあるので無効化しておく。とあるが思考停止でとりあえずDisableにするのはどうなんだろうか

  • setenforce 0
  • vim /etc/sysconfig/selinux
  • SELINUX=disabled

yum-cronのインストール

yum-cronとは、パッケージ管理(要はアプデ)を勝手にやってくれる便利なやつ

  • パッケージインストール
  • yum install yum-cron
  • confファイルを編集
  • vim /etc/yum/yum-cron.conf
以下を変更する
  • apply_updates = yes (このソフトにアップデートを許可)
  • update_cmd = security (セキュリティーに関するアプデのみ自動更新に)
yum-cronを使えるようにする
  • systemctl start yum-cron
  • systemctl enable yum-cron

nginx のインストール

Apacheより応答速度が高く、各種設定も楽なのでこれを使用する。ロシア製らしい

  • yum install nginx
  • systemctl start nginx
  • systemctl enable nginx
各種configファイルを編集する

|Conf file|Location|Description|
|:---|:---|:---|:---|
|default.conf|/etc/nginx/conf.d/default.conf|サブドメインやPHPとの連携などを設定するファイル|
|nginx.conf|/etc/nginx/nginx.conf|NGINXのグローバル設定ファイル
|WEB Root|/usr/share/nginx/html|.htmlやWordpressなどのディレクトリを置いておく場所

設定が終わったら設定ファイルをロードし直す
  • systemctl reload nginx
設定したドメインを叩いてブラウザから確認
  • http://localhost

localhostのところは適宜操作しているIP or FQDNに読み換えること


PHPをインストールする。

PHPとは、HTMLと親和性の高いオープンソースの汎用スクリプト。今回はWordPressの実行を想定してインストールします。

パッケージをダウンロードするためにremiリポジトリを有効にする
  • yum install yum-utils
  • yum-config-manager --enable remi-php71
必要なパッケージをインストールする
  • yum install --enablerepo=remi,remi-php71 php php-fpm php-gd php-json php-mysql php-curl php-mbstring php-intl php-mcrypt php-imagick php-xml php-zip php-pecl-apcu php-pecl-zendopcache
php.iniを編集する
  • /etc/php.ini

      mbstring.language = Japanese
      mbstring.http_input = UTF-8
      mbstring.http_output = pass
      mbstring.encoding_translation = On
      mbstring.detect_order = auto
      mbstring.substitute_charset = none
    
NGINXでPHPが動くようにする
  • /etc/nginx/conf.d/default.conf

      {
        location ~ \.php$ {
        root            /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME;
        $document_root$fastcgi_script_name;
        include        fastcgi_params;
    
      }
    
NGINXの再起動
  • systemctl restart nginx
PHP-FPMの起動&自動起動設定
  • systemctl start php-fpm
  • systemctl enable php-fpm
info.phpの作成
  • vim /usr/share/nginx/html/<?php phpinfo();?>
ブラウザーから確認
  • http://localhost/info.php

ここで作ったinfo.phpはサーバーの動作確認後は速やかに削除すること


MySQLをインストールする

MySQLはOracleのデータベースソフト。今回使用しているCentOS7ではデフォで類似品のMariaDBが入っているが、MySQLのがドキュメントが充実しているのでこれを使用。

MySQLをセットアップする
  • systemctl start mysqld
  • systemctl enable mysqld
ちょっとごにょごにょコンフィグファイルに追加
  • vim /etc/my.cnf

  • my.cnf に下記を追記

    default_password_lifetime=0
    log_timestamps=SYSTEM
    explicit_defaults_for_timestamp=TRUE
    skip-character-set-client-handshake
    character-set-server=utf8

MySQL初期パスワードを確認する
  • grep password /var/log/mysqld.log
MySQLにログインする
  • mysql -u root -p
  • 上で確認した初期パスワードをコピペ
  • 任意のパスワードに変更する。

Wordpressをセットアップする

wordpress用のDBを作る
  • create database wordpress;

わかればいいので名前はなんでも

wordpressのデータベースへwordpressさんに権限を与える
  • パスワード'; 

「パスワード」と書かれた場所は適宜設定したいパスワードに変更すること

内容をリロードして退出
  • flush privileges;
  • exit
ドキュメントルートへ移動
  • usr/share/nginx/html
wordpressを落としてくる
  • wget https://ja.wordpress.org/latest-ja.tar.gz
解凍する
  • tar xvzf latest-ja.tar.gz

Let's Encryptをインストールする

Let'sEncryptは無料でWEBページのSSL化をしてくれる公益プロジェクト。MozillaとかGoogleとかAkamaiみたいな超巨大インターネット企業のスポンサーシップによって運営しているもの。最近ではGoogleがhttps化していないWEBサイトのランキング表示順位を下げる施策を始めたのでサイトのSSL化は最早必須と言える。

必要なパッケージを入れる
  • yum install certbot certbot-nginx
通知が欲しいメールアドレスを記入(入力しないと続行できない)
  • Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):
利用規約に同意 (Aで続行)
  • Please read the Terms of Service at...
EFFのメールニュースを購読するかどうか問われる(Nで拒否)
  • Would you be willing to share your email address with the Electronic Frontier Foundation,...
NGINXの設定ファイルにあるドメインのどれに証明書を当てるかを聞かれる(ブランクのままEnterを押して続行)
  • Which names would you like to activate HTTPS for?
NGINXの設定をどうするか聞かれる(2を選ぶとよりセキュアになる)
  • Please choose whether HTTPS access is required or optional.

とりあえずここまででNGINX+PHP+DBの環境が揃いました。
ここから先は適宜nextCloud環境にするなりWordPress環境にするなり煮るなり焼くなりしてください。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?