環境構築スクリプトでサーバーを自動構築-CentOS7専用

CentOS7専用になりますが環境構築スクリプトを当サイト・github上にて公開してます。よければ是非使ってみてください。

環境構築スクリプトって何?

さくらのクラウド、VPS、ConohaのVPSなどにはスタートアップスクリプトが用意されておりますが、それと似た感じのものです。スターアップスクリプトは最初の公開時にスクリプトを読み込んで作りますが、このスクリプトはちょっと違います。

centos7 minimal インストールした状態で実行

  • このスクリプトはCentOS7をインストールした状態で使ってください。(VPS、クラウドなどはcentos7 minimalなので使えます)
  • 使用方法はrootもしくはsudo権限ユーザーでシェルの実行をしてください。
  • 使用後はシェルスクリプトを削除してください。
  • 内容は全てyumで普段やっている事をシェルで実行しているだけになります。
  • インストール後初回のみ実行してください。
  • Apacheなど何もインストールされていない状態で行ってください。

一部ファイルですが、ユーザーcentosというのを自動で作成します。その後ドキュメントルートの所有者もrootではなくcentosとなります。パスワードはランダム生成となっています。

コード解説

githubにて上がっているapache_php.shというファイルを元に簡単に解説します。

35行目からがプログラムコード

1行目から34行目まではコメントやプログラムの準備となります。

必要なソフトのインストール

PHPをインストールしたり、他のパッケージをインストールするのに必要なremiリポジトリや、gitをインストールしてます。

#Remiリポジトリのインストール
start_message
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install yum-utils
end_message


#gitリポジトリのインストール
start_message
yum -y install git
end_message

これらはyumでインストールしています。その後アップデートで最新版にしています。

67行目からapacheのインストールと設定

start_message
yum -y install httpd
yum -y install openldap-devel expat-devel
yum -y install httpd-devel mod_ssl

ここでapacheのインストールをしています。SSLもインストールしています。

sed -i -e "151d" /etc/httpd/conf/httpd.conf
sed -i -e "151i AllowOverride All" /etc/httpd/conf/httpd.conf
sed -i -e "350i #バージョン非表示" /etc/httpd/conf/httpd.conf
sed -i -e "351i ServerTokens ProductOnly" /etc/httpd/conf/httpd.conf
sed -i -e "352i ServerSignature off \n" /etc/httpd/conf/httpd.conf

ここでApacheのファイルを修正しています。htaccessを使えるようにしたり、バージョンを非表示にするようにしてます。

99行目でgzip圧縮の設定

#gzip圧縮の設定
cat >/etc/httpd/conf.d/gzip.conf <<'EOF'
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-var
EOF

これはgzip圧縮の設定ファイルを作成して、います。

109行目からPHPの選択j

ITEM_LIST="PHP7.2 PHP7.3 PHP7.4"

インストールするPHPのバージョンを聞くために、事前にリスト登録をしています。

select selection in $ITEM_LIST
do
  if [ $selection = "PHP7.2" ]; then
[\c]

if文を使って条件分岐しています。キーボードの数値キーを入力することで、PHPの7.2から7.4のどれかをインストールできます。


<h4>PHPの設定</h4>

157行目からはPHPの設定をしています。デフォルトでバージョンが表示されているので

echo "sed -i -e s|expose_php = On|expose_php = Off| /etc/php.ini"

でバージョンを非表示にしています。タイムゾーンの設定をしたりしています。167行目からはphpinfoのファイルを作成しています。

ユーザーの作成

PHPの設定が終わったら今度はユーザーの作成をしています。174行目~193行目までユーザーの作成をしたり、所有者の変更をしています

#ユーザー作成
start_message
echo "centosユーザーを作成します"
USERNAME='centos'
PASSWORD=$(more /dev/urandom  | tr -d -c '[:alnum:]' | fold -w 10 | head -1)

useradd -m -G apache -s /bin/bash "${USERNAME}"
echo "${PASSWORD}" | passwd --stdin "${USERNAME}"
echo "パスワードは"${PASSWORD}"です。"

#所属グループ表示
echo "所属グループを表示します"
getent group apache
end_message

#所有者の変更
start_message
echo "ドキュメントルートの所有者をcentos、グループをapacheにします"
chown -R centos:apache /var/www/html
end_message

