วิธีการติดตั้ง Redmine บน CentOS 7

Redmine เป็นเครื่องมือการจัดการโครงการบนเว็บฟรีและโอเพนซอร์ส มันเขียนใน Ruby on Rails และสนับสนุนเซิร์ฟเวอร์ฐานข้อมูลหลายตัวสำหรับการจัดเก็บฐานข้อมูล มันเป็นแอพพลิเคชั่นที่มีคุณสมบัติหลากหลายซึ่งสนับสนุนหลายโครงการ, ACL ตามบทบาทและระบบติดตามปัญหา นอกจากนี้ยังมีแผนภูมิแกนต์และการสนับสนุนปฏิทินการจัดการไฟล์ต่อโครงการวิกิและฟอรัมรวมถึงคุณสมบัติอื่น ๆ อีกมากมาย รองรับระบบควบคุมเวอร์ชันเช่น Git, SVN หรือ CVS นอกจากนี้ยังมีหลายภาษารองรับได้มากถึง 49 ภาษา

คู่มือนี้เขียนขึ้นสำหรับ Redmine 3.4.4 แต่อาจใช้กับเวอร์ชันที่ใหม่กว่าได้เช่นกัน

ข้อกำหนดเบื้องต้น

  • อินสแตนซ์ของเซิร์ฟเวอร์ Vultr CentOS 7
  • sudo ผู้ใช้
  • ชื่อโดเมนที่ชี้ไปยังเซิร์ฟเวอร์

สำหรับบทช่วยสอนนี้เราจะใช้192.168.1.1เป็นที่อยู่ IP สาธารณะและredmine.example.comเป็นชื่อโดเมนที่ชี้ไปยังอินสแตนซ์ Vultr โปรดตรวจสอบให้แน่ใจว่าได้แทนที่ชื่อโดเมนและที่อยู่ IP ตัวอย่างทั้งหมดด้วยชื่อจริง

ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้งการอ้างอิงต่อ

ติดตั้ง Apache

Redmine เขียนด้วย Ruby on Rails ดังนั้นเราจะต้องการ Phusion Passenger เพื่อรวมเข้ากับ Apache เว็บเซิร์ฟเวอร์เพื่อให้บริการแอปพลิเคชัน ติดตั้ง Apache

sudo yum -y install httpd httpd-devel libcurl-devel

ในการสร้างแอปพลิเคชัน Redmine เราจะต้องมีเครื่องมือในการพัฒนาเช่นกัน ติดตั้งเครื่องมือที่จำเป็น

sudo yum -y install ImageMagick ImageMagick-devel git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel

ติดตั้ง PostgreSQL

Redmine รองรับเซิร์ฟเวอร์ฐานข้อมูลหลายประเภทเช่น MySQL, PostgreSQL และ MSSQL ในบทช่วยสอนนี้เราจะใช้ PostgreSQL เพื่อโฮสต์เซิร์ฟเวอร์ฐานข้อมูล Redmine

PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุ ที่yumเก็บเริ่มต้นมี PostgreSQL เวอร์ชันเก่าดังนั้นให้เพิ่มที่เก็บ PostgreSQL ไปยังระบบ

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

ติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

เริ่มต้นฐานข้อมูล

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

เริ่มต้นเซิร์ฟเวอร์ PostgreSQL และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตเครื่อง

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

เปลี่ยนรหัสผ่านสำหรับผู้ใช้ PostgreSQL เริ่มต้น

sudo passwd postgres

เข้าสู่ระบบในฐานะผู้ใช้ PostgreSQL

sudo su - postgres

สร้างผู้ใช้ PostgreSQL ใหม่สำหรับ Redmine

createuser redmine

redmineคุณได้รับอนุญาตให้ใช้ชื่อผู้แทนใด ๆ PostgreSQL จัดเตรียมpsqlเชลล์เพื่อรันเคียวรีบนฐานข้อมูล สลับไปที่เชลล์ PostgreSQL

psql

ตั้งรหัสผ่านสำหรับผู้ใช้ที่สร้างขึ้นใหม่สำหรับฐานข้อมูล Redmine

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

แทนที่DBPasswordด้วยรหัสผ่านที่ปลอดภัย สร้างฐานข้อมูลใหม่สำหรับการติดตั้ง Redmine

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

ออกจากpsqlเปลือก

\q

เปลี่ยนเป็นsudoผู้ใช้

exit

แก้ไขpg_hba.confไฟล์เพื่อเปิดใช้งานการตรวจสอบตาม MD5

sudo nano /var/lib/pgsql/10/data/pg_hba.conf

ค้นหาบรรทัดต่อไปนี้และเปลี่ยนค่าpeerและidentในMETHODคอลัมน์เป็นtrustและmd5ตามลำดับ

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

