tomedo-Statistik is a web-application that generates statistics from tomedo:
It is meant to be as a replacement for tomedo's build-in cockpit which lacks some features for us.
Attention: This app has to be installed by professionals on a linux server in your local network!
Install Ruby 2.5 and PostgreSQL 9.
You might chose a ruby version manager, like rvm, rbenv or chruby to select your desired ruby version. I'm using chruby.
Then clone this repository and cd
into it:
git clone git@github.com:bjoernalbers/tomedo-statistik.git
cd tomedo-statistik
Run bundle install
to install all required gems.
If you don't have bundler then you can install it with gem install bundler
.
On the tomedo server dump the production database into a file:
/Library/PostgreSQL/9.2/bin/pg_dump -U postgres -Fc -f /tmp/tomedo_live.fc tomedo_live
This might take 5 to 10 minutes depending on your database size. Then on your development machine copy the created file from the server (your hostname / ip address will be different!):
scp fredegar:/tmp/tomedo_live.fc .
Import the database on your development machine:
createdb tomedo_entwicklung
pg_restore -x -O -d tomedo_entwicklung db/tomedo_live.fc
Again this may take 5 to 10 minutes.
Then start the server with bin/rails s
.
Done.
IMPORTANT: The following steps describe how I had set up our production server and installed this app. If you plan to install it on your own server you will have to fork this repo and change the deployment settings, provide a new master key, update the credentials, etc.!
The production server should run an up-to-date version of openSUSE Tumbleweed. A virtual machine with 1 or 2 GB of RAM, 1 processor and 10 or 20 GB of hard disk space should be enough.
These are the steps to setup the production environment. The commands have to be run on the remote server.
Install Ruby 2.5 if not already present:
zypper in -y ruby2.5
Install bundler:
gem install bundler
I also had to symlink bundler's binaries because they weren't in my PATH
(your binary paths may vary depending on the ruby and bundler versions;
find out with gem which bundler
):
ln -s /usr/lib64/ruby/gems/2.5.0/gems/bundler-1.16.4/exe/bundle /usr/local/bin
ln -s /usr/lib64/ruby/gems/2.5.0/gems/bundler-1.16.4/exe/bundler /usr/local/bin
Install development packages so that you can compile native gem-extensions:
zypper in -y -t pattern devel_C_C++
Install PostgreSQL with development headers (required for the pg gem):
zypper in -y postgresql96 postgresql96-devel
# NOTE: Manually symlink `pg_config` because it doesn't exist after
# installing `postgresql96-devel`, possibly due to a bug.
ln -s /usr/lib/postgresql96/bin/pg_config /usr/local/bin/
Install further development dependencies in order to build gems:
zypper in -y ruby2.5-devel
zypper in -y libxml2-2 libxml2-devel # Required for nokogiri
zypper in -y libxslt-devel libxslt1 # Required for nokogiri
Install git:
zypper in -y git
Then change the firewall to allow connections to http and restart it:
firewall-cmd --permanent --add-service=http
systemctl restart firewalld.service
Then create the directories for deployment:
mkdir -p /data/tomedo-statistik/shared/config
The following steps have to be performed on your development machine!
Copy your public SSH-key form your development machine to the production
server, which can be done manually or via ssh-copy-id
(install via
mac homebrew).
I use ssh-copy-id
for that:
brew install ssh-copy-id
ssh-copy-id root@tomedo-statistik
And then on your development machine upload the master key to production:
scp config/master.key root@tomedo-statistik:/data/tomedo-statistik/shared/config
(NOTE: Only I have the master key because it shouldn't be in version control!)
After the setup you can deploy the code with...
bundle exec cap production deploy
Don't forget to push your changes to github before deployment!