Өмнө нь Fluentd, Elasticsearch, Kibana - ийн хослуулан хэрэглэх талаар энд пост оруулсан.
Харин энэ удаа дээрх Fluentd, Elasticsearch, Kibana - г ansible - аар автомажуулж үзлээ.
Ерөнхий зарчим нь өмнө бичсэнчилэн яг ижилхэн бөгөөд aggregator болон forwarder 2 ийн хооронд өгөгдлийг дамжуулж байгаа.
Ер нь сервэр талын мэдлэг муу болохоор бүдүүлэгээр шийдсэн тал байгаа байх ккк. Сервэр талын мэдлэгтэй хүн бол ansible, chef - ээс эхлээд гэсэн автожуулагч багажуудыг төвөггүй ашигладаг болох байх гэж бодогдсон.
Ansible бол chef - тэй харьцуулахад өөрийн гэсэн онцлогтой авсаархан хэдий ч томрох тусам тухайн Roles - уудыг хэрхэн бүтэцэд оруулах вэ гэдэг их асуудалтай санагдсан. Миний хувьд дээрхийг автомажжуулах ansible - ийг aggregator(td_agent_server), forwarder(td_agent_client) гэсэн 2 ерөнхий roles болгож хуваасан.
td_agent_client, td_agent_server, elasticsearch, kibana гэсэн role - уудыг энд оруулав.
Зарим нэг хэрэггүй role - ууд нтр байгаа ч гэсэн ерөнхий ansible - ийн маань role - уудын бүтэц доорх маягтай болов.
Дээрхийг хийх явцад тохиргоонуудад өөрчлөлт нилээдгүй орсон тул өмнөх постноос жижиг сажиг тохиргоо зөрсөн байж болзошгүй. group_vars гэсэн global settings - д бүх roles - д хамаарагдах тохиргоог хийж өгсөн байгаа. Доторх тохиргоог харвал access, error, sys, application гэсэн log - уудыг сервэр рүү дамжуулж өгөхөөр хийгдсэн байгаа. Хэрэв slack ашигладаг бол аваарын түвшинд log бүртгэгдэхэд slack - руу чинь алдааны мэдээлэлийг явуулахаар тохиргоо хийгдэнэ. Хэрэв бүр цаг алдалгүй мэдээллийг авахыг хүсвэл twilio - г slack - ийн оронд ашиглаад утас руугаа дуудлага авдаг байхаар нэмж хийж болох юм шиг байна лээ.
Хүн бүхэн амьдралын сурагч...
Saturday, July 23, 2016
Sunday, July 17, 2016
Fluentd, Elasticsearch, Kibana тохиргоо
Өмнөх пост дээр fleuntd - ийн талаар товчхон бичсэн бөгөөд одоо fluentd, elasticsearch, kibana 3 ийг хослуулан хэрэглэх талаар товчхон бичнэ.
Орчин
Windows 10
Vagrant
Centos 7
Fluentd
Java version 1.8.0_91
ELastic searh
Kibana
1. Fluentd гэж юу вэ
Өмнөх нийтлэлийг харна уу. Эндээс
2. Elasticsearch гэж юу вэ
Одоо үед хэрэглэгчийн мэдээллийг цуглуулан анализ хийж түүн дээрээ тулгуурлан чухал шийдвэрүүдийг гаргах нь энгийн л үзэгдэл болсон байна. Өмнө нь өгөгдөл цуглуулах янз бүрийн аргыг хэрэглэж ирсэн ч санасан үр дүнд хүрдэггүй байсан гэх. Харин Elasticsearch нь сүүлийн үед хэрэглэгчийн сонирхолд ойрхон мэдээллийг олж авч анализ хийх нь үр дүнтэй болсон бөгөөд тухайн мэдээллийг тэр чигээр нь бүгдийг биш шинж чанар болон хэрэглэхэд хялбар байдлаар авч хадгалан, түүнээсээ уян хатан хайлт(full search бас) хийх гэх мэт боломжыг олгодогоороо сүүлийн үед анхаарал татаж байгаа. Lucene гэх engine ийг ашигладаг бөгөөд Apache лиценз тэйгээр Solr болон Elastic компани хөгжүүлж байна. Elasticseach ийг facebook болон Github ашигладаг гэх нь бий.
Elasticsearch ийг онцлог
Full text хайлт хийдэг бөгөөд маш их(big data гэх мэт) өгөгдлөөс хэрэглэгчийн хүссэн мэдээллийг хайхад зориулагдсан бүтэцтэй. RDBMS нь яг тохирсон үгээр хайдаг бол full search тухайн хайлтанд таарах болон түүнтэй холбоотой өгөгдлүүдийг буцаадагаараа ялгаатай. Өөрөөр хэлбэл хялбараар хүссэн өгөгдлөө хайх боломжыг бүрдүүлж өгдөгөөрөө full search engine - ийн онцлогтой. Мөн доорх онцлогууд бас бий.
- scalable
- schema less
- multi-tenant
- REST+JSON
- Өгөгдөл хялбар харах(Kibana)
- Hadoop холболт
- Plugin
- Tunning
3. Kibana гэж юу вэ
Kibana нь Elastic компаниас гаргасан багаж бөгөөд Elasticsearch тай хамтарч ажиллах чадвартай realtime өгөгдөл хянах зориулалттай багаж юм. Elasticsearch болон Kibana-г хослуулан их хэмжээний өгөгдөлд(big data) анализ хийхэд өргөн хэрэглэлэг.
Дээр хялбархан Elasticsearch Kibana гэж юу болох талаар бичлээ. Одоо суулгаж ажиллуулах талаар бичье.
Ерөнхий системийн бүтэц доорх хэлбэртэй байна.
1. Fluentd суулгах
Өмнөх нийтлэлийг харна уу. Эндээс
<source>
@type forward
port 24224
</source>
<match httpd_access>
type elasticsearch
host localhost
port 9200
logstash_format true
logstash_prefix httpd_access
logstash_dateformat %Y%m
buffer_type memory
buffer_chunk_limit 10m
buffer_queue_limit 10
flush_interval 1s
retry_limit 16
retry_wait 1s
</match>
2. Elasticsearch суулгах
[elasticsearch-2.x]
name=Elasticsearch
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
+ http.port: 9200
{
"name" : "Photon",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
3. Kibana суулгах
Дээрх тохиргоонуудыг хийгээд node2 гэсэн httpd суулгасан машин руу хандахад тухайн log - ийн өгөгдлийг node1 гэсэн машин руу илгээх юм. Доорх хаягаар орж харвал Kibana дээр log - ийн node2 машинаас илгээсэн өгөгдлийг харж болж байна.
http://192.168.33.55:5601/
Орчин
Windows 10
Vagrant
Centos 7
Fluentd
Java version 1.8.0_91
ELastic searh
Kibana
1. Fluentd гэж юу вэ
Өмнөх нийтлэлийг харна уу. Эндээс
2. Elasticsearch гэж юу вэ
Одоо үед хэрэглэгчийн мэдээллийг цуглуулан анализ хийж түүн дээрээ тулгуурлан чухал шийдвэрүүдийг гаргах нь энгийн л үзэгдэл болсон байна. Өмнө нь өгөгдөл цуглуулах янз бүрийн аргыг хэрэглэж ирсэн ч санасан үр дүнд хүрдэггүй байсан гэх. Харин Elasticsearch нь сүүлийн үед хэрэглэгчийн сонирхолд ойрхон мэдээллийг олж авч анализ хийх нь үр дүнтэй болсон бөгөөд тухайн мэдээллийг тэр чигээр нь бүгдийг биш шинж чанар болон хэрэглэхэд хялбар байдлаар авч хадгалан, түүнээсээ уян хатан хайлт(full search бас) хийх гэх мэт боломжыг олгодогоороо сүүлийн үед анхаарал татаж байгаа. Lucene гэх engine ийг ашигладаг бөгөөд Apache лиценз тэйгээр Solr болон Elastic компани хөгжүүлж байна. Elasticseach ийг facebook болон Github ашигладаг гэх нь бий.
Elasticsearch ийг онцлог
Full text хайлт хийдэг бөгөөд маш их(big data гэх мэт) өгөгдлөөс хэрэглэгчийн хүссэн мэдээллийг хайхад зориулагдсан бүтэцтэй. RDBMS нь яг тохирсон үгээр хайдаг бол full search тухайн хайлтанд таарах болон түүнтэй холбоотой өгөгдлүүдийг буцаадагаараа ялгаатай. Өөрөөр хэлбэл хялбараар хүссэн өгөгдлөө хайх боломжыг бүрдүүлж өгдөгөөрөө full search engine - ийн онцлогтой. Мөн доорх онцлогууд бас бий.
- scalable
- schema less
- multi-tenant
- REST+JSON
- Өгөгдөл хялбар харах(Kibana)
- Hadoop холболт
- Plugin
- Tunning
3. Kibana гэж юу вэ
Kibana нь Elastic компаниас гаргасан багаж бөгөөд Elasticsearch тай хамтарч ажиллах чадвартай realtime өгөгдөл хянах зориулалттай багаж юм. Elasticsearch болон Kibana-г хослуулан их хэмжээний өгөгдөлд(big data) анализ хийхэд өргөн хэрэглэлэг.
Дээр хялбархан Elasticsearch Kibana гэж юу болох талаар бичлээ. Одоо суулгаж ажиллуулах талаар бичье.
Ерөнхий системийн бүтэц доорх хэлбэртэй байна.
1. Fluentd суулгах
Өмнөх нийтлэлийг харна уу. Эндээс
<source>
@type forward
port 24224
</source>
<match httpd_access>
type elasticsearch
host localhost
port 9200
logstash_format true
logstash_prefix httpd_access
logstash_dateformat %Y%m
buffer_type memory
buffer_chunk_limit 10m
buffer_queue_limit 10
flush_interval 1s
retry_limit 16
retry_wait 1s
</match>
2. Elasticsearch суулгах
- sudo yum -y install gcc libcurl-devel
- sudo td-agent-gem install fluent-plugin-elasticsearch
- yum -y install java-1.8.0-openjdk-devel.x86_64
- vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
- vi /etc/elasticsearch/elasticsearch.yml
+ http.port: 9200
- sudo systemctl start elasticsearch.service
- sudo systemctl daemon-reload
- sudo systemctl enable elasticsearch.service
- curl http://localhost:9200 гэж тест хийж үзэхэд доорх json-ийг буцааж байвал ok
{
"name" : "Photon",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
- curl -X PUT localhost:9200/.kibana/_settings -d '{ "index": { "max_result_window": 2147483647 }}'
3. Kibana суулгах
- sudo wget https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz
- sudo cp /home/vagrant/kibana-4.2.0-linux-x64.tar.gz /opt
- sudo tar zxf kibana-4.2.0-linux-x64.tar.gz
- sudo ln -s kibana-4.2.0-linux-x64 kibana
- sudo vi /etc/rc.d/init.d/kibana
#!/bin/bash | |
# | |
# Kibana Init script for Kibana | |
# | |
# chkconfig: 345 99 76 | |
# processname: kibana | |
# | |
KIBANA_EXEC="/opt/kibana/bin/kibana" | |
LOG_FILE="/opt/kibana/kibana.log" | |
PID_FILE="/opt/kibana/kibana.pid" | |
RETVAL=0 | |
case "$1" in | |
"start" ) | |
if [ ! -f ${PID_FILE} ]; then | |
echo "Starting Kibana..." | |
$KIBANA_EXEC 1>"$LOG_FILE" 2>&1 & | |
echo $! > "$PID_FILE" | |
echo "Kibana started with pid $!" | |
else | |
echo "Kibana is Running." | |
fi | |
;; | |
"stop" ) | |
echo "Stopping Kibana..." | |
kill `cat ${PID_FILE}` | |
RETVAL=$? | |
if test $RETVAL -eq 0 ; then | |
rm -f ${PID_FILE} | |
fi | |
;; | |
*) | |
echo "Usage: $0 {start | stop}" | |
exit 0 | |
;; | |
esac | |
exit $RETVAL |
- chmod +x /etc/init.d/kibana
- /etc/init.d/kibana start
Дээрх тохиргоонуудыг хийгээд node2 гэсэн httpd суулгасан машин руу хандахад тухайн log - ийн өгөгдлийг node1 гэсэн машин руу илгээх юм. Доорх хаягаар орж харвал Kibana дээр log - ийн node2 машинаас илгээсэн өгөгдлийг харж болж байна.
http://192.168.33.55:5601/
Saturday, June 18, 2016
Fluentd гэж юу вэ, тохиргоо
Fluentd гэж юу вэ
http://fluentd.org/
Fluentd нь сервэр хоорондын өгөгдөл дамжуулах нээлттэй эхийн программ
Юу хийх боломжтой вэ
Өгөгдөл цуглуулах
Ерөнхий ажиллах зарчим
Fluentd нь өгөгдөл удирдахад хэрэглэгддэг бөгөөд deamon маягаар ажиллана. Ихэнхидээ лог хянахад хэрэглэж байгаа боловч ганц лог биш өгөгдөл дамжуулах өөр зүйлд ч ашиглаж боломжтой. Оролт, хадгалалт, гаралт гэсэн зарчимаар ажилладаг бөгөөд тохируулгыг олон оролт гаралтыг хянахад зориулж тохируулахад болно.
Онцлог
Нээлттэй эх
Нэмэт плагин
Нэмэлт плагины сонголт их. Fluentd ruby программчлалын хэл дээр бичигдсэн тул нэмэлтүүд нь гол төлөв gem хэлбэрээр байх нь элбэг.
Хурд, гүйцэтгэл
Суулгэсэн нэмэлтээс хамаараад янз бүр байна.
Өргөжүүлэх бололмж
Хэрэв хүсвэл өөрөө нэмэлт бичиж болно.
Comminity
Япон хүн хийсэн болохоор Япончуудын community нтр л байдаг юм шиг байгаа юм
Орчин
Windows10
Vagrant
Centos7
2машины хооронд өгөгдөл дамжуулах учир vagrant дээр 2 машин ачаалласан байгаа.
Fluentd ийг суулгаж ажиллуулах
1. sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
Хэрэв gem - ээр суулгах бол
gem install fluentd --no-ri --no-rdoc
2. Сервэр болон node гэсэн 2 машин ачааллаж байгаа. Vagrant учир filter ийг зогсоочихлоо
sudo systemctl stop iptables
sudo systemctl stop firewalld
3. Турших зорилгоор вэб сервэр суулгав
sudo yum -y install httpd
4. Өгөгдөл илгээх машин(forwarder)ы тохиргоо
<source>
type tail
path /var/log/httpd/access_log
pos_file /var/log/td-agent/httpd.pos
tag httpd_access #tag нэмж өгөх
format none
</source>
<match httpd_access>
type forward
send_timeout 60s
heartbeat_type udp
heartbeat_interval 1s
<server>
host 192.168.33.55 # илгээх машины хаяг
port 24224 # илгээх машины порт
</server>
</match>
5. sudo systemctl restart td-agent
6. Өгөгдөл хүээн авах машин(aggregator)ы тохиргоо
<source>
@type forward
port 24224
</source>
<match httpd_access>
@type file
path /var/log/td-agent/access_log
</match>
7. sudo systemctl restart td-agent
Энэ удаад хамгийн энгийн туршилтыг хийж үзүүлэв.
Дараа улам дэлгэрүүлнэ.
Эх сурвалж
http://fluentd.org/
http://hivecolor.com/id/37
http://tagomoris.hatenablog.com/entry/2013/12/03/150656
http://fluentd.org/
Fluentd нь сервэр хоорондын өгөгдөл дамжуулах нээлттэй эхийн программ
Юу хийх боломжтой вэ
Өгөгдөл цуглуулах
Ерөнхий ажиллах зарчим
Fluentd нь өгөгдөл удирдахад хэрэглэгддэг бөгөөд deamon маягаар ажиллана. Ихэнхидээ лог хянахад хэрэглэж байгаа боловч ганц лог биш өгөгдөл дамжуулах өөр зүйлд ч ашиглаж боломжтой. Оролт, хадгалалт, гаралт гэсэн зарчимаар ажилладаг бөгөөд тохируулгыг олон оролт гаралтыг хянахад зориулж тохируулахад болно.
Онцлог
Нээлттэй эх
Нэмэт плагин
Нэмэлт плагины сонголт их. Fluentd ruby программчлалын хэл дээр бичигдсэн тул нэмэлтүүд нь гол төлөв gem хэлбэрээр байх нь элбэг.
Хурд, гүйцэтгэл
Суулгэсэн нэмэлтээс хамаараад янз бүр байна.
Өргөжүүлэх бололмж
Хэрэв хүсвэл өөрөө нэмэлт бичиж болно.
Comminity
Япон хүн хийсэн болохоор Япончуудын community нтр л байдаг юм шиг байгаа юм
Орчин
Windows10
Vagrant
Centos7
2машины хооронд өгөгдөл дамжуулах учир vagrant дээр 2 машин ачаалласан байгаа.
Fluentd ийг суулгаж ажиллуулах
1. sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
Хэрэв gem - ээр суулгах бол
gem install fluentd --no-ri --no-rdoc
2. Сервэр болон node гэсэн 2 машин ачааллаж байгаа. Vagrant учир filter ийг зогсоочихлоо
sudo systemctl stop iptables
sudo systemctl stop firewalld
3. Турших зорилгоор вэб сервэр суулгав
sudo yum -y install httpd
4. Өгөгдөл илгээх машин(forwarder)ы тохиргоо
<source>
type tail
path /var/log/httpd/access_log
pos_file /var/log/td-agent/httpd.pos
tag httpd_access #tag нэмж өгөх
format none
</source>
<match httpd_access>
type forward
send_timeout 60s
heartbeat_type udp
heartbeat_interval 1s
<server>
host 192.168.33.55 # илгээх машины хаяг
port 24224 # илгээх машины порт
</server>
</match>
5. sudo systemctl restart td-agent
6. Өгөгдөл хүээн авах машин(aggregator)ы тохиргоо
<source>
@type forward
port 24224
</source>
<match httpd_access>
@type file
path /var/log/td-agent/access_log
</match>
7. sudo systemctl restart td-agent
Энэ удаад хамгийн энгийн туршилтыг хийж үзүүлэв.
Дараа улам дэлгэрүүлнэ.
Эх сурвалж
http://fluentd.org/
http://hivecolor.com/id/37
http://tagomoris.hatenablog.com/entry/2013/12/03/150656
Saturday, November 28, 2015
rails + devise + rails_admin + cancan тохиргоо
Rails дээр хэрэглэгчийн эрхийг зохицуулах хүртэлх алхамыг devise + rails_admin + cancan ашиглан хялбар туршилтын ноорог бичив.
※item гэсэн модел өмнө нь үүсгэсэн байсан.
※Доорх мэдээллийг яаруу бичсэн тул зарим нэг дэс дараалал өөрчлөгдсөн байвал өршөөж ажаам уу m(_ _)m
Орчин
3. devise - тохиргоо
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
5. app/views/layouts/application.html.erb ийг өөрчилнө.
<%= yield %> ийн дээд талд оруулж өгнө
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
6. Devise ийн хэрэглэгч болон role ийг үүсгэнэ.
has_and_belongs_to_many :roles
def has_role?(name)
self.roles.where(name: name).length > 0
end
8. app/models/role.rb моделийг өөрчилнө
has_and_belongs_to_many :users
9. cancan - ийн тохиргоо
def initialize(user)
if user.has_role?('superadmin')
can :manage, :all
elsif user.has_role?('admin')
can :read, :all
can :access, :rails_admin
can :dashboard
elsif user.has_role?('manager')
can :read, :all
can :access, :rails_admin
can :dashboard
else
can :read, Item
end
end
Дээрх тохиргоог оруулж өгсөнөөр admin, superadmin, manager зэрэг хэрэглэгчийн role - с хамаарч
can болон cannot-оор хэрэглэгчидийн эрхийг зааж өгөх боломжтой.
Дээрх тохиргоог item модел дээр туршилтаар оруулсан болно.
11. rails_admin ийг тохиргоо
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
# config.current_user_method(&:current_user)
болон
# config.authorize_with :cancan
13. config/environments/development.rb ийг өөрчилж имэйлийн тохиргоог хийнэ.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain,
:user_name => 'имэйл',
:password => 'имэйлий нууц үг'
}
14. config/initializers/rails_admin.rb ийг өөрчилнө
config.sign_out_via = :delete ийг config.sign_out_via = :get болгох
15. db/migrate/*_devise_create_users.rb ийг өөрчлөх
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
16. app/models/user.rb ийг өөрчлөх
Доорх шиг , :confirmable ийг нэмж өгнө
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
17. Доорх өгөгдлүүдийг оруулж өгнө
18. Rails ийг ачаалах
rails s -b 0.0.0.0
Superadmin role - р нэвтрэх үеийн дэлгэц
Мэдээлэл
http://qiita.com/umanoda/items/679419ce30d1996628ed
http://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74
http://d.hatena.ne.jp/htz/20140718/1405690417
http://codeonhill.com/devise-cancan-and-activeadmin/
※item гэсэн модел өмнө нь үүсгэсэн байсан.
※Доорх мэдээллийг яаруу бичсэн тул зарим нэг дэс дараалал өөрчлөгдсөн байвал өршөөж ажаам уу m(_ _)m
Орчин
- CentOS release 6.5
- ruby (2.1.1p76)
- rails (4.2.4)
- rails суулгах заавар (version зөрж байгаа!)
- mysql (5.6)
- devise (3.5.2)
- cancancan (1.13.1)
- rails_admin (0.7.0)
- gem 'devise'
- gem 'cancancan'
- gem 'rails_admin'
3. devise - тохиргоо
- rails g devise:install
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
5. app/views/layouts/application.html.erb ийг өөрчилнө.
<%= yield %> ийн дээд талд оруулж өгнө
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
6. Devise ийн хэрэглэгч болон role ийг үүсгэнэ.
- rails g devise user
- rails g model role name
- rails g migration CreateJoinTableUserRole user role
- rake db:migrate
has_and_belongs_to_many :roles
def has_role?(name)
self.roles.where(name: name).length > 0
end
8. app/models/role.rb моделийг өөрчилнө
has_and_belongs_to_many :users
9. cancan - ийн тохиргоо
- rails g cancan:ability
def initialize(user)
if user.has_role?('superadmin')
can :manage, :all
elsif user.has_role?('admin')
can :read, :all
can :access, :rails_admin
can :dashboard
elsif user.has_role?('manager')
can :read, :all
can :access, :rails_admin
can :dashboard
else
can :read, Item
end
end
Дээрх тохиргоог оруулж өгсөнөөр admin, superadmin, manager зэрэг хэрэглэгчийн role - с хамаарч
can болон cannot-оор хэрэглэгчидийн эрхийг зааж өгөх боломжтой.
Дээрх тохиргоог item модел дээр туршилтаар оруулсан болно.
11. rails_admin ийг тохиргоо
- rails g rails_admin:install
- rake db:migrate
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
# config.current_user_method(&:current_user)
болон
# config.authorize_with :cancan
13. config/environments/development.rb ийг өөрчилж имэйлийн тохиргоог хийнэ.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain,
:user_name => 'имэйл',
:password => 'имэйлий нууц үг'
}
14. config/initializers/rails_admin.rb ийг өөрчилнө
config.sign_out_via = :delete ийг config.sign_out_via = :get болгох
15. db/migrate/*_devise_create_users.rb ийг өөрчлөх
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
16. app/models/user.rb ийг өөрчлөх
Доорх шиг , :confirmable ийг нэмж өгнө
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
17. Доорх өгөгдлүүдийг оруулж өгнө
- Item
- User
- Role
18. Rails ийг ачаалах
rails s -b 0.0.0.0
Superadmin role - р нэвтрэх үеийн дэлгэц
manager role - р нэвтрэх үеийн дэлгэц
Мэдээлэл
http://qiita.com/umanoda/items/679419ce30d1996628ed
http://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74
http://d.hatena.ne.jp/htz/20140718/1405690417
http://codeonhill.com/devise-cancan-and-activeadmin/
Thursday, November 26, 2015
Rails Devise монгол орчуулга
Тохиргоо
- Орчуулгыг файл болгон devise_mn.yml нэртэй /config/locales - д хадгална
- /config/application.rb - н хэлний тохиргоог өөрчилнө
- config.i18n.default_locale = :mn
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n
mn:
devise:
confirmations:
confirmed: "Бүртгэл идэвхижлээ."
send_instructions: "Бүртгэлийг идэвхижүүлэх заавартай имэйл удахгүй илгээнэ."
send_paranoid_instructions: "Та бүртгүүлсэн бол удахгүй танд бүртгэлээ хэрхэн идэвхижүүлэх заавартай имэйл очих болно."
failure:
already_authenticated: "Та аль хэдийн нэвэрсэн байна."
inactive: "Таны бүртгэл идэвхижээгүй байна."
invalid: "Нууц үг эсвэл имэйл буруу байна."
locked: "Таны хаяг түгжигдсэн байна."
last_attempt: "Таны хаяг 1 үйлдлийн дараа түгжигдэнэ."
not_found_in_database: "Нууц үг эсвэл имэйл буруу байна."
timeout: "Дахин логин хийж нэвтэрнэ үү."
unauthenticated: "Та бүртгүүлнэ үү."
unconfirmed: "Бүртгэл идэвхижээгүй байна."
mailer:
confirmation_instructions:
subject: "Идэвхижүүлэх заавар"
reset_password_instructions:
subject: "Нууц үгийг ахин өөрчлөх"
unlock_instructions:
subject: "Түр түгжигдсэн аккаунтыг идэвхижүүлэх заавар"
omniauth_callbacks:
failure: "%{kind} баталгаажуулсангүй. Шалтгаан:%{reason}"
success: "%{kind} баталгаажууллаа."
passwords:
no_token: "Энэ хуудас руу хандах боломжгүй. Хаягаа зөв эсэхийг шалгаад дахин оролдоно уу."
send_instructions: "Нууц үг сэргээх зааварыг удахгүй имэйлээр илгээнэ."
send_paranoid_instructions: ""
updated: "Нууц үг амжилттай өөрчлөгдлөө."
updated_not_active: "Нууц үг амжилттай өөрчлөгдлөө."
registrations:
destroyed: "Бүртгэлийг амжилттай устгалаа."
signed_up: "Бүртгэлийг хүлээн авлаа."
signed_up_but_inactive: "Бүртгэл амжилттай. Бүртгэл идэвхижсэний дараа та ашиглах боломжтой."
signed_up_but_locked: "Бүртгэл амжилттай. Хаяг түр хугацаанд түгжигдсэн байгаа тул ашиглах боложмгүй байна."
signed_up_but_unconfirmed: "Бүртгэлийг идэвхижүүлэх имэйл илгээгдлээ. Имэйл доторх бүртгэл идэвхижүүлэх линк дээр дарж бүртгэлээ идэвхижүүлнэ үү."
update_needs_confirmation: "Мэдээлэл амжилттай шинэчлэгдлээ. Таны хаягыг баталгаажуулах шаардлагатай тул доорх линк дээр дарж идэвхижүүлнэ үү."
updated: "Таны бүртгэл шинэчлэгдлээ."
sessions:
signed_in: "Амжилттай нэвтэрлээ."
signed_out: "Амжилттай гарлаа."
unlocks:
send_instructions: "Бүртгэлийг дахин идэвхижүүлэх заавр имэйлээр илгээгдлээ."
send_paranoid_instructions: "Таны мэдээлэл бүртгэлтэй бол дахин идэвхижүүлэх имэйлийг илгээнэ."
unlocked: "Таны бүртгэл түр идэвхигүй боллоо."
errors:
messages:
already_confirmed: " аль хэдийн бүртгүүлсэн байна. Та нэврэнэ үү."
confirmation_period_expired: "%{period} -ний дотор баталгаажна. Ахин хүсэлт илгээнэ үү."
expired: "эрх дууссан байна. Ахин бүртгүүлнэ үү."
not_found: " олдсонгүй."
not_locked: " түгжигдээгүй байна."
not_saved:
one: "Доорх алдаанаас болж %{resource} -ийг хадгалж чадсангүй."
other: "%{count} алдааны улмаас %{resource} -ийг хадгалж чадсангүй:"
Friday, November 6, 2015
Mysql socket алдаа
Доорх алдааг засах
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
Эхлээд socket файл байгаа эсэхийг шалгана
$ ls -al /var/lib/mysql/
Байхгүй бол үүсгэнэ
$ sudo touch /var/lib/mysql/mysql.sock
Эрхийг өөрчилнө
$ sudo chown mysql:mysql /var/lib/mysql
Mysql ийг дахин ачаална
$ sudo /etc/init.d/mysqld restart
/etc/my.cnf ийг өөрчилөөгүй бол дээрхээр болох байх
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
Эхлээд socket файл байгаа эсэхийг шалгана
$ ls -al /var/lib/mysql/
Байхгүй бол үүсгэнэ
$ sudo touch /var/lib/mysql/mysql.sock
Эрхийг өөрчилнө
$ sudo chown mysql:mysql /var/lib/mysql
Mysql ийг дахин ачаална
$ sudo /etc/init.d/mysqld restart
/etc/my.cnf ийг өөрчилөөгүй бол дээрхээр болох байх
Ruby on rails дээр 'mysql2' for database adapter алдаа
rails 4.2.4 дээр шинэ прожект үүсгээд bundle install хийгээд scaffold хийсэн чинь доорх алдаа гарав.
Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
Gemfile даа version ийг нь зааж өгөөд bundle install хийнэ.
gem 'mysql2', '~> 0.3.20'
http://qiita.com/shizuma/items/0f9660d5d46a0012eb9e
Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
Gemfile даа version ийг нь зааж өгөөд bundle install хийнэ.
gem 'mysql2', '~> 0.3.20'
http://qiita.com/shizuma/items/0f9660d5d46a0012eb9e
Subscribe to:
Posts (Atom)