パスワードはランダムで10桁となっています

このように、基本的にyumでインストールしたりしています。

必要なファイルは全て自動化

スタートアップスクリプト

  • htaccessの設定を別途必要
  • gzipの設定が別途必要
  • HTTP2は別途必要
  • スクリプトによってはCentOS標準バージョンとなる
  • スタートアップスクリプト対応が少ない
  • Apache、nginx、PHPのバージョンは非表示

環境構築スクリプト

  • htaccessの設定済み
  • gzip圧縮設定済み
  • HTTP2対応済み
  • リバースプロキシ対応(nginxのみ)
  • node.js対応
  • Python対応
  • Ruby対応
  • HHVM対応
  • centosユーザー作成。umaskは0002
  • LAMP環境あり
  • LEMP環境あり
  • フレームワーク対応
  • docker対応
  • Go言語対応

となっています。スタートアップスクリプトとは違い、開発環境や本番環境ですぐに使える状態となっています。

テスト環境

  • conohaのVPS
  • さくらのVPS
  • さくらのクラウド(さくらのクラウドは事前にwgetのインストールが必要となります)

にて現在テストをして動く事を確認しております。

配布スクリプト

現在配布スクリプトは以下の様になってます。

WordPress

  • WordPreeのインストール

サイト名、ユーザー名とパスワードを決めるだけで使う事ができます

webserver

  • htaccess(Apacheのみ)
  • gzip
  • ※HTTP2通信
  • リバースプロキシ(nginxのみ)

HTTP2通信に関しては別途confファイルに記述が必要ですが、Apacheの設定としては終わっている形になります。nginxはそのまま設定済みなので使えます

db

  • デフォルトのパスワード期限無効化(MySQLのみ)
  • slowクエリー有効化

LAMP

  • Apache2.4+PHP7.2+MariaDB10.3(モジュール版とFastCGI版)
  • Apache2.4+PHP7.3+MariaDB10.3(モジュール版とFastCGI版)
  • Apache2.4+PHP7.2+MySQL5.7(モジュール版)
  • Apache2.4+PHP7.3+MySQL5.7(モジュール版)
  • Apache2.4+PHP7.2+MySQL8.0(モジュール版)

LEMP

  • nginx+PHP7.2+MariaDB10.3(FastCGI版)
  • nginx+PHP7.3+MariaDB10.3(FastCGI版)
  • nginx+PHP7.2+MySQL5.7(FastCGI版)
  • nginx+PHP7.3+MySQL5.7(FastCGI版)
  • nginx+PHP7.2+MySQL8.0(FastCGI版)

フレームワーク

  • bottle(Apache)
  • Feurlphp(Apache)
  • Laravel(Apache)

language

  • Go
  • Python

ダウンロード方法

スクリプトは単一ファイルになります。

配布スクリプトの種類

現在配布しているスクリプトは以下になります

  • apache2.4.6のインストール
  • apache2.4.xのインストール
  • nginxのインストール
  • nginx+apache
  • nginx+apache+php7.2
  • nginx+php7.2のインストール
  • nginx+php7.3のインストール
  • nginx+php7.2+MaraDBのインストール
  • nodejsのインストール
  • apache2.4.6+hhvmのインストール
  • apache2.4.6+php7.2のインストール
  • apache2.4.x+php7.2のインストール
  • apache2.4.6+php7.3のインストール
  • apache2.4.x+php7.3のインストール
  • apache2.4.6+php7.4のインストール
  • apache2.4.x+php7.4のインストール
  • apache2.4.6+python3.6.7のインストール
  • MariaDB10.2のインストール
  • MariaDB10.3のインストール
  • MySQL5.7のインストール
  • MySQL8のインストール
  • apache2.4+php7.2+MariaDB10.3のインストール
  • apache2.4+php7.3+MariaDB10.3のインストール
  • apache2.4+php7.2+MySQL5.7のインストール
  • apache2.4+php7.3+MySQL5.7のインストール
  • apache2.4+php7.2+MySQL8.0のインストール
  • Go言語のインストール

wgetでインストール

wgetの場合は以下のコマンドをコピー&ペーストしてください
※実行はroot又はsudo権限ユーザーになります

WordPress

