ปัญหาที่พบบ่อยในการติดตั้งและอัปเดต Redmine
เนื่องจากทั้ง Redmine และ Easy Redmine เป็น Open Source และเป็นเกือบไม่ขึ้นอยู่กับแพลตฟอร์ม อาจเกิดปัญหาในการติดตั้งและอัปเกรดเนื่องจากการกำหนดค่าเซิร์ฟเวอร์ต่าง ๆ รุ่นของซอฟต์แวร์หรือปลั๊กอินที่ติดตั้งอยู่ พวกเราทำงานอย่างหนักเพื่อติดตามปัญหาที่พบบ่อยเพื่อช่วยคุณในการแก้ไขปัญหา
ในระหว่างการอัปเดตแอปพลิเคชัน ข้อความแสดงข้อผิดพลาดที่มี "คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ; ตรวจสอบคู่มือที่สอดคล้องกับเซิร์ฟเวอร์ MySQL เวอร์ชันที่ถูกต้องในการใช้ไวยากรณ์ใกล้เคียง ..." ปรากฏในบันทึก
สาเหตุ
นั่นหมายความว่าฐานข้อมูลของคุณล้าสมัยและไม่สามารถทำงานร่วมกับคำขอที่แอปพลิเคชันของเราส่งให้กับมันได้ มันเข้าใจไม่ได้เลย
วิธีแก้ไข
คุณต้องอัปเดตฐานข้อมูลของคุณ
วิธีอัปเดตฐานข้อมูล?
คำอธิบายอย่างละเอียดในฐานความรู้
คุณได้ติดตั้งหรืออัปเดต Easy Redmine ภายใต้ผู้ใช้ที่มีสิทธิ์ไม่เพียงพอ โดยไม่ปฏิบัติตามคำแนะนำที่แข็งแกร่งของเราในคำแนะนำ (อย่างน้อยหนึ่งครั้งในอดีต)
- แก้ไขสิทธิ์โดยคำสั่ง chgrp และ chown ตามการตั้งค่าเซิร์ฟเวอร์ (เช่น chgrp -R www-data public_html)
- เรียกใช้การติดตั้งอีกครั้ง bundle exec rake easyproject:install RAILS_ENV=production ซึ่งจะล้างแคช (หากคุณเรียกใช้โดย root จะไม่สำเร็จ)
- เริ่มเซิร์ฟเวอร์ใหม่
หากคุณใช้เครื่องจำลองที่ Easy Software ให้เรียกใช้ในนามของผู้ใช้ easy:
sudo chown -R easy /home/easy/current
(ในเครื่องเก่า - sudo chown -R easy /srv/easyredmine/public_html)
sudo chgrp -R easy /home/easy/current
(ในเครื่องเก่า - sudo chgrp -R easy /srv/easyredmine/public_html)
cd /home/easy/current
(ในเครื่องเก่า - cd /srv/easyredmine/public_html)
bundle exec rake easyproject:install RAILS_ENV=production
sudo service puma@your.domain.name restart
อย่าลืมตั้งค่าสิทธิ์สำหรับโฟลเดอร์ที่จำเป็นทั้งหมด
นี่คือบางคำแนะนำเมื่อคุณเจอข้อผิดพลาด 500
- เรียกใช้Easy server requirements checkและพยายามแก้ไขการตรวจสอบที่ล้มเหลว
- สำรองฐานข้อมูลของคุณ
- ดาวน์โหลดแพคเกจล่าสุดจากโซนลูกค้า
- ตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์มีสิทธิ์เข้าถึงโฟลเดอร์ Full access public, files, log, tmp
- เรียกใช้bundle install --without development test
- เรียกใช้bundle exec rake easyproject:install RAILS_ENV=production
- เริ่มต้นเซิร์ฟเวอร์แอปพลิเคชันใหม่
- ลบปลั๊กอิน Redmine ของบุคคลที่สาม (รวมถึงจากฐานข้อมูล)
- เขียนถึงเราที่ support@easyredmine.com และแนบ log/production.log
- ปัญหาแคชของเบราว์เซอร์ - ลองลบแคชจากเบราว์เซอร์
- ปัญหา DNS
- ปัญหาการตั้งค่าเซิร์ฟเวอร์
ก่อนอื่นตรวจสอบการเชื่อมต่อและเครือข่ายของคุณ (ตรวจสอบว่าเซิร์ฟเวอร์สามารถเข้าถึงได้โดยใช้คำสั่ง ping หรือคำสั่ง traceroute) ฝั่งเซิร์ฟเวอร์ Firewall
หากทุกอย่างด้านบนดูดี ลองรับข้อมูลบางส่วนจากไฟล์บันทึกข้อผิดพลาดของ nginx ตรวจสอบไฟล์บันทึกข้อผิดพลาดของ nginx ที่ฝั่งเซิร์ฟเวอร์ - /var/log/nginx/error.log
ตรวจสอบให้แน่ใจว่าการกำหนดค่า nginx ของคุณตรงกับมาตรฐาน การกำหนดค่า nginx มาตรฐานสามารถค้นหาได้ที่นี่:
https://www.redmine.org/projects/redmine/wiki/HowTo_configure_Nginx_to_run_Redmine
ตัวอย่างการกำหนดค่า nginx (ที่ใช้โดย Easy Software) คล้ายกับอย่างเป็นทางการเพียงไม่กี่ตัวแปรถูกปรับแต่งให้เหมาะสม:
user www-data;
worker_processes 8;
worker_rlimit_nofile 60000;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 10240;
# multi_accept on;
}
http {
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # อย่าใช้ SSLv3 ref: POODLE
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 2048;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
send_timeout 1800;
client_body_timeout 1800;
client_header_timeout 1800;
proxy_read_timeout 1800;
client_max_body_size 220m;
fastcgi_buffer_size 64K;
fastcgi_buffers 128 16k;
proxy_max_temp_file_size 0;
types_hash_max_size 4096;
types_hash_bucket_size 128;
proxy_busy_buffers_size 256k;
proxy_buffers 8 256k;
proxy_buffer_size 256k;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-auto/*;
}
สาเหตุที่เป็นไปได้อื่น ๆ ของข้อผิดพลาด 502 รวมถึง...
ยูนิคอร์นไม่ทำงานเลยเนื่องจาก
- สิทธิ์ไม่เพียงพอ
- เวอร์ชันของ passenger ไม่ถูกต้อง
- เวอร์ชัน Ruby ไม่ถูกต้อง
- ไม่มี gem
- ระบบไฟล์เสียหาย
เพื่อหาปัญหาที่แน่นอนคุณต้องตรวจสอบบันทึกข้อผิดพลาดในยูนิคอร์นหรือ Apache + บันทึกแอปพลิเคชันจาก Easy Redmine (log/production.log)
หมดเวลา
หากตั้งค่า timeout ต่ำเกินไป ข้อผิดพลาดนี้จะปรากฏบน:
- การส่งออกข้อมูลขนาดใหญ่
- การโหลดของเซิร์ฟเวอร์เกินพิกัด
- การเรียกใช้งาน rake tasks จาก GUI
ขีดจำกัดของการเชื่อมต่อ MySQL
ตรวจสอบให้แน่ใจว่าคุณมีจำนวนการเชื่อมต่อที่อนุญาตให้ MySQL ใช้งานเพียงพอ สิ่งนี้ขึ้นอยู่กับจำนวนผู้ใช้งาน แต่คุณควรมีอย่างน้อย 100 การเชื่อมต่อที่อนุญาต
ข้อผิดพลาดนี้เกิดขึ้นตั้งแต่เวอร์ชัน 2018 1.2 (แพลตฟอร์ม 04.00 และสูงกว่า)
ข้อผิดพลาดในระหว่างการติดตั้งการอัปเกรดที่มีบางส่วนดังต่อไปนี้
[!] เกิดข้อผิดพลาดในการแยกวิเคราะห์ `Gemfile`:
[!] เกิดข้อผิดพลาดในการแยกวิเคราะห์ `Gemfile`: ไม่สามารถโหลดไฟล์ดังกล่าวได้ --
# plugin 'rys-bundler', github: 'easysoftware/rys-bundler', branch: 'master' > Plugin.hook('rys-gemfile', self)
Bundler ไม่สามารถดำเนินการต่อได้
สาเหตุเกิดจากเวอร์ชันเก่าของตัวติดตั้ง redmine
วิธีแก้ไข:
ก่อนที่จะติดตั้งการอัปเกรด
$ gem install redmine-installer
ปัญหานี้เกิดขึ้นเมื่อคุณใช้ suffix ใน URL ของ Easy Redmine ของคุณ เช่น: https://company.com/easyredmine/
ในกรณีนี้ คุณต้องตรวจสอบให้แน่ใจว่าคุณมีตัวแปร RAILS_RELATIVE_URL_ROOT กำหนดค่าให้ถูกต้องเป็น suffix ที่ถูกต้อง /easyredmine
Bitnami:
- สร้างไฟล์กำหนดค่าเพิ่มเติม config/additional_environment.rb
- config.action_controller.relative_url_root = "/easyredmine"
- จากนั้นทำการ precompile assets (rake easyproject:install RAILS_ENV=production) และ restart เซิร์ฟเวอร์
ตรวจสอบให้แน่ใจว่า wkhtmltopdf ได้รับการติดตั้งและทำงานอย่างถูกต้อง ( wkhtmltopdf ต้องการ X server หรือการจำลองอื่น ๆ)
ทดสอบโดยใช้: "wkhtmltopdf google.com google.pdf"
เพิ่มไปยังการกำหนดค่าพร็อกซีของคุณ:
proxy_set_header X-Forwarded-Proto https
Check cron configuration. It is very important that rake tasks are NOT run by root. It will cause failure due to insufficient permissions.
Let's say you are running Easy Redmine under user easy. The commands are:
View active crons crontab -u easy -l
Editing crontab -u easy -e
Apply changes sudo service cron reload
Example for running cron every 5 minutes:
*/5 * * * * /home/easy/scripts/easy_scheduler.sh &> /dev/null
#!/bin/bash -l
LOG_FILE="/home/easy/current/log/easy_scheduler_rake.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') start rake" >> ${LOG_FILE}
cd /home/easy/current && bundle exec rake easyproject:scheduler:run_tasks RAILS_ENV=production >> ${LOG_FILE}
echo "$(date '+%Y-%m-%d %H:%M:%S') end rake" >> ${LOG_FILE}
/home/easy/scripts/easy_scheduler.sh has to be an executable:
sudo chmod +x /home/easy/scripts/easy_scheduler.sh
Don't hesitate to search the internet for a more precise manual to set up cron on your server. It is not an exclusively Easy Redmine required function.
เมื่อคุณกำลังอัปเดต Easy Redmine บนแพลตฟอร์ม Windows และพบข้อความผิดพลาด ExecJs ::RuntimeError
ที่คุณต้องทำคือ ติดตั้ง NODEJS ในระบบของคุณเพื่ออัปเดตอย่างถูกต้อง
หากการติดตั้งล้มเหลว ให้เรียกใช้ด้วยตนเอง:
$ bundle update
$ rake db:migrate
$ rake redmine:plugins:migrate
ตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์ของคุณสนับสนุนขนาดจริงของที่อยู่ URL
ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้เว็บเซิร์ฟเวอร์ Webrick!
- ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันล่าสุดของเว็บเซิร์ฟเวอร์และ Ruby
- ปรับแต่งคิวรีฟิลเตอร์ช้าเพื่อแสดงฟิลด์น้อยลง
- รีเซ็ต CRON ของคุณให้ไม่เปิดใช้งานบ่อยเกินไป
- อ้างอิงเคสสตัดสินใจนี้ - การเร่งความเร็ว Rails โดยไม่ต้องแตะโค้ด Ruby
- ตรวจสอบการกำหนดค่าของคุณ - https://www.easyredmine.com/resources/installation/1885-recommended-optimal-configuration-of-easy-redmine-server
คัดลอกโฟลเดอร์ไฟล์จาก Redmine เก่าของคุณ
คุณสามารถเปลี่ยนตำแหน่งเริ่มต้นของไฟล์ในไฟล์การกำหนดค่าของ Redmine หรือคุณสามารถใช้ symlink ได้ การใช้เครือข่ายเก็บข้อมูลแบบ LAN หรือเบื้องหลังบนคลาวด์สำหรับการแนบไฟล์ไม่แนะนำเนื่องจากปัญหาความเชื่อถือ
การกำหนดค่า:
./config/configuration.yml
# ที่อยู่สมบูรณ์ของไดเรกทอรีที่เก็บไฟล์แนบ
# ค่าเริ่มต้นคือไดเรกทอรี 'files' ในตัวอย่าง Redmine ของคุณ
# ตัวอย่าง: attachments_storage_path: /var/www/redmine/files
การแก้ปัญหา:
หากคุณไม่สามารถเปิดไฟล์แนบได้ โปรดดู ./log/production.log เพื่อดูข้อผิดพลาดที่พบบ่อย:
ไม่สามารถส่งไฟล์แนบ, /var/www/redmine/files/2015/08/150805095407_xxx.PNG ไม่มีอยู่หรือไม่สามารถอ่านได้
ENOENT, การอนุญาตถูกปฏิเสธ... เป็นต้น
ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เว็บของคุณมีโฟลเดอร์ Full access public, files, log, tmp
การเปลี่ยนแปลงคอมมิตใหม่ในเรพอสิทอรีของคุณจะไม่ปรากฏใน Easy Redmine จนกว่าจะถูกดึงมาโดยแอปพลิเคชัน คุณต้องตั้งค่าเว็บฮุคบน ไคลเอ็นต์เรพอสิทอรี (github, gitlab, TortoiseSVN,...) ด้วยข้อมูลเกี่ยวกับ Easy Redmine ของคุณ
- ไปที่ การตั้งค่า >> การตั้งค่า >> เรพอสิทอรี
- เปิดใช้งาน WS สำหรับการจัดการเรพอสิทอรี
- สร้างคีย์ API
- บันทึก
- ไปที่ไคลเอ็นต์เรพอสิทอรีของคุณ
- เพิ่มเว็บฮุค
เราสมมติว่าเว็บไซต์ของคุณคือ easyredmine.company.com
สำหรับ git - https://easyredmine.company.com/sys/git_fetcher
หรือ https://easyredmine.company.com/sys/git_fetcher?key=[คีย์ API]
- ขึ้นอยู่กับการตั้งค่าของไคลเอ็นต์ อาจต้องการ URL เดียวหรือคีย์ในฟิลด์ที่แตกต่างกัน
สำหรับ SVN - https://easyredmine.company.com/sys/fetch_changesets
หรือ https://easyredmine.company.com/sys/fetch_changesets?key=[คีย์ API]
ตั้งแต่ข้อที่ 5 เป็นเรื่องของไคลเอ็นต์เรพอสิทอรีและไม่เกี่ยวข้องกับการตั้งค่า Easy Redmine นั่นคือสิ่งที่คุณต้องตรวจสอบหลังจากการติดตั้งใหม่หรืออัปเกรดจาก Redmine
เมื่อกำหนดค่าโดเมนของ Easy Redmine ของคุณ โปรดใช้โดเมนระดับที่หนึ่งอย่างน้อย เช่น http://myeasyredmine.com แทนที่จะใช้เพียง http://myeasyredmine เพราะบางเบราว์เซอร์อาจมีปัญหาในการเข้าถึง
และตรวจสอบว่าที่อยู่จากในส่วนของ FROM ถูกต้อง
ควรเป็นเหมือนกัน (หรืออย่างน้อยจากเซิร์ฟเวอร์ SMTP เดียวกัน) กับไฟล์การกำหนดค่า มิเช่นนั้นบางบริการอีเมล (gmail, yahoo, เป็นต้น) อาจปฏิเสธการแจ้งเตือน
ตรวจสอบการกำหนดค่าของคุณตาม บทความนี้ในฐานความรู้
เพื่อตรวจสอบว่าการกำหนดค่าถูกต้อง ลองตรวจสอบว่าสามารถเชื่อมต่อกับเซิร์ฟเวอร์เมลได้จากเซิร์ฟเวอร์ Easy Redmine ของคุณโดยใช้ telnet
telnet your.domain.here port_number_here (ตัวอย่างเช่น: telnet gmail.com 465)
มันจะแสดงให้คุณเห็นว่าคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์เมลของคุณได้จริงหรือว่ามีปัญหาในการกำหนดค่าเซิร์ฟเวอร์เมลของคุณ
เมื่อคุณพยายามทำการส่งออก PDF ซึ่งผลลัพธ์เป็นข้อผิดพลาด (หรือดูเหมือนว่าไม่มีอะไรเกิดขึ้น) บันทึกการผลิตจะระบุข้อผิดพลาดที่คล้ายกัน เช่น
Errno::EPIPE (ท่อที่เสีย) หรือ wkhtmltopdf: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ X ได้
เกิดจากปัญหาในการส่งออกคอมโพเนนต์ wkhtmltopdf
นี่คือวิธีการแนะนำ
เซิร์ฟเวอร์แบบ Headless
รับเวอร์ชันที่ต้องการของ wkhtmltopdf จาก http://wkhtmltopdf.org/downloads.html
ตัวอย่าง (คุณต้องทำงานกับรายละเอียดของสภาพแวดล้อมของคุณเอง):
- sudo apt-get install xvfb xauth
- wget https://bitbucket.org/wkhtmltopdf/wkhtmltopdf/downloads/wkhtmltox-0.13.0-alpha-7b36694_linux-jessie-amd64.deb
- sudo dpkg -i wkhtmltox-0.13.0-alpha-7b36694_linux-jessie-amd64.deb
- sudo apt-get -f install
- sudo mv /usr/local/bin/wkhtmltopdf /usr/local/bin/xwkhtmltopdf
- echo 'exec xvfb-run -a -s "-screen 0 640x480x16" xwkhtmltopdf "$@"' | sudo tee /usr/local/bin/wkhtmltopdf >/dev/null
- sudo chmod a+x /usr/local/bin/wkhtmltopdf
เซิร์ฟเวอร์แบบ Non-headless เท่านั้น
- คุณต้องติดตั้ง wkhtmltopdf บนเซิร์ฟเวอร์ของคุณใน PATH
(apt-get install wkhtmltox, yum install wkhtmltox)
ต้องติดตั้งใน bundler มิฉะนั้นอาจไม่ทำงานหลังจากอัปเดต Easy Redmine - ตรวจสอบให้แน่ใจว่าโปรแกรมทำงานได้ถูกต้อง (เรียกใช้จากคอนโซล เช่น wkhtmltopdf https://easyredmine.com homepage.pdf)
- เรียกใช้ rake easyproject:install RAILS_ENV=production อีกครั้ง
- รีสตาร์ทเซิร์ฟเวอร์
การติดตั้งปลั๊กอิน
- อย่าติดตั้งปลั๊กอินในฐานะผู้ใช้ ROOT
- ก่อนอื่นให้ลบปลั๊กอิน Easy Gantt เก่าทั้งหมด (plugins/easy_gantt*) ถ้ามีอยู่
- คัดลอกปลั๊กอินที่แตกไฟล์ออกทั้งหมดไปยัง REDMINE_ROOT/plugins
- ใน REDMINE_ROOT
รัน: |
$ bundle install |
- (หรือ bundle update) |
$ bundle exec rake db:migrate RAILS_ENV=production |
$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production |
หลังจากนั้นให้รีสตาร์ทเซิร์ฟเวอร์
ข้อกำหนดสำหรับการติดตั้งสำเร็จ
- เวอร์ชัน Redmine: เข้ากันได้กับ Redmine 3.2.x, 3.3.x, 3.4.x, 4.x., 5.x.
- เวอร์ชัน Ruby: 2.3+ (แนะนำ 2.6.)
- ประเภทฐานข้อมูล: MySQL (แนะนำ), PostgreSQL
ปฏิบัติตามขั้นตอนการติดตั้งใน #install ตรวจสอบว่าบันทึกการติดตั้งไม่มีข้อผิดพลาดใด ๆ หากมีให้พยายามแก้ไขตามคำอธิบาย หรือติดต่อ support@easyredmine.com พร้อมแนบส่วนของบันทึกข้อผิดพลาด
การติดตั้งบน Bitnami
Bitnami ไม่ได้ทดสอบหรือรับรอง หากการติดตั้งล้มเหลวให้รันด้วยตนเอง:
รัน: |
$ bundle update |
$ rake db:migrate |
$ rake redmine:plugins:migrate |