เมื่ออัปเดตแล้วการกำหนดค่าควรมีลักษณะเช่นนี้

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

รีสตาร์ท PostgreSQL เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart postgresql-10

ติดตั้งการขึ้นต่อกันของ PostgreSQL ที่จำเป็นเพิ่มเติม

sudo yum -y install libpqxx-devel protobuf-devel

ติดตั้ง Ruby

ขอแนะนำให้ใช้ผู้ใช้ที่ไม่มีสิทธิพิเศษเพื่อเรียกใช้แอปพลิเคชันเพื่อป้องกันไม่ให้ระบบหยุดทำงาน สร้างผู้ใช้ใหม่สำหรับ Redmine และเปลี่ยนเป็นผู้ใช้ที่สร้างขึ้นใหม่

sudo adduser redmine
sudo su - redmine

เราจะติดตั้ง Ruby เวอร์ชันล่าสุดโดยใช้ Ruby Version Manager หรือ RVM มันถูกใช้เพื่อติดตั้งและจัดการ Ruby หลายเวอร์ชัน

เพิ่มคีย์ GPG ของ RVM ไปยังเซิร์ฟเวอร์ของคุณ

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

ติดตั้ง RVM

curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm

ดึงข้อมูลรายการ Ruby รุ่นที่มีอยู่

rvm list known

คุณจะเห็นรายการ Ruby เวอร์ชันยาว ๆ

[redmine@vultr ~]$ rvm list known
# MRI Rubies