#WordPressのインストール(apache2.4.x+php7.2+MariaDB10.3)
wget https://www.logw.jp/download/shell/wp_apache24u_php72_mariadb103.sh

#WordPressのインストール(apache2.4.x+php7.x+MariaDB10.3)
#インストール時にPHPのバージョンを選択します
wget https://www.logw.jp/download/shell/wp_apache24u_php_mariadb103.sh

フレームワーク

#bottle
wget https://www.logw.jp/download/shell/apache_pyenv_bottle.sh

#Feurlphp(apache2.4.x+php7.2+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache24u_fuelphp72_mariadb103.sh

#Feurlphp(apache2.4.x+php7.2+MySQL5.7
wget https://www.logw.jp/download/shell/apache24u_fuelphp72_mysql57.sh

#Feurlphp(apache2.4.x+php7.3+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache24u_fuelphp73_mariadb103.sh

#Feurlphp(apache2.4.x+php7.3+MySQL5.7
wget https://www.logw.jp/download/shell/apache24u_fuelphp73_mysql57.sh

#Feurlphp(apache2.4.6+php7.2+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache_fuelphp72_mariadb103.sh

#Feurlphp(apache2.4.6+php7.x+MySQL
wget https://www.logw.jp/download/shell/apache_fuelphp_mysql.sh
※PHPとMySQLを選んでインストールします


#Feurlphp(apache2.4.6+php7.3+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache_fuelphp73_mariadb103.sh

#Laravel(apache2.4.6+php7.2+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache_laravel72_mariadb103.sh

#Laravel(apache2.4.6+php7.2+MySQL5.7)
wget https://www.logw.jp/download/shell/apache_laravel72_mysql57.sh

#Laravel(apache2.4.6+php7.2+MySQL8.0)
wget https://www.logw.jp/download/shell/apache_laravel72_mysql80.sh

#Laravel(apache2.4.x+php7.3+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache24u_laravel73_mariadb103.sh

#Laravel(apache2.4.6+php7.3+MariaDB10.3)
wget https://www.logw.jp/download/shell/apache_laravel73_mariadb103.sh

#Laravel(nginx+php7.2+MariaDB10.3)
wget https://www.logw.jp/download/shell/nginx_laravel72_mariadb103_drn.sh

#Laravel(nginx+php7.3+MariaDB10.3)
wget https://www.logw.jp/download/shell/nginx_laravel73_mariadb103_drn.sh

Apache

#apache2.4.6 or 2.4.x(ius)
wget https://www.logw.jp/download/shell/apache.sh

#apache2.4.6+hhvm
wget https://www.logw.jp/download/shell/apache_hhvm.sh

#apache2.4.6+php7.x
wget https://www.logw.jp/download/shell/apache_php.sh
※このスクリプトはPHPのインストールしたいバージョンを聞かれます

#apache2.4.6+php7.x(FastCGI)
wget https://www.logw.jp/download/shell/apache_php_fcgid.sh
※このスクリプトはPHPのインストールしたいバージョンを聞かれます

#apache2.4.6+python3.6.7
wget https://www.logw.jp/download/shell/apache_pyenv.sh

#apache2.4.6+Ruby2.6.7
wget https://www.logw.jp/download/shell/apache_rbenv.sh

#apache2.4.x(ius)
wget https://www.logw.jp/download/shell/apache24u.sh

#apache2.4.x+hhvm
wget https://www.logw.jp/download/shell/apache24u_hhvm.sh

#apache2.4.x(ius)+php7.x
wget https://www.logw.jp/download/shell/apache24u_php.sh
※このスクリプトはPHPのインストールしたいバージョンを聞かれます

#apache2.4.x(ius)+php7.x(FastCGI)
wget https://www.logw.jp/download/shell/apache24u_php_fcgid.sh
※このスクリプトはPHPのインストールしたいバージョンを聞かれます

nginx

#nginxのみ
wget https://www.logw.jp/download/shell/nginx.sh

#nginx+apache
wget https://www.logw.jp/download/shell/nginx_apache.sh

#nginx+php7.x
wget https://www.logw.jp/download/shell/nginx_php.sh

#nginx+apache+php7.2
wget https://www.logw.jp/download/shell/nginx_apache_php72.sh

