dozono 30分クッキング -Webサービス編その①
スピーカー
目標(ゴール)
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
3分には届かなかったよ!