{"id":4506,"date":"2019-10-30T22:11:26","date_gmt":"2019-10-30T19:11:26","guid":{"rendered":"https:\/\/kifarunix.com\/?p=4506"},"modified":"2024-03-12T22:04:14","modified_gmt":"2024-03-12T19:04:14","slug":"install-redmine-on-centos-stream-8-9","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-redmine-on-centos-stream-8-9\/","title":{"rendered":"Install Redmine on CentOS Stream 8|CentOS Stream 9"},"content":{"rendered":"\n<p>This guide will take you through how to install&nbsp;<a href=\"https:\/\/www.redmine.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redmine<\/a>&nbsp;on CentOS Stream 8|CentOS Stream 9. Redmine is a cross-platform as well as cross-database flexible project management web application and we are using CentOS Stream 8|CentOS Stream 9 specifically on this blog post.<\/p>\n\n\n\n<p>Redmine has quite a number of features that are described on&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/Features\" target=\"_blank\" rel=\"noreferrer noopener\">Redmine features page<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#installing-redmine-on-cent-os-stream\">Installing Redmine on CentOS Stream<\/a><ul><li><a href=\"#create-redmine-system-user\">Create Redmine System User<\/a><\/li><li><a href=\"#install-apache-http-server\">Install Apache HTTP Server<\/a><\/li><li><a href=\"#install-maria-db-database-backend\">Install MariaDB Database Backend<\/a><\/li><li><a href=\"#create-redmine-database-and-database-user\">Create Redmine Database and Database User<\/a><\/li><li><a href=\"#installing-redmine-on-cent-os\">Installing Redmine on CentOS<\/a><ul><li><a href=\"#install-required-dependencies\">Install Required Dependencies<\/a><\/li><li><a href=\"#install-ruby-on-cent-os-stream-8-cent-os-stream-9\">Install Ruby on CentOS Stream 8|CentOS Stream 9<\/a><\/li><li><a href=\"#download-and-install-redmine\">Download and Install Redmine<\/a><\/li><li><a href=\"#configure-redmine-database-connection-settings\">Configure Redmine Database Connection Settings<\/a><\/li><li><a href=\"#install-ruby-dependencies\">Install Ruby Dependencies<\/a><\/li><li><a href=\"#generate-secret-session-token\">Generate Secret Session Token<\/a><\/li><li><a href=\"#create-database-schema-objects\">Create Database Schema Objects<\/a><\/li><li><a href=\"#configure-file-system-permissions\">Configure FileSystem Permissions<\/a><\/li><\/ul><\/li><li><a href=\"#testing-redmine-installation\">Testing Redmine Installation<\/a><\/li><li><a href=\"#configure-apache-for-redmine\">Configure Apache for Redmine<\/a><ul><li><a href=\"#install-apache-passenger-module-on-cent-os-stream-8\">Install Apache Passenger Module on CentOS Stream 8<\/a><\/li><li><a href=\"#install-apache-passenger-module-on-cent-os-stream-9\">Install Apache Passenger Module on CentOS Stream 9<\/a><\/li><\/ul><\/li><li><a href=\"#access-redmine-from-browser\">Access Redmine from Browser<\/a><\/li><li><a href=\"#reference\">Reference<\/a><\/li><li><a href=\"#other-cent-os-guides\">Other CentOS Guides<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installing-redmine-on-cent-os-stream\">Installing Redmine on CentOS Stream<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-redmine-system-user\">Create Redmine System User<\/h3>\n\n\n\n<p>In this guide, we will install Redmine on&nbsp;<code>\/opt\/redmine<\/code>&nbsp;directory and run it as non-privileged redmine system user.<\/p>\n\n\n\n<p>As such, create a redmine system user&nbsp;<strong>(or any other non-privileged system user that Redmine will run as for that case)<\/strong>&nbsp;and assign the&nbsp;<code>\/opt\/redmine<\/code>&nbsp;as its home directory.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">useradd -r -m -d \/opt\/redmine redmine<\/pre>\n\n\n\n<p>Consult&nbsp;<code><strong>man useradd<\/strong><\/code>&nbsp;to learn what the options used above means.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-apache-http-server\">Install Apache HTTP Server<\/h3>\n\n\n\n<p>To install Apache HTTP server on CentOS Stream 8|CentOS Stream 9, simply execute;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dnf install httpd<\/pre>\n\n\n\n<p>Start and enable Apache HTTP server to run on system boot;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl enable httpd --now<\/pre>\n\n\n\n<p>Next, since we will be using Apache as our HTTP server, add Apache to Redmine group.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">usermod -aG redmine apache<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-maria-db-database-backend\">Install MariaDB Database Backend<\/h3>\n\n\n\n<p>Redmine supports a number of database back-ends such as PostgreSQL, MySQL\/MariaDB, MSSQL. In this demo, we are using MariaDB 10.x.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install mariadb-server<\/code><\/pre>\n\n\n\n<p>run the command below to start and enable MariaDB server on system boot;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now mariadb<\/code><\/pre>\n\n\n\n<p>Run initial MariaDB database secure script to remove default databases, test tables, disable remote root login;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql_secure_installation<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-redmine-database-and-database-user\">Create Redmine Database and Database User<\/h3>\n\n\n\n<p>Once the database backend is installed, login and create the database and database user for Redmine. Replace the database name accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mysql -u root -p<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">create database <strong>redminedb<\/strong>;<\/pre>\n\n\n\n<p>Create and grant the user all privileges on the database created.&nbsp;<strong>Replace the database user and password accordingly<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">grant all on <strong>redminedb.*<\/strong> to <strong>redmineadmin@localhost<\/strong> identified by 'P@ssWorD';<\/pre>\n\n\n\n<p>Reload privileges tables and quit.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">flush privileges;\nquit<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installing-redmine-on-cent-os\">Installing Redmine on CentOS<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-required-dependencies\">Install Required Dependencies<\/h4>\n\n\n\n<p>Begin by installing the dependencies required to build Redmine.<\/p>\n\n\n\n<p>Enable required repos;<\/p>\n\n\n\n<p>CentOS Stream 8;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install epel-release<\/code><\/pre>\n\n\n\n<p>CentOS Stream 9;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install epel-release<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf config-manager --enable crb<\/code><\/pre>\n\n\n\n<p>Enable Ruby 3.1 modules on CentOS stream 8. This is enabled by default on CentOS stream 9 (confirm with the command, <code>yum module list ruby<\/code>).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf module reset ruby -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf module enable ruby:3.1<\/code><\/pre>\n\n\n\n<p>Next, install required packages\/dependencies.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>dnf install ruby-devel \\\n\trpm-build \\\n\twget \\\n\tlibxml2-devel \\\n\tvim \\\n\tmake \\\n\topenssl-devel \\\n\tautomake \\\n\tlibtool \\\n\tImageMagick \\\n\tImageMagick-devel \\\n\tmariadb-devel \\\n\tgcc \\\n\thttpd-devel \\\n\tlibcurl-devel \\\n\tgcc-c++ -y\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-ruby-on-cent-os-stream-8-cent-os-stream-9\">Install Ruby on CentOS Stream 8|CentOS Stream 9<\/h4>\n\n\n\n<p>Redmine also requires Ruby interpreter which is installed automatically with the dependencies above.<\/p>\n\n\n\n<p>Verify installed version.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ruby -v<\/pre>\n\n\n\n<p>Sample output on CentOS stream 8.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) &#91;x86_64-linux]<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/RedmineInstall#Ruby-interpreter\" target=\"_blank\" rel=\"noreferrer noopener\">Redmine version 5.1 supports&nbsp;upto Ruby 3.1<\/a>&nbsp;as of this post update!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"download-and-install-redmine\">Download and Install Redmine<\/h4>\n\n\n\n<p>In order to install the latest version of Redmine, navigate to the&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/Download\" target=\"_blank\">Download\u2019s page<\/a>&nbsp;and grab the latest stable release version.<\/p>\n\n\n\n<p>You can simply download and extract the Redmine tarball to the Redmine install directory,&nbsp;<code>\/opt\/redmine<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VER=5.1.0<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s https:\/\/www.redmine.org\/releases\/redmine-$VER.tar.gz | \\\nsudo -u redmine tar xz -C \/opt\/redmine\/ --strip-components=1<\/code><\/pre>\n\n\n\n<p>You should now have redmine files under&nbsp;<strong>\/opt\/redmine<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ls -alh \/opt\/redmine<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>total 188K\ndrwx------. 17 redmine redmine 4.0K Nov 13 06:30 .\ndrwxr-xr-x.  3 root    root      21 Nov 13 05:32 ..\ndrwxr-xr-x.  8 redmine redmine   97 Oct 31 00:50 app\n-rw-r--r--.  1 redmine redmine  863 Oct 31 00:50 appveyor.yml\n-rw-r--r--.  1 redmine redmine   18 Jul 19 00:00 .bash_logout\n-rw-r--r--.  1 redmine redmine  144 Jul 19 00:00 .bash_profile\n-rw-r--r--.  1 redmine redmine  522 Jul 19 00:00 .bashrc\ndrwxr-xr-x.  2 redmine redmine   78 Oct 31 00:50 bin\ndrwxr-xr-x.  5 redmine redmine 4.0K Oct 31 00:50 config\n-rw-r--r--.  1 redmine redmine  129 Oct 31 00:50 config.ru\n-rw-r--r--.  1 redmine redmine  538 Oct 31 00:50 CONTRIBUTING.md\ndrwxr-xr-x.  3 redmine redmine   21 Oct 31 00:50 db\ndrwxr-xr-x.  2 redmine redmine  113 Oct 31 00:50 doc\ndrwxr-xr-x.  5 redmine redmine   58 Oct 31 00:50 extra\ndrwxr-xr-x.  2 redmine redmine   23 Oct 31 00:50 files\n-rw-r--r--.  1 redmine redmine 3.5K Oct 31 00:50 Gemfile\ndrwxr-xr-x.  2 redmine redmine   38 Oct 31 00:50 .github\n-rw-r--r--.  1 redmine redmine  823 Oct 31 00:50 .gitignore\n-rw-r--r--.  1 redmine redmine  694 Oct 31 00:50 .hgignore\ndrwxr-xr-x.  6 redmine redmine   85 Oct 31 00:50 lib\ndrwxr-xr-x.  2 redmine redmine   23 Oct 31 00:50 log\n-rw-r--r--.  1 redmine redmine   81 Oct 31 00:50 package.json\ndrwxr-xr-x.  2 redmine redmine   20 Oct 31 00:50 plugins\ndrwxr-xr-x.  8 redmine redmine 4.0K Oct 31 00:50 public\n-rwxr-xr-x.  1 redmine redmine  275 Oct 31 00:50 Rakefile\n-rw-r--r--.  1 redmine redmine  205 Oct 31 00:50 README.rdoc\n-rw-r--r--.  1 redmine redmine  56K Oct 31 00:50 .rubocop_todo.yml\n-rw-r--r--.  1 redmine redmine 5.3K Oct 31 00:50 .rubocop.yml\n-rw-r--r--.  1 redmine redmine   42 Oct 31 00:50 .stylelintignore\n-rw-r--r--.  1 redmine redmine 1009 Oct 31 00:50 .stylelintrc\ndrwxr-xr-x. 15 redmine redmine 4.0K Oct 31 00:50 test\ndrwxr-xr-x.  8 redmine redmine   95 Oct 31 00:50 tmp\ndrwxr-xr-x.  2 redmine redmine    6 Oct 31 00:50 vendor\n-rw-r--r--.  1 redmine redmine  51K Oct 31 00:50 yarn.lock\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"configure-redmine-database-connection-settings\">Configure Redmine Database Connection Settings<\/h4>\n\n\n\n<p>First switch to Redmine\u2019s user account.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">su - redmine<\/pre>\n\n\n\n<p>Rename the sample Redmine configuration.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cp config\/configuration.yml{.example,}<\/pre>\n\n\n\n<p>Rename the sample dispatch CGI configuration file under the public folder as shown below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cp public\/dispatch.fcgi{.example,}<\/pre>\n\n\n\n<p>Rename the sample the database configuration file.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cp config\/database.yml{.example,}<\/pre>\n\n\n\n<p>Next, open the database configure file for editing and and configure it to set the Redmine database connection details.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vim config\/database.yml<\/pre>\n\n\n\n<p><strong>Replace the database name, database user and the password accordingly.<\/strong><\/p>\n\n\n\n<pre class=\"scroll-box\"><code>...\nproduction:\n  adapter: mysql2\n  database: redminedb\n  host: localhost\n  username: redmineadmin\n  password: \"P@ssWorD\"\n  # Use \"utf8\" instead of \"utfmb4\" for MySQL prior to 5.7.7\n  encoding: utf8mb4\n...\n<\/code><\/pre>\n\n\n\n<p>Save and exit the file.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-ruby-dependencies\">Install Ruby Dependencies<\/h4>\n\n\n\n<p>Next, install required Ruby dependencies. Note that this step should be executed as Redmine user created above. If you are still logged in as Redmine user, proceed. Otherwise, switch to redmine user.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">su - redmine<\/pre>\n\n\n\n<p>Install Bundler for managing gem dependencies.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gem install bundler<\/code><\/pre>\n\n\n\n<p>Once the bundler installation is done, you can now install required gems dependencies.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bundle config set --local path 'vendor\/bundle'<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">bundle config set --local without 'development test'<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">bundle install<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"generate-secret-session-token\">Generate Secret Session Token<\/h4>\n\n\n\n<p>To prevent tempering of the cookies that stores session data, you need to generate a random secret key that Rails uses to encode them.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bundle exec rake generate_secret_token<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-database-schema-objects\">Create Database Schema Objects<\/h4>\n\n\n\n<p>Create Rails database structure by running the command below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">RAILS_ENV=production bundle exec rake db:migrate<\/pre>\n\n\n\n<p>Once the database migration is done, insert default configuration data (optional) into the database by executing;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"configure-file-system-permissions\">Configure FileSystem Permissions<\/h4>\n\n\n\n<p>Ensure that the following directories are available on Redmine directory,&nbsp;<strong>\/opt\/redmine.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>tmp and tmp\/pdf<\/li>\n\n\n\n<li>public and public\/plugin_assets<\/li>\n\n\n\n<li>log<\/li>\n\n\n\n<li>files<\/li>\n<\/ul>\n\n\n\n<p>If they do not exist, simply create them and ensure that they are owned by the user used to run Redmine.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">for i in tmp tmp\/pdf public\/plugin_assets; do [ -d $i ] || mkdir -p $i; done<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">chown -R redmine:redmine files log tmp public\/plugin_assets<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">chmod -R 755 \/opt\/redmine\/<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testing-redmine-installation\">Testing Redmine Installation<\/h3>\n\n\n\n<p>The setup of Redmine on CentOS Stream 8|CentOS Stream 9 is now done. You can test Redmine using WEBrick by executing the command below;<\/p>\n\n\n\n<p>You can now test Redmine using WEBrick by executing the command below;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - redmine<\/code><\/pre>\n\n\n\n<p>Add webrick to Gemfile;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'gem \"webrick\"' &gt;&gt; Gemfile<\/code><\/pre>\n\n\n\n<p>Install webrick gem and test the installation;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bundle install<\/code><\/pre>\n\n\n\n<pre id=\"block-cb556ad3-ebd1-450d-9c96-b5d3925e5d51\" class=\"wp-block-code\"><code>bundle exec rails server -u webrick -e production<\/code><\/pre>\n\n\n\n<p>Sample output;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>=> Booting WEBrick\n=> Rails 6.1.7.6 application starting in production http:\/\/0.0.0.0:3000\n=> Run `bin\/rails server --help` for more startup options\n[2023-11-13 15:31:55] INFO  WEBrick 1.8.1\n[2023-11-13 15:31:55] INFO  ruby 3.1.2 (2022-04-12) [x86_64-linux]\n[2023-11-13 15:31:55] INFO  WEBrick::HTTPServer#start: pid=25649 port=3000\n<\/code><\/pre>\n\n\n\n<p>You can now access Redmine via the browser using the address,&nbsp;<code><strong>http:\/\/Server-IP:3000\/<\/strong><\/code>.<\/p>\n\n\n\n<p>Before that, open port 3000\/tcp on firewalld. Run the commands below as privileged user.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">firewall-cmd --add-port=3000\/tcp --permanent\nfirewall-cmd --reload<\/pre>\n\n\n\n<p>Once the port is opened, navigate to the browser and access Redmine. You should see a welcome page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1901\" height=\"280\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-webrick.png\" alt=\"\" class=\"wp-image-10012\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-webrick.png?v=1628626525 1901w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-webrick-768x113.png?v=1628626525 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-webrick-1536x226.png?v=1628626525 1536w\" sizes=\"(max-width: 1901px) 100vw, 1901px\" \/><\/figure>\n\n\n\n<p>Click&nbsp;<strong>sign in<\/strong>&nbsp;at the top right corner and use the credentials:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>User<\/strong>:&nbsp;<code>admin<\/code><\/li>\n\n\n\n<li><strong>Password:<\/strong>&nbsp;<code>admin<\/code><\/li>\n<\/ul>\n\n\n\n<p>To stop Redmine foreground run, just press CTRL+C.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-apache-for-redmine\">Configure Apache for Redmine<\/h3>\n\n\n\n<p>Once you have confirmed that Redmine is working fine after the testing, you need to configure Apache HTTP server for Redmine.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-apache-passenger-module-on-cent-os-stream-8\">Install Apache Passenger Module on CentOS Stream 8<\/h4>\n\n\n\n<p>Phusion Passenger is a web application server that can be used to server Redmine on production environments.<\/p>\n\n\n\n<p>Therefore, switch to Redmine user created above to install the Phusion Passenger Apache module;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - redmine<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>gem install passenger --no-document<\/code><\/pre>\n\n\n\n<p>Next, install Passenger Apache module. Replace the version of the Passenger accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>passenger-install-apache2-module<\/code><\/pre>\n\n\n\n<p>Follow through the installation guide to install Phusion Passenger.  You maybe prompted to reinstall Passenger through the RPMs. However, press Enter to continue using this installer anyway.<\/p>\n\n\n\n<p>Similarly, when prompted to choose a language, select Ruby and press Enter.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>Welcome to the Phusion Passenger Apache 2 module installer, v6.0.18.\n\nThis installer will guide you through the entire installation process. It\nshouldn't take more than 3 minutes in total.\n\nHere's what you can expect from the installation process:\n\n 1. The Apache 2 module will be installed for you.\n 2. You'll learn how to configure Apache.\n 3. You'll learn how to deploy a Ruby on Rails application.\n\nDon't worry if anything goes wrong. This installer will advise you on how to\nsolve any problems.\n\nPress Enter to continue, or Ctrl-C to abort.\n\n\n--------------------------------------------\n\nInstallation through RPMs recommended\n\nIt looks like you are on a Red Hat or CentOS operating system, with SELinux\nenabled. SELinux is a security mechanism for which special Passenger-specific\nconfiguration is required. We supply this configuration as part of\nour Passenger RPMs.\n\nHowever, Passenger is currently installed through gem or tarball and does not\ninclude any SELinux configuration. Therefore, we recommend that you:\n\n 1. Uninstall your current Passenger install.\n 2. Reinstall Passenger through the RPMs that we provide:\n    https:\/\/www.phusionpassenger.com\/library\/install\/apache\/yum_repo\/\n\nWhat would you like to do?\n\nPress Ctrl-C to exit this installer so that you can install RPMs (recommended)\n  -OR-\nPress Enter to continue using this installer anyway\n\n\n--------------------------------------------\n\nWhich languages are you interested in?\n\nUse <space> to select.\nIf the menu doesn't display correctly, press '!'\n\n \u2023 \u2b22  Ruby\n   \u2b21  Python\n   \u2b21  Node.js\n   \u2b21  Meteor\n\n--------------------------------------------\n\nChecking for required software...\n\n * Checking for C compiler...\n      Found: yes\n      Location: \/usr\/bin\/cc\n * Checking for C++ compiler...\n      Found: yes\n      Location: \/usr\/bin\/c++\n * Checking for Curl development headers with SSL support...\n      Found: yes\n      curl-config location: \/usr\/bin\/curl-config\n      Header location: \/usr\/include\/curl\/curl.h\n      Version: libcurl 7.61.1\n      Usable: yes\n      Supports SSL: yes\n * Checking for Zlib development headers...\n      Found: yes\n      Location: \/usr\/include\/zlib.h\n * Checking for Apache 2...\n      Found: yes\n      Location of httpd: \/usr\/sbin\/httpd\n      Apache version: 2.4.37\n * Checking for Rake (associated with \/usr\/bin\/ruby)...\n      Found: yes\n      Location: \/usr\/bin\/ruby \/opt\/redmine\/bin\/rake\n * Checking for OpenSSL support for Ruby...\n      Found: yes\n * Checking for RubyGems...\n      Found: yes\n * Checking for Ruby development headers...\n      Found: yes\n      Location: \/usr\/include\/ruby.h\n * Checking for rack...\n      Found: yes\n * Checking for OpenSSL development headers...\n      Found: yes\n      Location: \/usr\/include\/openssl\/ssl.h\n * Checking for Apache 2 development headers...\n      Found: yes\n      Location of apxs2: \/usr\/bin\/apxs\n * Checking for Apache Portable Runtime (APR) development headers...\n      Found: yes\n      Location: \/usr\/bin\/apr-1-config\n      Version: 1.6.3\n * Checking for Apache Portable Runtime Utility (APU) development headers...\n      Found: yes\n      Location: \/usr\/bin\/apu-1-config\n      Version: 1.6.1\n\n--------------------------------------------\n\nChecking whether there are multiple Apache installations...\nOnly a single installation detected. This is good.\n\n--------------------------------------------\nCompiling and installing Apache 2 module...\n<\/code><\/pre>\n\n\n\n<p>You could as well install Phusion Passenger from the RPM repos but I hit a snag with ruby-libs!!<\/p>\n\n\n\n<p>Once the module compilation is done, you are provided with how configure the module on Apache,<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>...\nAlmost there!\n\nPlease edit your Apache configuration file, and add these lines:\n\n   LoadModule passenger_module \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\/buildout\/apache2\/mod_passenger.so\n   <IfModule mod_passenger.c>\n     PassengerRoot \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\n     PassengerDefaultRuby \/usr\/bin\/ruby\n   <\/IfModule>\n\nAfter you restart Apache, you are ready to deploy any number of web\napplications on Apache, with a minimum amount of configuration!\n\nPress ENTER when you are done editing.\n\n<\/code><\/pre>\n\n\n\n<p>Before you can press Enter to complete the Module installation and setup, open a new login session as privileged user and create\/update the Redmine Apache configuration file.<\/p>\n\n\n\n<p>Create Apache virtual host configuration for Redmine with the following content and configure it to load the passenger modules. Replace the Server Name accordingly and ensure it is resolvable if using domain name. You can as well change the default port if you want.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/etc\/httpd\/conf.d\/redmine.conf<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>Listen 3000\n<strong>LoadModule passenger_module \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\/buildout\/apache2\/mod_passenger.so\n&lt;IfModule mod_passenger.c>\n  PassengerRoot \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\n  PassengerDefaultRuby \/usr\/bin\/ruby\n&lt;\/IfModule><\/strong>\n&lt;VirtualHost *:3000>\n    ServerName redmine.kifarunix-demo.com\n    DocumentRoot \"\/opt\/redmine\/public\" \n\n    CustomLog logs\/redmine_access.log combined\n    ErrorLog logs\/redmine_error_log\n    LogLevel warn\n\n    &lt;Directory \"\/opt\/redmine\/public\">\n        Options Indexes ExecCGI FollowSymLinks\n        Require all granted\n        AllowOverride all\n    &lt;\/Directory>\n&lt;\/VirtualHost>\n<\/code><\/pre>\n\n\n\n<p>Verify Apache configuration syntax.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">httpd -t<\/pre>\n\n\n\n<pre id=\"block-c82f069c-4bd4-4419-8840-134b3dac1631\" class=\"wp-block-preformatted\">Syntax OK<\/pre>\n\n\n\n<p>Once the installation and setup of Apache Passenger module is complete, restart Apache<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart httpd<\/pre>\n\n\n\n<p>Press ENTER on the Passenger module installation shell to validate the configurations.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>Press ENTER when you are done editing.\n\n\n--------------------------------------------\n\nValidating installation...\n\n * Checking whether this Passenger install is in PATH... (!)\n\n   Please add \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\/bin to PATH.\n   Otherwise you will get \"command not found\" errors upon running\n   any Passenger commands.\n   \n   Learn more at about PATH at:\n   \n     https:\/\/www.phusionpassenger.com\/library\/indepth\/environment_variables.html#the-path-environment-variable\n\n * Checking whether there are no other Passenger installations... (!)\n\n   You are currently validating against Phusion Passenger(R) 6.0.18, located in:\n   \n     \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18\/bin\/passenger\n   \n   Besides this Passenger installation, the following other\n   Passenger installations have also been detected:\n   \n     \/opt\/redmine\/bin\/passenger\n   \n   Please uninstall these other Passenger installations to avoid\n   confusion or conflicts.\n\n * Checking whether Apache is installed... \u2713\n * Checking whether the Passenger module is correctly configured in Apache... \u2713\n\nDetected 0 error(s), 2 warning(s).\nPress ENTER to continue.\n\n\n--------------------------------------------\n\nDeploying a web application\n\nTo learn how to deploy a web app on Passenger, please follow the deployment\nguide:\n\n  https:\/\/www.phusionpassenger.com\/library\/deploy\/apache\/deploy\/\n\nEnjoy Phusion Passenger, a product of Phusion\u00ae (www.phusion.nl) :-)\nhttps:\/\/www.phusionpassenger.com\n\nPassenger\u00ae is a registered trademark of Phusion Holding B.V.\n<\/code><\/pre>\n\n\n\n<p>Check if anything is listening on Port 3000.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ss -altnp<\/pre>\n\n\n\n<p>That is awesome.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-apache-passenger-module-on-cent-os-stream-9\">Install Apache Passenger Module on CentOS Stream 9<\/h4>\n\n\n\n<p>Phusion Passenger is a web application server that can be used to server Redmine on production environments.<\/p>\n\n\n\n<p>Install the passenger repo;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl --fail -sSLo \\\n\/etc\/yum.repos.d\/passenger.repo \\\nhttps:&#47;&#47;oss-binaries.phusionpassenger.com\/yum\/definitions\/el-passenger.repo<\/code><\/pre>\n\n\n\n<p>Install the module;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y mod_passenger<\/code><\/pre>\n\n\n\n<p>When installed, it should be enabled by default.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>httpd -M | grep passenger<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>passenger_module (shared)<\/code><\/pre>\n\n\n\n<p>Create Apache virtual host configuration for Redmine with the following content. Replace the server name accordingly. You can as well change the default port if you want.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>cat &gt; \/etc\/httpd\/conf.d\/redmine.conf &lt;&lt; 'EOL'\nListen 3000\n&lt;VirtualHost *:3000&gt;\n    ServerName redmine.kifarunix-demo.com\n    DocumentRoot \"\/opt\/redmine\/public\" \n\n    CustomLog logs\/redmine_access.log combined\n    ErrorLog logs\/redmine_error_log\n    LogLevel warn\n\n    &lt;Directory \"\/opt\/redmine\/public\"&gt;\n        Options Indexes ExecCGI FollowSymLinks\n        Require all granted\n        AllowOverride all\n    &lt;\/Directory&gt;\n&lt;\/VirtualHost&gt;\nEOL\n<\/code><\/pre>\n\n\n\n<p>Verify Apache configuration syntax.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>httpd -t<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Syntax OK<\/code><\/pre>\n\n\n\n<p>Once the installation and setup of Apache Passenger module is complete, restart Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart httpd<\/code><\/pre>\n\n\n\n<p>Check if anything is listening on Port 3000.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lsof -i :3000<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>COMMAND   PID   USER   FD   TYPE DEVICE SIZE\/OFF NODE NAME\nhttpd   28283   root    6u  IPv6  74009      0t0  TCP *:hbci (LISTEN)\nhttpd   28323 apache    6u  IPv6  74009      0t0  TCP *:hbci (LISTEN)\nhttpd   28325 apache    6u  IPv6  74009      0t0  TCP *:hbci (LISTEN)\nhttpd   28326 apache    6u  IPv6  74009      0t0  TCP *:hbci (LISTEN)\n<\/code><\/pre>\n\n\n\n<p>That is awesome.<\/p>\n\n\n\n<p>If&nbsp;<strong><code>lsof<\/code><\/strong>&nbsp;command is not installed, install it as follows;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install lsof -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"access-redmine-from-browser\">Access Redmine from Browser<\/h3>\n\n\n\n<p>Since we have already opened port 3000\/tcp on firewallD, you should be able to access Redmine web interface now.<\/p>\n\n\n\n<p>Replace the&nbsp;<strong>server-IP-or-Hostname<\/strong>&nbsp;accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">http:\/\/server-IP-or-Hostname:3000<\/pre>\n\n\n\n<p>Ensure the port is opened on the firewall.<\/p>\n\n\n\n<p>Default login credentials given above.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1393\" height=\"480\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/redmine-login-page.png?v=1699822853\" alt=\"Install Redmine on Linux\" class=\"wp-image-19226\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/redmine-login-page.png?v=1699822853 1393w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/redmine-login-page-768x265.png?v=1699822853 768w\" sizes=\"(max-width: 1393px) 100vw, 1393px\" \/><\/figure>\n\n\n\n<p>If you get the error below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code><strong>We're sorry, but something went wrong.\nThe issue has been logged for investigation. Please try again later.<\/strong><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"922\" height=\"588\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/phusion-selinux-3.png\" alt=\"\" class=\"wp-image-10019\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/phusion-selinux-3.png?v=1628627357 922w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/phusion-selinux-3-768x490.png?v=1628627357 768w\" sizes=\"(max-width: 922px) 100vw, 922px\" \/><\/figure>\n\n\n\n<p>You may also come across such errors in Apache logs;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/log\/httpd\/error_log<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>[ pid=20914 ] **************** LOOK ABOVE FOR CRASH DETAILS ****************\n[ W 2023-11-13 08:45:56.7052 20325\/T4 age\/Wat\/AgentWatcher.cpp:94 ]: Passenger core (pid=20914) crashed with signal SIGABRT, restarting it...\n[ N 2023-11-13 08:45:56.7285 21003\/T1 age\/Cor\/CoreMain.cpp:1340 ]: Starting Passenger core...\n[ N 2023-11-13 08:45:56.7287 21003\/T1 age\/Cor\/CoreMain.cpp:256 ]: Passenger core running in multi-application mode.\n[ W 2023-11-13 08:45:56.7352 21003\/T1 age\/Cor\/CoreMain.cpp:1007 ]: WARNING: potential privilege escalation vulnerability detected. Phusion Passenger(R) is running as root, and part(s) of the Passenger root path (\/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18) can be changed by non-root user(s):\n\n - \/opt\/redmine\/.local\/share\/gem\/ruby\/gems\/passenger-6.0.18 is not secure: it can be modified by user redmine\n - \/opt\/redmine\/.local\/share\/gem\/ruby\/gems is not secure: it can be modified by user redmine\n - \/opt\/redmine\/.local\/share\/gem\/ruby is not secure: it can be modified by user redmine\n - \/opt\/redmine\/.local\/share\/gem is not secure: it can be modified by user redmine\n - \/opt\/redmine\/.local\/share is not secure: it can be modified by user redmine\n - \/opt\/redmine\/.local is not secure: it can be modified by user redmine\n - \/opt\/redmine is not secure: it can be modified by user redmine\n\nPlease either fix up the permissions for the insecure paths, or install Passenger in a different location that can only be modified by root.\n[ N 2023-11-13 08:45:56.7352 21003\/T1 age\/Cor\/CoreMain.cpp:1015 ]: Passenger core online, PID 21003\n[ N 2023-11-13 08:45:58.7776 21003\/T4 age\/Cor\/SecurityUpdateChecker.h:519 ]: Security update check: no update found (next check in 24 hours)\n\n<\/code><\/pre>\n\n\n\n<p>You need to sort your SELinux permissions.<\/p>\n\n\n\n<p>Phusion Passenger when not installed from the repositories does not come with SELinux&nbsp;policy modules and thus may not work well with SELinux enabled.<\/p>\n\n\n\n<p>To make this simple, just disable SELinux and reboot your system and then access Redmine again on browser.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>setenforce 0<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sed -i 's\/=enforcing\/=disabled\/' \/etc\/selinux\/config<\/code><\/pre>\n\n\n\n<p>Otherwise if you want to keep SELinux running, generate a custom SELinux module for Phusion Passenger for any denied entry in&nbsp;<code>\/var\/log\/audit\/audit.log<\/code>&nbsp;and install it. For example;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dnf install policycoreutils-python-utils<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -i denied \/var\/log\/audit\/audit.log | grep -iE \"Passenger|httpd\" | audit2allow -a -M passenger<\/pre>\n\n\n\n<p>This command generated a policy package that can be installed by running;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">semodule -i passenger.pp<\/pre>\n\n\n\n<p>With SELinux issues fixed, login to Redmine using admin for both user and password.<\/p>\n\n\n\n<p>You are prompted to reset the password. Do reset and proceed to login to Redmine web interface.<\/p>\n\n\n\n<p>After login, reset the password and proceed to setup your Redmine profile on CentOS Stream 8|CentOS Stream 9.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1882\" height=\"816\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-dashboard-2.png\" alt=\"\" class=\"wp-image-10022\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-dashboard-2.png?v=1628627521 1882w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-dashboard-2-768x333.png?v=1628627521 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/redmine-dashboard-2-1536x666.png?v=1628627521 1536w\" sizes=\"(max-width: 1882px) 100vw, 1882px\" \/><\/figure>\n\n\n\n<p>Once your profile is setup, you can jump to new project.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1902\" height=\"695\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/project.png\" alt=\"\" class=\"wp-image-10020\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/project.png?v=1628627416 1902w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/project-768x281.png?v=1628627416 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/08\/project-1536x561.png?v=1628627416 1536w\" sizes=\"(max-width: 1902px) 100vw, 1902px\" \/><\/figure>\n\n\n\n<p>That marks the end of our guide on how to install Redmine on CentOS Stream 8|CentOS Stream 9. You can now explore this awesome tool.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"reference\">Reference<\/h3>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\"Redmine Install (opens in a new tab)\" href=\"http:\/\/www.redmine.org\/projects\/redmine\/wiki\/RedmineInstall\" target=\"_blank\">Redmine Install<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"other-cent-os-guides\">Other CentOS Guides<\/h3>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-robo-3t-mongodb-gui-tool-on-centos-8\/\" target=\"_blank\">Install Robo 3T MongoDB GUI Tool on CentOS 8<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-mongodb-community-edition-on-centos-8\/\" target=\"_blank\">Install MongoDB Community Edition on CentOS 8<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-and-setup-freeipa-server-on-centos-8\/\" target=\"_blank\">Install and Setup FreeIPA Server on CentOS 8<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-lemp-stack-on-centos-8\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Install LEMP Stack on CentOS 8<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide will take you through how to install&nbsp;Redmine&nbsp;on CentOS Stream 8|CentOS Stream 9. Redmine is a cross-platform as well as cross-database flexible project management<\/p>\n","protected":false},"author":1,"featured_media":10031,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,1170,1171],"tags":[1173,1174,1024,1172,1175],"class_list":["post-4506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-project-management","category-redmine","tag-apache-phusion-passenger","tag-install-redmine-centos-8","tag-mariadb-10-4","tag-redmine","tag-redmine-selinux","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/4506"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=4506"}],"version-history":[{"count":11,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/4506\/revisions"}],"predecessor-version":[{"id":21213,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/4506\/revisions\/21213"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/10031"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=4506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=4506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=4506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}