Project 01
——————————-
1. DB Server Configuration
——————————-
yum install mariadb-server -y
systemctl enable mariadb
systemctl start mariadbConfigure Database
mysql -e "
CREATE DATABASE studentapp;
USE studentapp;
CREATE TABLE Students (
student_id INT NOT NULL AUTO_INCREMENT,
student_name VARCHAR(100) NOT NULL,
student_addr VARCHAR(100) NOT NULL,
student_age VARCHAR(3) NOT NULL,
student_qual VARCHAR(20) NOT NULL,
student_percent VARCHAR(10) NOT NULL,
student_year_passed VARCHAR(10) NOT NULL,
PRIMARY KEY (student_id)
);
GRANT ALL PRIVILEGES ON studentapp.* TO 'student'@'%' IDENTIFIED BY 'student@1';
FLUSH PRIVILEGES;
"——————————-
2. Tomcat (Application Server)
——————————-
yum install java -y
cd /root
wget -qO- http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.27/bin/apache-tomcat-8.5.27.tar.gz | tar -xz
cd apache-tomcat-8.5.27
rm -rf webapps/*
wget https://github.com/cit-latex/stack/raw/master/mysql-connector-java-5.1.40.jar -O lib/mysql-connector-java-5.1.40.jar
wget https://github.com/cit-latex/stack/raw/master/student.war -O webapps/student.warEdit context.xml (replace accordingly)
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="student" password="student@1" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://172.17.0.2:3306/studentapp"/>
</Context>Start Tomcat
sh bin/startup.sh
## -------------------------------
### 3. Web Server (Apache HTTPD)
## -------------------------------
```sh
yum install httpd httpd-devel gcc -y
cd /root
wget -qO- http://www-eu.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz | tar -xz
cd tomcat-connectors-1.2.42-src/native
./configure --with-apxs=/usr/bin/apxs
make
make install
## Configure worker.properties (replace <IP-ADDRESS-OF-TOMCAT-SERVER> accordingly)
cat << EOF > /etc/httpd/conf.d/worker.properties
worker.list=tomcatA
worker.tomcatA.type=ajp13
worker.tomcatA.host=<IP-ADDRESS-OF-TOMCAT-SERVER>
worker.tomcatA.port=8009
EOF
### Configure mod_jk.conf
cat << EOF > /etc/httpd/conf.d/mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf.d/worker.properties
JkMount /student tomcatA
JkMount /student/* tomcatA
EOF
### Enable and start HTTPD
systemctl enable httpd
systemctl start httpd3 tier App in conatiners using docker compose
Create necessary directory
mkdir -p docker-app && cd docker-appCreate context.xml
cat << EOF > context.xml
<Context>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="student" password="student@1"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://mariadb:3306/studentapp"/>
</Context>
EOFDownload mysql connector
wget https://github.com/cit-latex/stack/raw/master/mysql-connector-java-5.1.40.jar -O mysql-connector-java-5.1.40.jarDownload student.war
wget https://github.com/cit-latex/stack/raw/master/student.war -O student.warCreate worker.properties
cat << EOF > worker.properties
worker.list=tomcatA
worker.tomcatA.type=ajp13
worker.tomcatA.host=tomcat
worker.tomcatA.port=8009
EOFCreate mod_jk.conf
cat << EOF > mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf.d/worker.properties
JkMount /student tomcatA
JkMount /student/* tomcatA
EOFCreate docker-compose.yml
cat << EOF > docker-compose.yml
version: '3.8'
services:
mariadb:
image: mariadb:10.5
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: studentapp
MYSQL_USER: student
MYSQL_PASSWORD: student@1
networks:
- app-network
volumes:
- mariadb_data:/var/lib/mysql
tomcat:
image: tomcat:8.5
container_name: tomcat
depends_on:
- mariadb
ports:
- "8080:8080"
volumes:
- ./context.xml:/usr/local/tomcat/conf/context.xml
- ./mysql-connector-java-5.1.40.jar:/usr/local/tomcat/lib/mysql-connector-java-5.1.40.jar
- ./student.war:/usr/local/tomcat/webapps/student.war
networks:
- app-network
httpd:
image: httpd:2.4
container_name: httpd
depends_on:
- tomcat
ports:
- "80:80"
volumes:
- ./worker.properties:/etc/httpd/conf.d/worker.properties:ro
- ./mod_jk.conf:/etc/httpd/conf.d/mod_jk.conf:ro
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mariadb_data:
EOFRun the setup
docker-compose up -d
Show running containers
docker ps