#nginx+php7.2(FastCGI・TCP)
wget https://www.logw.jp/download/shell/nginx_php72.sh

#nginx+php7.2(FastCGI・socket)
wget https://www.logw.jp/download/shell/nginx_php72_socket.sh

#nginx+php7.3(FastCGI・TCP)
wget https://www.logw.jp/download/shell/nginx_php73.sh

#nginx+php7.3(FastCGI・socket)
wget https://www.logw.jp/download/shell/nginx_php73_socket.sh

#nginx+php7.4(FastCGI・TCP)
wget https://www.logw.jp/download/shell/nginx_php74.sh

#nginx+php7.4(FastCGI・socket)
wget https://www.logw.jp/download/shell/nginx_php74_socket.sh

#nginx+node.js
wget https://www.logw.jp/download/shell/nginx_nodejs.sh

#nginx+node.js(ndenv)
wget https://www.logw.jp/download/shell/nginx_ndenv.sh

#nginx+golang
wget https://www.logw.jp/download/shell/nginx_go.sh

#nginx+goenv
wget https://www.logw.jp/download/shell/nginx_goenv.sh


Database

#MariaDB10.3
wget https://www.logw.jp/download/shell/mariadb103.sh

#MariaDB10.4
wget https://www.logw.jp/download/shell/mariadb104.sh

#MySQL5.7
wget https://www.logw.jp/download/shell/mysql57.sh

#MySQL8 
wget https://www.logw.jp/download/shell/mysql8.sh

LAMP

#apache2.4+php7.x+MySQL
wget https://www.logw.jp/download/shell/apache_php_mysql.sh
※PHPとMySQLのバージョンを選ぶタイプです

#apache2.4+php7.x+MariaDB10.3
wget https://www.logw.jp/download/shell/apache_php_mariadb.sh
※PHPとMySQLのバージョンを選ぶタイプです

#apache2.4+php7.x+MariaDB10.3
wget https://www.logw.jp/download/shell/apache_php_fcgid_mariadb.sh
※PHPとMySQLのバージョンを選ぶタイプです
※PHPはFastCGI版となります

#apache2.4.x+php7.x+MySQL
wget https://www.logw.jp/download/shell/apache24u_php_mysql.sh
※PHPとMySQLのバージョンを選ぶタイプです

#apache2.4.x+php7.x+MariaDB10.3
wget https://www.logw.jp/download/shell/apache24u_php_mariadb.sh
※PHPとMySQLのバージョンを選ぶタイプです

LEMP

#nginx+php7.2+MariaDB
wget https://www.logw.jp/download/shell/nginx_php72_mariadb103_drn.sh

#nginx+php7.3+MariaDB
wget https://www.logw.jp/download/shell/nginx_php73_mariadb103_drn.sh

#nginx+php7.2+MySQL5.7
wget https://www.logw.jp/download/shell/nginx_php72_mysql57_drn.sh

#nginx+php7.3+MySQL5.7
wget https://www.logw.jp/download/shell/nginx_php73_mysql57_drn.sh

#nginx+php7.3+MySQL8.0
wget https://www.logw.jp/download/shell/nginx_php73_mysql80_drn.sh

language

#Go言語
wget https://www.logw.jp/download/shell/go_latest.sh

#Python
wget https://www.logw.jp/download/shell/python.sh

docker

#apache+hhvm
wget https://www.logw.jp/download/shell/docker_hhvm.sh

#apache+php7.2+MariaDB
wget https://www.logw.jp/download/shell/docker_apache_php72_mariadb103.sh

デモ動画

実際にインストールした画面を動画撮影してみました

Laravelのインストール

Python-bottleのインストール

実際にテストしてみたいという場合

conohaのテスト環境があるので、それを貸すので使ってみてください。問い合わせより連絡してください。

感想を聞かせてください

もし使ってみて上手くいった、いかなかったなどありましたら#環境構築スクリプトでつぶやくか問い合わせをしていただけると嬉しいです。

docker image対応

dockerにも一部ファイルを対応しています。対応は以下になります

Dockerイメージを配布していますページにDockerイメージの情報を載せています

個人支援・寄付について

logwでは環境構築スクリプトの開発などのため、現在個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではkyashというサービスをつかっております。