Memasang LAMP Stack, Tomcat 9 & MySQL 5.7 di Ubuntu 18.04 AWS cloud
Assalamualaikum wbt,
Saya berkongsi kaedah atau cara untuk memasang perisian tomcat 9, pangkalan data MySQL 5.7 dan juga LAMP Stack (Php,MySQL) serta PhpMyadmin. Ini adalah keperluan pembangunan aplikasi mengguna java,jsp dan php. Pemasangan ini dibuat di cloud vm (ubuntu 18.01) AWS dan saya beranggapan anda telah membuat akses ke cloud aws dan menggunakan instance vm.
Langkah A : Memasang LAMP Stack
1.Pasang Apache web server
sudo apt update sudo apt upgrade sudo apt install apache2 2.Kemaskini firewall to allow Apache web server
sudo ufw app list sudo ufw app info "Apache Full" sudo ufw allow in "Apache Full" ok siap.boleh cuba akses ke localhost 3. Memcuba akses localhost Apache Web server Ok, jika ingin memastikan pemasangan web server berjaya atau tidak.Anda boleh akses dengan memasukkan public ip address cloud http://xx.xx.xx.xx
Langkah B : Memasang MySQL
sudo apt install mysql-server ** semakan status mysql selepas pemasangan
sudo systemctl status mysql untuk makluman pemasangan menggunakan arahan di atas ada tak selamat kerana akses user root adalah kosong (blank). Jadi kita perlu buat sedikit kemaskini agar ia lebih secured. sudo mysql_secure_installation ** apabila ditanya VALIDATE PASSWORD PLUGIN, anda pilih 'N' & masukkan password.
Langkah C : Tingkatkan Tahap Keselamatan MySQL
Dalam keadaan 'default',autentikasi root menggunakan auth_socket plugin (MySQL 5.7) dan
bagi peningkatan tahap keselamatan serta memudahkan pemasangan PhpMyAdmin adalah disarakan agar menukar ke
mysql_native_password.
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user; **ia akan dipaparkan spt ini:
Jadi kita perlu menukarkan kepada autentikasi mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxx';
FLUSH PRIVILEGES;
SELECT user,authentication_string,plugin,host FROM mysql.user;Langkah D : Memasang PHP
sudo apt install php libapache2-mod-php php-mysql untuk menguji pemasangan berjaya ke tidak,sila buat satu files php
$ sudo vi /var/www/html/info.php salin ini.
<?php phpinfo(); ?>
sudo systemctl restart apache2 seterus test http://IP-address/info.phpJika paparan di atas , ia menunjukkan pemasangan telah berjaya. dan cuba Ctrl F - 'MysqlLI', jika ada ia menunjukkan php telah boleh berhubung dengan database mysql. Langkah E : Memasang PhpMyAdmin Phpmyadmin adalah web yang mengakses ke mysql server untuk memudahkan pengguna mengakses pangkalan data dan membuat transaksi. sudo apt update && upgrade sudo apt install phpmyadmin php-mbstring php-gettext sudo phpenmod mbstring systemctl restart apache2 ** untuk memastikan anda berjaya membuat pemasangan,anda boleh akses ke http://ip/phpmyadmin
Langkah F : Memasang Tomcat 9 sudo apt update sudo apt install default-jdk sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz -P /tmp sudo tar xf /tmp/apache-tomcat-9*.tar.gz -C /opt/tomcat sudo ln -s /opt/tomcat/apache-tomcat-9.0.56 /opt/tomcat/latest sudo chown -RH tomcat: /opt/tomcat/latest sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh' sudo vi /etc/systemd/system/tomcat.service edit files ini :
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
sudo systemctl enable tomcat
sudo ufw allow 8080/tcp
configure web management access
sudo vi /opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
Comments
-->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
manager app
sudo vi/opt/tomcat/latest/webapps/manager/META-INF/context.xml
Host manager app
sudo vi/opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
sudo systemctl restart tomcat
dan tidak lupa bagi akses kepada user tomcat . Jika akses tidak diberikan,anda tidak boleh
memasukkan files di dalam folders di dalam tomcat web server.
chgrp -R tomcat /opt/tomcat/latest
sudo chown -R tomcat /opt/tomcat/latest
sudo chmod -R 755 /opt/tomcat/latest
sudo chown -R ubuntu /opt/tomcat/latest
**user aws default untuk 'ubuntu'
ok,untuk pastikan pemasangan berjaya atau tidak,anda boleh akses
http://<your_domain_or_IP_address>:8080
**8080 adalah default port tomcat, port no boleh diubah di files /conf/server.xml
Yes. berjaya
Langkah G : Memasang MySQL JDBC Connector
Untuk menghubungkan program yang ditulis di dalam bahasa java atau jsp, perlu ada library jdbc digunakan.Oleh kerana kita menggunakan
tomcat 9,maka versi mysql jdbc yang serasi adalah versi 8. Anda boleh download di
https://dev.mysql.com/downloads/connector/j/
sila ambil platform independance.
selepas download dan extrakkan files tersebut dan pastikan ada fail *.jar
mysql-connector-java-8.0.27.jar
files ini perlu diletakkan di dalam folder apache /lib dan cuba webapps/apps-name/WEB-INF/lib
jika files ini di download dari workstation anda,anda perlu transfer files ini ke remote vm cloud mengguna ftp
/opt/tomcat/apache-tomcat-9.0.56/lib
/opt/tomcat/apache-tomcat-9.0.56/webapps/app-name/WEB-INF/lib
**jika pemindahan files mysql-connector-java-8.0.27.jar telah berjaya, anda boleh membuat pengujian simple connection ke mysql menggunakan
kod program jsp.
mysqlconn.jsp
<%@ page import=”java.sql.*” %>
<%@ page import=”java.io.*” %>
<html>
<head>
<title>Connection with mysql database</title>
</head>
<body>
<h1>Connection status </h1>
<%
try {
/* Create string of connection url within specified format with machine name,
port number and database name. Here machine name id localhost and
database name is usermaster. */
String connectionURL = “jdbc:mysql://localhost:3306/dbname”;
// declare a connection by using Connection interface
Connection connection = null;
// Load JBBC driver “com.mysql.jdbc.Driver”
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
/* Create a connection by using getConnection() method that takes parameters of
string type connection url, user name and password to connect to database. */
connection = DriverManager.getConnection(connectionURL, “root”, “qwerty”);
// check weather connection is established or not by isClosed() method
if(!connection.isClosed())
%>
<font size=”+3″ color=”green”></b>
<%
out.println(“Successfully connected to ” + “MySQL server using TCP/IP…”);
connection.close();
}
catch(Exception ex){
%>
</font>
<font size=”+3″ color=”red”></b>
<%
out.println(“Unable to connect to database.”);
}
%>
</font>
</body>
</html>
**perhatian: jika program ini dilarikan di windows nampak tiada masalah cuma jika di run di persekitaran linux akan ada isu ‘unable to connect…db’. Jadi anda perlu mengubahsuaikan url connection seperti ini.
String connectionURL = “jdbc:mysql://localhost:3306/dbname?autoReconnect=true&useSSL=false“;
autoReconnect=true&useSSL=false
Jika ada mendapati ada mesej
Table doesn’t exist.
walapun connection ke mysql db berjaya,tetapi table tidak wujud . Semakan di phmyadmin pun telah menunjukkan table tersebut sememangnya wujud. Ia berpunca daripada kod sumber kita memanggil nama table dalam huruf besar. Jadi by default,mysql 5.7 memahami request nama table huruf kecil sahaja. Jika huruf besar, ia akan memaparkan error sepeti di atas. Jadi. setting di my.cnf perlu disetkan lower_case_table_names=1
agar database dapat memahami jika ada request dari application menggunakan table name huruf besar.
/etc/mysql/my.cnf, (mesti di tambah di bawah [mysqld])
[mysqld]
lower_case_table_names=1
& save
sudo systemctl restart tomcat
sudo service apache2 restart
sudo service mysql restart sudo service mysql restart
selesai.
Kini anda persekitaran telah ready untuk pembangunan.
SELAMAT MENCUBA!!!!
Recent Comments