Requirements:
-
Latest Java 1.8
-
A servlet container like GlassFish or Tomcat (8.x or later) also running with Java at least 1.8
-
Universal ctags (Exuberant ctags work too)
-
Python 3
tomcat root page: /usr/local/apache-tomcat-8.0/webapps/ROOT
{OpenGrok logo: /usr/local/apache-tomcat-8.0/webapps/source/default/img/icon.png
NOTE: those files owned by www:www
server.xml.patch: /usr/local/apache-tomcat-8.0/conf
OpenGrok.patch: /var/opengrok/bin
web.xml.patch: /var/opengrok/web/source/WEB-INF
index.jsp.patch: /usr/local/apache-tomcat-8.0/webapps/source
/var/opengrok/bin/OpenGrok index
The script should be run by root
user
yum -y update
yum -y group install "Development Tools"
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install python36u
yum -y install python36u-pip
pip3.6 install --upgrade pip
yum -y install java-1.8.0-openjdk-devel
yum -y install vim
yum -y install wget
wget http://mirror.csclub.uwaterloo.ca/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
mkdir /opt/tomcat
tar xvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
groupadd tomcat
useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
chgrp -R tomcat /opt/tomcat
cd /opt/tomcat
chmod -R g+r conf
chmod g+x conf
chown -R tomcat webapps/ work/ temp/ logs/
vim /etc/systemd/system/tomcat.service
:
Note the CATALINA_OPTS
option
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms256M -Xmx2048M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat
systemctl status tomcat
systemctl restart tomcat
Access default tomcat page: http://SERVER_IP_ADDRESS:8080
git clone https://github.com/universal-ctags/ctags
cd ctags
./autogen.sh
./configure
make
make install
ctags --version
cd /opt
wget https://github.com/oracle/opengrok/releases/download/1.2.1/opengrok-1.2.1.tar.gz
tar xvf opengrok-1.2.1.tar.gz
ln -s opengrok-1.2.1 opengrok
cd opengrok
mkdir -p etc src data
cd /opt/opengrok/src
git clone https://github.com/libuv/libuv
cd /opt/opengrok
python3.6 -m venv opengrok-tools
opengrok-tools/bin/python -m pip install tools/opengrok-tools.tar.gz
cd /opt/opengrok
# -c option should use absolute path
# it'll write into /opt/tomcat/webapps/source/WEB-INF/web.xml
opengrok-tools/bin/opengrok-deploy -c /opt/opengrok/etc/configuration.xml \
lib/source.war /opt/tomcat/webapps
opengrok-tools/bin/opengrok-indexer \
-J=-Djava.util.logging.config.file=/opt/opengrok/doc/logging.properties \
-a lib/opengrok.jar -- \
-s src -d data -H -P -S -G \
-W etc/configuration.xml -U http://localhost:8080/source
Refresh your web browser grok page, to see latest changes.
timedatectl set-timezone Asia/Shanghai
# Forward 80 to 8080, thus you don't have to change server.xml
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
# List NAT-PREROUTING rules
iptables -t nat -v -L PREROUTING -n --line-number
# Delete NAT-PREROUTING rule at index 1
iptables -t nat -D PREROUTING 1
NOTE: above solution is not recommended
Or alternatively, Install authbind on CentOS
rpm -Uvh https://s3.amazonaws.com/aaronsilber/public/authbind-2.1.1-0.1.x86_64.rpm
touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat /etc/authbind/byport/80
ls -l /etc/authbind/byport/80
vim /opt/tomcat/bin/startup.sh
:
Change from exec "$PRGDIR"/"$EXECUTABLE" start "$@"
to exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
vim /opt/tomcat/conf/server.xml
:
Change <Connector port="8080" ...
to <Connector port="80" ...
systemctl restart tomcat
Using {OpenGrok to boost up source code reading
How To Install Python 3 and Set Up a Local Programming Environment on CentOS 7
How To Install Java on CentOS and Fedora #Install OpenJDK 8
How To Install Apache Tomcat 8 on CentOS 7
universal-ctags Building with configure (*nix including GNU/Linux)
Install and Configure Tomcat 8 on Centos-7
Created 180414 Rev_no: 2