月次アーカイブ: 12月 2014

concrete5-logo先ほどUPしたconcrete5一撃インストールですが、ブラウザでのオペレーションが発生するので、厳密には一撃ではありません。WordPressで言うところのWP-CLIみたいにコマンドラインからインストールできないかなー、と探していたら、ありました!そのものズバリ install-concrete5.php が。

ただし、concrete5.7.3では動きませんでした。どうやら引数に指定するcoreのところで処理がおかしいようです。安定版の最新バージョン5.6.3.2でインストールしてみたら一撃インストールできたので、こちらの一撃スクリプトを直してみました。

以下の一撃スクリプトは、今後concrete5がバージョンアップしたときにメンテナンスしやすいように、ダウンロードURLなどを変数に格納しました。ブログの管理者メールアドレスとサイトのタイトルも適宜修正して使ってくださいね。(クリックで大きくなります)

#!/bin/bash
DBNAME=concrete5
DBUSER=con5user
PARAMFILE=${HOME}/.mysql/MySQLPARAM
CONCRETE5ZIP=concrete5.6.3.2.ja.zip
DOWNLOADURL=http://concrete5-japan.org/index.php/download_file/view/1488/45/
DOCUMENT_ROOT=/var/www/html
ADMIN_EMAIL=you@example.com
SITENAME="ぬるぽぽぽ"
sudo yum -y update
sudo service iptables stop
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT
sudo iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo service iptables save
sudo service iptables start
sudo chkconfig iptables on
sudo yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo cp -p /etc/yum.repos.d/nginx.repo /etc/yum.repos.d/nginx.repo.orig
sudo sed -i 's/centos/mainline/centos/' /etc/yum.repos.d/nginx.repo
sudo yum -y install nginx
[ ! -f /etc/yum.repos.d/remi.repo ] && 
sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo yum -y --enablerepo=remi install gd-last
sudo yum --enablerepo=remi-php56 -y install php-cli php-common php-mbstring php-pdo php-xml php-mysqlnd php-gd php-pecl-apcu php-xmlrpc php-opcache php-fpm
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
sudo yum -y install mysql-community-server
mkdir ${HOME}/.mysql
sudo chkconfig mysqld on
sudo service mysqld start
echo "user root $(cat /dev/urandom | tr -dc '[:alnum:]' | head -c 8)" > ${PARAMFILE}
echo "DBPARAM ${DBNAME} ${DBUSER} $(cat /dev/urandom | tr -dc '[:alnum:]' | head -c 8)" >> ${PARAMFILE}
mysqladmin -u root password "$(grep ^user ${PARAMFILE} | awk '{print $NF}')"
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}') -e "create database ${DBNAME} character set utf8;"
PW=$(grep ^DBPARAM ${PARAMFILE} | awk '{print $NF}')
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}') -e "GRANT ALL PRIVILEGES on ${DBNAME}.* to ${DBUSER}@localhost identified by "${PW}";"
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}') -e "DELETE FROM mysql.user WHERE User='';"
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}') -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}') -e "FLUSH PRIVILEGES;"
sudo cp -p /etc/php.ini /etc/php.ini.orig
sudo sed -i 's/;date.timezone =/;##--@--##date.timezone =ndate.timezone = Asia/Tokyo/' /etc/php.ini
sudo cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.orig
sudo sed -i 's/^user = apache/;user = apachenuser = nginx/' /etc/php-fpm.d/www.conf
sudo sed -i 's/^group = apache/;group = apachengroup = nginx/' /etc/php-fpm.d/www.conf
sudo chgrp nginx /var/lib/php/session
sudo chgrp nginx /var/lib/php/wsdlcache
sudo service php-fpm start
sudo chkconfig php-fpm on
mkdir ${HOME}/src
wget -O ${HOME}/src/${CONCRETE5ZIP} ${DOWNLOADURL}
unzip ${HOME}/src/${CONCRETE5ZIP} -d ${HOME}/src/
sudo cp -pr ${HOME}/src/$(echo ${CONCRETE5ZIP} | sed -e 's/.zip//')/* ${DOCUMENT_ROOT}/
sudo chown -R nginx. ${DOCUMENT_ROOT}/
sudo cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
sudo sed -i "s/worker_processes[[:space:]]+[0-9]+/worker_processes $(cat /proc/cpuinfo | grep processor | wc -l)/g" /etc/nginx/nginx.conf
sudo mkdir /etc/nginx/conf.d/BACKUP
sudo mv /etc/nginx/conf.d/*.conf /etc/nginx/conf.d/BACKUP/

cat << _EOL_ > 000_VHOST.conf
server {
    server_name ${HOSTNAME};
    root ${DOCUMENT_ROOT};
    location / {
        index  index.php index.html index.htm;
    }
    if ($uri ~ "^(.+?.php?)(/.*)$") {
        set $path_info $2;
    }
    if (!-e $request_filename) {
        rewrite ^(.+)$ /index.php last;
    }
    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 24h;
        log_not_found off;
    }
        location ~ .php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
    }
}
_EOL_
sudo mv 000_VHOST.conf /etc/nginx/conf.d/
sudo chown root. /etc/nginx/conf.d/000_VHOST.conf
sudo service nginx start
sudo chkconfig nginx on
wget -O ${HOME}/bin/install-concrete5.php 
https://raw.githubusercontent.com/concrete5japan/concrete5/master/cli/install-concrete5.php
sudo php ${HOME}/bin/install-concrete5.php 
--db-server=localhost 
--db-username=$(cat ${PARAMFILE}  | egrep '(^DBPARAM)' | awk '{print $3}') 
--db-password=$(cat ${PARAMFILE}  | egrep '(^DBPARAM)' | awk '{print $NF}') 
--db-database=$(cat ${PARAMFILE}  | egrep '(^DBPARAM)' | awk '{print $2}') 
--starting-point=standard 
--admin-password=$(cat ${PARAMFILE}  | egrep '(^DBPARAM)' | awk '{print $NF}') 
--admin-email=${ADMIN_EMAIL} 
--target=${DOCUMENT_ROOT} 
--site=${SITENAME} 
--core=${DOCUMENT_ROOT}/concrete 
--reinstall=no
sudo reboot

…続きを読む

久々に一撃シェルスクリプトを作成してみました。先ほどこちらでやってみたconcrete5インストールですが、どうせならnginxでも動かしてみたいものです。また、PHPとMySQLは新しめのバージョンにしてみました。

※ 2015/01/22 さくらのクラウド スタートアップスクリプトとしてこちらにまとめました。

…続きを読む

みなさんこんばんは。世間はクリスマス一色ですね。リア充爆発しろ!あ、取り乱しました。危うく echo 'サンタ' | grep -o . | xargs | awk '{print $1$3$2}' を召喚するところな @nullpopopo でございます。そういや2011年のクリスマスイヴには、Techにゃんこというインターネッツラヂオで「リア充死ね!」と叫んだ瞬間が最高聴取率を叩きだしたことを思い出しました。かなり酔っ払ってたので、爆発しろじゃなくて死ねと本音が出てしまったようです。こわいこわい。で、今年の年末は2014/12/28 16:00頃よりUstreamでダラダラ電波を垂れ流します。数時間の人生を無駄にされたい方は是非お付き合いいただければ・・・。

閑話休題。とあるプロジェクトは私を含め自宅やコワーキングスペースで仕事をしているメンバーばかりなので、コミュニケーションは主にchatworkを利用しています。先日、資料を作ってチャットに添付したはいいのですが、ある日自宅のファイルサーバーに置いたその資料を見たときに、「そういやこの資料、何がキッカケで作ったんだっけ?」と思い出すのに時間がかかってしまいました。チャットのログを遡ればよいのですが、作った資料と一緒にログを保存しておけばすぐに思い出すことができるので、できればそうしたいところです。

…続きを読む