dozono 30分クッキング -Webサービス編その①

スピーカー

dozonotさん 使用したスライド  公式資料 

目標(ゴール)

Clean Install直後の1台のCentOS7 Minimal上に、30分でWebサービスを構築します。

  • 構築対象のサービス : Wikiサイト (Crowi-Plus)
  • コマンドが多いため、rootユーザでの操作を想定しています。 一般ユーザを使用する場合は、各コマンドの先頭にsudoを追加して下さい。

MongoDB

リポジトリ追加

cat << 'EOF' | tee /etc/yum.repos.d/mongodb.repo [mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc EOF

MongoDBのインストール

yum -y install mongodb-org

SELinuxの設定変更

yum install -y policycoreutils-python semanage port -a -t mongod_port_t -p tcp 27017

MongoDBの自動起動設定+サービスの開始

systemctl start mongod systemctl enable mongod

MongoDBのユーザ作成

mongo use admin db.createUser({user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin"}]}) db.createUser({user: "root", pwd: "password", roles: [ "root" ]}) use crowi db.createUser({user: "crowi", pwd: "password", roles: [{role: "readWrite", db: "crowi"}]}) exit

MongoDBの認証有効化

cp /etc/mongod.conf{,.org} sed -i "s/^#security:/security:\n authorization: enabled/" /etc/mongod.conf diff /etc/mongod.conf{,.org} systemctl restart mongod

Crowi-plus

Crowi-plusのインストール

cd /opt/ curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash - yum install -y nodejs npm install -g yarn yum install -y git git clone https://github.com/weseek/crowi-plus.git cd crowi-plus yarn

Crowi-plusのサービス登録

cat << 'EOF' | tee /etc/systemd/system/crowi-plus.service [Unit] Description=Crowi-plus After=network.target [Service] WorkingDirectory=/opt/crowi-plus EnvironmentFile=/etc/systemd/system/crowi-plus.conf ExecStart=/usr/bin/npm start [Install] WantedBy=multi-user.target EOF cat << 'EOF' | tee /etc/systemd/system/crowi-plus.conf PORT=3000 MONGO_URI="mongodb://crowi:password@localhost/crowi" #ELASTICSEARCH_URI="http://localhost:9200" EOF

Crowi-plusの起動

systemctl daemon-reload systemctl enable crowi-plus systemctl start crowi-plus

Nginx

Nginxのインストール

cat << 'EOF' | tee /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 EOF yum install -y nginx

Nginxの設定

cat << 'EOF' | tee /etc/nginx/conf.d/crowi-plus.conf server { listen 80; access_log /var/log/nginx/crowi-plus.log; error_log /var/log/nginx/crowi-plus.log; location / { proxy_pass http://localhost:3000/; } } EOF

Nginxの起動

systemctl enable nginx systemctl start nginx

SELinuxの設定変更

getsebool -a | grep httpd_can_network_connect setsebool -P httpd_can_network_connect on getsebool -a | grep httpd_can_network_connect

getseboolで設定確認 setseboolで設定追加 /var/log/audit/audit.logにSELinuxの監査ログがあります

ファイアウォール

ファイアウォールの開放

firewall-cmd --add-service=http --permanent firewall-cmd --reload

ElasticSearch

ElasticSearchのインストール

Crowi-plusはElasticSearchの5.x系にしか対応していないので、5.xをインストール

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cat << 'EOF' | tee /etc/yum.repos.d/elasticsearch.repo [elasticsearch-5.x] name=Elasticsearch repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
yum install -y elasticsearch yum install -y java-1.8.0-openjdk.x86_64

プラグインのインストール

cd /usr/share/elasticsearch bin/elasticsearch-plugin install analysis-kuromoji bin/elasticsearch-plugin install analysis-icu

ElasticSearch用メモリの構成

sed -i -e 's/-Xms2g/-Xms512m/g' /etc/elasticsearch/jvm.options

ElasticSearchの起動

systemctl daemon-reload systemctl enable elasticsearch.service systemctl start elasticsearch.service

Crowi-plusの設定変更(ElasticSearchを使用するように変更)

sed -i "s/#ELA/ELA/" /etc/systemd/system/crowi-plus.conf systemctl restart crowi-plus

omake

雑な3分クッキングβ

ansible  Clean Install直後のCentOS7 Minimalにファイルを置いて↓

yum install -y ansible ansible-playbook crowi-cook.yml

1__root_localhost____ssh_.png 3分には届かなかったよ!