วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
Redmine เป็นเครื่องมือการจัดการโครงการบนเว็บฟรีและโอเพนซอร์ส มันเขียนใน Ruby on Rails และสนับสนุนเซิร์ฟเวอร์ฐานข้อมูลหลายตัวสำหรับการจัดเก็บฐานข้อมูล มันเป็นแอพพลิเคชั่นที่มีคุณสมบัติหลากหลายซึ่งสนับสนุนหลายโครงการ, ACL ตามบทบาทและระบบติดตามปัญหา นอกจากนี้ยังมีแผนภูมิแกนต์และการสนับสนุนปฏิทินการจัดการไฟล์ต่อโครงการวิกิและฟอรัมรวมถึงคุณสมบัติอื่น ๆ อีกมากมาย รองรับระบบควบคุมเวอร์ชันเช่น Git, SVN หรือ CVS นอกจากนี้ยังมีหลายภาษารองรับได้มากถึง 49 ภาษา
คู่มือนี้เขียนขึ้นสำหรับ Redmine 3.4.4 แต่อาจใช้กับเวอร์ชันที่ใหม่กว่าได้เช่นกัน
สำหรับบทช่วยสอนนี้เราจะใช้192.168.1.1
เป็นที่อยู่ IP สาธารณะและredmine.example.com
เป็นชื่อโดเมนที่ชี้ไปยังอินสแตนซ์ Vultr โปรดตรวจสอบให้แน่ใจว่าได้แทนที่ชื่อโดเมนและที่อยู่ IP ตัวอย่างทั้งหมดด้วยชื่อจริง
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้งการอ้างอิงต่อ
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
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
ขอแนะนำให้ใช้ผู้ใช้ที่ไม่มีสิทธิพิเศษเพื่อเรียกใช้แอปพลิเคชันเพื่อป้องกันไม่ให้ระบบหยุดทำงาน สร้างผู้ใช้ใหม่สำหรับ 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 ดาวน์โหลด
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
เราได้กำหนดค่าทุกสิ่งที่เราต้องการจากผู้ใช้ที่ไม่มีสิทธิพิเศษ สลับกลับไปยังผู้ใช้โดยการเรียกใช้sudo
su - <username>
เพิ่มโมดูลผู้โดยสารสำหรับ 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 จะแจ้งให้คุณอัปเดตรหัสผ่าน
เนื่องจากการติดตั้ง Redmine ของเราอยู่บนเซิร์ฟเวอร์สาธารณะดังนั้นเราขอแนะนำให้ใช้ SSL เพื่อความปลอดภัยในการแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์
ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA
sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl
ก่อนที่คุณจะสามารถขอใบรับรองคุณจะต้องอนุญาตพอร์ต80
และ443
หรือมาตรฐานHTTP
และHTTPS
บริการผ่านไฟร์วอลล์ เนื่องจากเราได้รับอนุญาตให้อยู่แล้วพอร์ตก่อนหน้านี้ขออนุญาตให้พอร์ต80
443
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.pem
privkey.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 HTTPS
on https://redmine.example.com
ได้แล้ว
ขอแสดงความยินดีคุณติดตั้ง Redmine บนอินสแตนซ์ CentOS 7 ของคุณสำเร็จแล้ว เริ่มพัฒนาโครงการของคุณโดยสร้างหรือนำเข้าโครงการของคุณ
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า
TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน
FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ
CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม
ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น
ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย
ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์
Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o
Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์
ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:
Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ
ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง
แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ
ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก
ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade
ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม
บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou
GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ
ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์
เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true