[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head

...

ติดตั้ง Ruby เวอร์ชันล่าสุดจากรายการ

rvm install 2.4

ใช้ Ruby รุ่นที่ติดตั้งไว้

rvm use 2.4

คุณสามารถตรวจสอบรุ่นของมัน

ruby -v

คุณจะเห็นผลลัพธ์ที่คล้ายกัน

[redmine@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

ติดตั้ง bundler ซึ่งเป็นตัวจัดการการพึ่งพาสำหรับแอปพลิเคชัน Ruby

gem install bundler

ติดตั้ง Ruby แล้ว ก่อนที่เราจะติดตั้ง Redmine เราจะต้องติดตั้ง Phusion Passenger

ติดตั้งผู้โดยสาร

รันคำสั่งต่อไปนี้เพื่อติดตั้ง Passenger

gem install passenger

ให้สิทธิ์การดำเนินการกับโฮมไดเร็กทอรีของredmineผู้ใช้ ผู้โดยสารต้องดำเนินการไบนารีเพื่อให้บริการแอปพลิเคชัน

chmod o+x "/home/redmine"

ติดตั้งโมดูล Apache สำหรับผู้โดยสาร

passenger-install-apache2-module

สคริปต์ตัวติดตั้งจะถามคำถามคุณ ก่อนอื่นจะให้ข้อมูลเกี่ยวกับกระบวนการติดตั้ง จากนั้นจะขอให้คุณเลือกภาษาที่คุณจะใช้ เนื่องจากแอปพลิเคชันของเราเขียนด้วย Ruby on Rails ให้เลือก Ruby จากเมนูและกด " Enter" เพื่อดำเนินการต่อ

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬡  Python
   ⬡  Node.js
   ⬡  Meteor

โปรแกรมติดตั้งจะตรวจสอบข้อกำหนดต่างๆ โปรแกรมติดตั้งจะไม่พบการพึ่งพาที่ขาดหายไปและจะดำเนินการรวบรวมและติดตั้งโมดูลโดยอัตโนมัติ

เมื่อติดตั้งโมดูลแล้วจะแจ้งให้คุณเพิ่มโมดูลลงในไฟล์กำหนดค่า Apache

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
     PassengerDefaultRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

เราจะข้ามสิ่งนี้ไปในตอนนี้และจะทำให้เสร็จสมบูรณ์ในภายหลังในบทช่วยสอนเนื่องจากผู้ใช้ที่เราลงชื่อเข้าใช้ตอนนี้ไม่มีsudoสิทธิ์ใช้งาน กด " Enter" เพื่อข้ามขั้นตอนนี้

สุดท้ายสคริปต์ติดตั้งจะตรวจสอบการติดตั้งและคุณจะเห็นคำเตือนว่าโมดูลผู้โดยสารไม่ได้ระบุในการกำหนดค่า Apache

Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/httpd/conf/httpd.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.

ตอนนี้เราได้ติดตั้งโมดูลผู้โดยสารสำหรับ Apache ดำเนินการดาวน์โหลดและติดตั้ง Redmine

ติดตั้ง Redmine

ดาวน์โหลดรุ่นล่าสุดของ Redmine อย่างเป็นทางการจากหน้า Redmine ดาวน์โหลด

cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

แตกไฟล์เก็บถาวรและเปลี่ยนชื่อไดเร็กทอรีเพื่อความสะดวก

tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/

คัดลอกไฟล์คอนฟิกูเรชันตัวอย่างไปยังตำแหน่งที่ใช้งานจริง

cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml

เปิดไฟล์การกำหนดค่าฐานข้อมูลที่เราเพิ่งคัดลอกเพื่อป้อนรายละเอียดฐานข้อมูล

nano config/database.yml

โดยค่าเริ่มต้นไฟล์ฐานข้อมูลจะถูกกำหนดค่าสำหรับ MySQL ค้นหาการกำหนดค่าสำหรับการผลิตและการพัฒนาและทดสอบที่ใช้อะแดปเตอร์ MySQL ใส่เครื่องหมายบรรทัดทั้งหมดเหล่านี้

#production:
#  adapter: mysql2
#  database: redmine
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#development:
#  adapter: mysql2
#  database: redmine_development
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#test:
#  adapter: mysql2
#  database: redmine_test
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

อีกต่อไปค้นหาบรรทัดที่ถูกคอมเม้นต์โดยมีproductionการกำหนดค่าสำหรับpostgresqlอะแดปเตอร์ ยกเลิกหมายเหตุบรรทัดเหล่านั้นและอัพเดตชื่อฐานข้อมูลและข้อมูลรับรองผู้ใช้ ตรวจสอบให้แน่ใจว่าใช้การเยื้องที่ถูกต้องซึ่งเป็นช่องว่างสองช่อง

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "DBPassword"

กำหนดค่าแอปพลิเคชันเพื่อใช้การกำหนดค่า PostgreSQL

bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config

ติดตั้งการพึ่งพาแอปพลิเคชันที่แอปพลิเคชันต้องการ

bundle install --without development test

คุณจะเห็นข้อความต่อไปนี้ในตอนท้ายของการติดตั้ง

Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

คำสั่งต่อไปนี้สร้างโทเค็นลับที่ใช้ในการเข้ารหัสข้อมูลเซสชัน

bundle exec rake generate_secret_token

เขียนฐานข้อมูล PostgreSQL

RAILS_ENV=production bundle exec rake db:migrate

เรียกใช้คำสั่งต่อไปนี้ซึ่งเขียนข้อมูลเริ่มต้นลงในฐานข้อมูล PostgreSQL

RAILS_ENV=production bundle exec rake redmine:load_default_data

คำสั่งด้านบนจะขอให้คุณเลือกภาษาเริ่มต้นที่จะใช้กับแอปพลิเคชัน ตัวเลือกเริ่มต้นคือภาษาอังกฤษ เลือกตามความต้องการของคุณ

[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.

การติดตั้งแอปพลิเคชัน Redmine เสร็จสมบูรณ์แล้ว เปลี่ยนความเป็นเจ้าของและสิทธิ์ของไดเรกทอรีและไฟล์

mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

เราได้กำหนดค่าทุกสิ่งที่เราต้องการจากผู้ใช้ที่ไม่มีสิทธิพิเศษ สลับกลับไปยังผู้ใช้โดยการเรียกใช้sudosu - <username>

กำหนดค่า Apache

เพิ่มโมดูลผู้โดยสารสำหรับ Apache ลงในไฟล์กำหนดค่า Apache นี่จะโหลดโมดูลผู้โดยสารโดยอัตโนมัติ

echo "LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf

สร้างไฟล์โฮสต์เสมือนใหม่สำหรับแอปพลิเคชัน Redmine ของคุณ

sudo nano /etc/httpd/conf.d/redmine.conf

เติมไฟล์ด้วยเนื้อหาต่อไปนี้

<VirtualHost *:80>
    ServerName redmine.example.com

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
    PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
    PassengerUser redmine

    <Directory /home/redmine/redmine/public>
      Allow from all
      Options -MultiViews
      Require all granted
    </Directory>
</VirtualHost>

ตรวจสอบให้แน่ใจว่าได้แทนที่redmine.example.comด้วยชื่อโดเมนจริงของคุณ นอกจากนี้ตรวจสอบให้แน่ใจว่าเส้นทางไปยังPassengerRootและPassengerRubyถูกต้อง เส้นทางไปสู่ไบนารีอาจเปลี่ยนแปลงเมื่อมี Ruby หรือ Passenger รุ่นใหม่ ในการค้นหาพา ธ เหล่านี้ให้รันคำสั่งต่อไปนี้

sudo su redmine -c "passenger-config about ruby-command"

คุณจะได้รับผลลัพธ์ต่อไปนี้

[user@vultr ~]$ sudo su redmine -c "passenger-config about ruby-command"
passenger-config was invoked through the following Ruby interpreter:
  Command: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  Version: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
  To use in Apache: PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  To use in Nginx : passenger_ruby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  To use with Standalone: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/bin/passenger start

เมื่อสร้างไฟล์โฮสต์เสมือนให้รีสตาร์ทเว็บเซิร์ฟเวอร์ Apache

sudo systemctl restart httpd

ปรับเปลี่ยนการกำหนดค่าไฟร์วอลล์เพื่ออนุญาตพอร์ต80ผ่านไฟร์วอลล์

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload

ตอนนี้คุณสามารถเข้าถึงส่วนต่อประสาน Redmine ของคุณhttp://redmine.example.comได้แล้ว เข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่านadmin adminเมื่อลงชื่อเข้าใช้ครั้งแรก Redmine จะแจ้งให้คุณอัปเดตรหัสผ่าน

การรักษาความปลอดภัย Apache ด้วย Let's Encrypt SSL

เนื่องจากการติดตั้ง Redmine ของเราอยู่บนเซิร์ฟเวอร์สาธารณะดังนั้นเราขอแนะนำให้ใช้ SSL เพื่อความปลอดภัยในการแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์

ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA

sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl

ก่อนที่คุณจะสามารถขอใบรับรองคุณจะต้องอนุญาตพอร์ต80และ443หรือมาตรฐานHTTPและHTTPSบริการผ่านไฟร์วอลล์ เนื่องจากเราได้รับอนุญาตให้อยู่แล้วพอร์ตก่อนหน้านี้ขออนุญาตให้พอร์ต80443

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

หมายเหตุ: ในการรับใบรับรองจาก Let's Encrypt CA โดเมนที่จะสร้างใบรับรองนั้นจะต้องชี้ไปที่เซิร์ฟเวอร์ หากไม่มีให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง

สร้างใบรับรอง SSL

sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com

/etc/letsencrypt/live/redmine.example.com/ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน ใบรับรอง SSL จะถูกเก็บไว้เป็นและคีย์ส่วนตัวจะถูกเก็บไว้เป็นcert.pemprivkey.pem

ลองเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้ตั้งค่าการต่ออายุใบรับรองโดยอัตโนมัติโดยใช้งาน Cron

เปิดไฟล์งาน Cron สำหรับrootผู้ใช้

sudo crontab -e

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์

30 5 * * * /usr/bin/certbot renew --quiet

งาน Cron ด้านบนจะทำงานทุกวันเวลา 5.30 น. หากใบรับรองหมดอายุเนื่องจากหมดอายุใบรับรองนั้นจะถูกต่ออายุใหม่โดยอัตโนมัติ

แก้ไขไฟล์โฮสต์เสมือนที่เราสร้างไว้ก่อนหน้านี้สำหรับ Redmine

sudo nano /etc/httpd/conf.d/redmine.conf

แก้ไขไฟล์โฮสต์เสมือนเพื่อให้มีลักษณะดังต่อไปนี้

<VirtualHost *:80>
    Redirect permanent / https://www.example.com/
    ServerName redmine.example.com
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName redmine.example.com
    DocumentRoot "/home/redmine/redmine/public"
    <Directory "/home/redmine/redmine/public">
        Options None
        Require all granted
    </Directory>
    PassengerAppEnv production
    PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
    PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
    PassengerUser redmine
    PassengerHighPerformance on

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/redmine.example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/redmine.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem

    SSLProtocol             all -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    <IfModule headers_module>
        Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
    </IfModule>
</VirtualHost>

บันทึกไฟล์และออกจากตัวแก้ไข

รีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart httpd

ตอนนี้คุณสามารถเข้าถึง Redmine over HTTPSon https://redmine.example.comได้แล้ว

ขอแสดงความยินดีคุณติดตั้ง Redmine บนอินสแตนซ์ CentOS 7 ของคุณสำเร็จแล้ว เริ่มพัฒนาโครงการของคุณโดยสร้างหรือนำเข้าโครงการของคุณ



Leave a Comment

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

การติดตั้ง Pagekit CMS บน CentOS 7

การติดตั้ง Pagekit CMS บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า

วิธีการติดตั้ง TestLink บน CentOS 7

วิธีการติดตั้ง TestLink บน CentOS 7

TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ

วิธีการติดตั้ง GCC บน CentOS 6

วิธีการติดตั้ง GCC บน CentOS 6

CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น

วิธีการติดตั้ง Moodle บน CentOS 7

วิธีการติดตั้ง Moodle บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์

การติดตั้ง Netdata บน CentOS 7

การติดตั้ง Netdata บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง

ติดตั้ง dotProject บน CentOS 7

ติดตั้ง dotProject บน CentOS 7

แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ

ติดตั้ง TaskServer (taskd) บน CentOS 7

ติดตั้ง TaskServer (taskd) บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade

วิธีการติดตั้ง Kanboard บน CentOS 7

วิธีการติดตั้ง Kanboard บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true