環境構築スクリプトでサーバーを自動構築-CentOS7専用
環境構築スクリプトはBuilreeに生まれ変わりました
今まで環境構築スクリプトとして公開していたスクリプトは、新しくBuilree(ビルドリー) として生まれ変わりました。是非活用してください
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の設定をしています。デフォルトでバージョンが表示されているので [c] 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
ダウンロード方法
- github
- wget
スクリプトは単一ファイルになります。
配布スクリプトの種類
現在配布しているスクリプトは以下になります
- apache2.4.6のインストール
- apache2.4.xのインストール
- nginxのインストール
- nginx+apache
- nginx+apache+php7.2
- nginx+php7.xのインストール
- nginx+php7.x+MaraDBのインストール
- nodejsのインストール
- apache2.4.6+hhvmのインストール
- apache2.4.6+php7.xのインストール
- apache2.4.6+python3.6.7のインストール
- MariaDB10.2のインストール
- MariaDB10.3のインストール
- MySQL5.7のインストール
- MySQL8のインストール
- apache2.4+php7.x+MariaDB10.3のインストール
- apache2.4+php7.x+MySQL5or8のインストール
- 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 ※PHPとMySQLのバージョンを選ぶタイプです #nginx+apache+php7.2 wget https://www.logw.jp/download/shell/nginx_apache_php72.sh #nginx+php7.2(FastCGI・socket) wget https://www.logw.jp/download/shell/nginx_php72_socket.sh #nginx+php7.3(FastCGI・socket) wget https://www.logw.jp/download/shell/nginx_php73_socket.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_php_mariadb103_drn.sh ※PHPのバージョンを選択します #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 imageはDockerイメージを配布していますにて配布しております
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS