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-el rpm -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のがドキュメントが充実しているのでこれを使用。
- 'yum install https://dev.mysql.com/get/mysql57-community-release-el`rpm -q --whatprovides /etc/redhat-release --qf '%{version}\n'`-9.noarch.rpm'
yum -y install mysql-community-devel
yum -y install mysql-community-server
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環境にするなり煮るなり焼くなりしてください。