When deploying WildFly 8.0.0.Final on Ubuntu servers, manually starting the server via SSH isn't production-ready. The current approach lacks:
- Automatic restart on system reboot
- Proper process management
- Standardized logging
- Clean startup/shutdown procedures
Ubuntu 12.04 LTS uses Upstart, but we'll create a modern systemd-compatible service for forward compatibility. Create this file:
sudo nano /etc/systemd/system/wildfly.service
Add the following configuration:
[Unit]
Description=WildFly Application Server
After=syslog.target network.target
[Service]
Type=simple
User=wildfly
Group=wildfly
ExecStart=/opt/wildfly/bin/standalone.sh -b=0.0.0.0 -bmanagement=0.0.0.0
ExecStop=/opt/wildfly/bin/jboss-cli.sh --connect command=:shutdown
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
# Create dedicated user
sudo useradd -r -s /bin/false wildfly
# Set permissions
sudo chown -R wildfly:wildfly /opt/wildfly
# Reload systemd
sudo systemctl daemon-reload
# Enable auto-start
sudo systemctl enable wildfly
# Start service
sudo systemctl start wildfly
Check service status:
sudo systemctl status wildfly
View logs:
sudo journalctl -u wildfly -f
For production environments, consider adding these parameters to standalone.sh:
-Dorg.jboss.as.logging.per-deployment=false
-server
-Xms512m -Xmx1024m
-XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
If WildFly fails to start:
- Verify Java installation:
java -version
- Check ports:
netstat -tulnp | grep java
- Review permissions:
ls -la /opt/wildfly
When you manually run WildFly 8.0.0.Final through SSH using standalone.sh
, you're missing several critical production features:
# Current manual startup
cd /opt/wildfly-8.0.0.Final/bin
nohup standalone.sh -b=0.0.0.0 -bmanagement=0.0.0.0 > /dev/null &
# Current manual shutdown (problematic)
kill $(pgrep -f wildfly) # This may kill wrong processes
WildFly provides native integration scripts in its bin/init.d
directory. Here's the professional approach:
Step 1: Prepare Environment
sudo mkdir -p /etc/wildfly
sudo cp /opt/wildfly-8.0.0.Final/bin/init.d/wildfly-init-debian.sh /etc/init.d/wildfly
sudo chmod +x /etc/init.d/wildfly
Step 2: Create Configuration File
sudo nano /etc/default/wildfly.conf
Add these configurations:
# WildFly configuration
JBOSS_HOME="/opt/wildfly-8.0.0.Final"
JBOSS_USER=wildfly
JBOSS_MODE=standalone
JBOSS_CONFIG=standalone.xml
JBOSS_BIND=0.0.0.0
JBOSS_BIND_MANAGEMENT=0.0.0.0
sudo adduser --system --group --no-create-home --disabled-login wildfly
sudo chown -R wildfly:wildfly /opt/wildfly-8.0.0.Final
For Ubuntu 12.04, we'll use Upstart instead of systemd. Create:
sudo nano /etc/init/wildfly.conf
With this content:
description "WildFly Application Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
limit nofile 4096 4096
setuid wildfly
setgid wildfly
exec /opt/wildfly-8.0.0.Final/bin/standalone.sh \
-b $JBOSS_BIND \
-bmanagement $JBOSS_BIND_MANAGEMENT \
-c $JBOSS_CONFIG
# Start service
sudo service wildfly start
# Stop service
sudo service wildfly stop
# Check status
sudo service wildfly status
# Enable automatic startup
sudo update-rc.d wildfly defaults
If the service fails to start, check:
# View logs
tail -f /opt/wildfly-8.0.0.Final/standalone/log/server.log
# Verify port binding
netstat -tulnp | grep java
For production environments, consider adding these JVM options in standalone.conf
:
JAVA_OPTS="-Xms1G -Xmx2G -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M"
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman"