Ponimin's avatar
Ponimin committed
# Sistem Pengumpul Terjadwal dan Aplikasi Dashboard untuk Data Berita dan Twitter
Sistem Pengumpul Terjadwal untuk Data Berita merupakan Sistem *Web Scraper* untuk mengumpulkan data berita dan twitter secara otomatis. 
Aplikasi Dashboard dengan nama *Twitta Dashboard* Merupakan aplikasi untuk menampilkan hasil analisis terhadap data berita dan twitter yang telah dikumpulkan oleh Sistem *Web Scraper*

## Instruksi Menginstall Aplikasi

Instruksi berikut ini menjelaskan bagaimana cara memasangkan sistem dan aplikasi.

### Prasyarat Server
---

Server yang digunakan merupakan *virtual machine* dengan alokasi dan spesifikasi sebagai berikut:
* **Sistem Operasi** : Linux Ubuntu 18.04 LTS Bionic Weaver
* **Processor** : Intel Core i3 4005U 1.8 Ghz 2 core
* **Kapasitas RAM** : 2.8 GB

#### 1. Python

* Python versi 3 keatas. Install dan Cek versi Python yang tersedia menggunakan perintah sebagai berikut
```bash
sudo apt install -y python-dev python-pip gcc python3-venv
python3 --version 
```
Untuk installasi silahkan merujuk pada *website* resmi Python www.python.org
* PyPI atau PIP (*Python Package Installer*) versi 20 keatas. Kalau masih dibawah versi 20, silahkan pasang versi terbaru dengan perintah sebagai berikut
```bash
pip install --upgrade pip
```
* Membuat dan menjalankan *virtual environment* dengan perintah sebagai berikut :
```bash
python3 -m venv namaterserah 
source namaterserah/bin/activate
```
* Menginstall Bermacam - macam *framework* Python yang diperlukan. Tersedia pada *file* requirements.text 
```bash
pip install -r requirements.text
```

#### 2. NodeJS
NodeJS merupakan *Platform* yang memungkinan menjalankan JavaScript baik pada sisi *client* maupun *server* secara *asynchronous*
* Install NodeJS versi 10 keatas dengan perintah sebagai berikut :
```bash
sudo apt install nodejs
```
* Cek versi NodeJS yang telah diinstall dengan kode perintah 
```bash 
node --version
```

#### 3. Nginx
Nginx digunakan sebagai *web server* penghubung antara dunia luar / internet dengan layanan - layanan yang ada di *server*. Lakukan installasi dan jalankan dengan perintah :

```bash
sudo apt install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
```

#### 4. MySQL
MySQL digunakan sebagai *database* dan DBMS untuk menyimpan dan mengelola data berita dan twitter serta analisisnya. Lakukan installasi dan konfigurasi dengan perintah : 
* Installasi
```bash
sudo apt install mysql-server
sudo mysql-secure-installation
sudo service mysql start
```
* Kemudian masuk ke MySQL server untuk melakukan konfigurasi *database*
```bash
mysql -u root -p
```
* Membuat *user account*. Dalam hal ini pengembang menggunakan username 'ponimin' pada domain 'localhost' dengan *password* 1234 dengan kode perintah sebagai berikut:
```bash
mysql> create user 'ponimin'@'localhost' identified by '1234';
mysql> grant privileges on * . * to 'ponimin'@'localhost';
```
* Setelah membuat *user account*, buat *database* dengan nama `skripsi_db` kemudian *import* isi tabel dari file `skripsi_db.sql` dengan kode lengkap sebagai berikut
```bash
mysql> create database skripsi_db; use skripsi_db;
mysql> source /path/ke/direktori/twitta-scraper_dashboard/skripsi_db.sql
```
Tunggu beberapa saat sampai proses *import* selesai.  

Setelah Nginx terinstall, lakukan konfigurasi sehingga koneksi yang masuk langsung diteruskan ke NodeJS dengan *default port 8080*. Konfigurasi Nginx dapat diubah di `/etc/nginx/nginx.conf` dengan mengubah bagian lokasi sebagai berikut :

![Gambar Konfigurasi Nginx](tangkapan_layar/konf_nginx.jpg)

### Installasi

1. Salin Semua File dari Repository Git dengan perintah 
```bash
git clone https://git.stis.ac.id/phoenix351/twitta-scraper_dashboard.git
cd twitta-scraper_dashboard/
```
2. Pastikkan prasyarat server telah terpenuhi semua
3. Jalankan REST API dengan kode sebagai berikut :
```bash
gunicorn --bind 127.0.0.1:5000 wsgi:app
```
**Note** : Pastikkan REST API berjalan pada 127.0.0.1 atau localhost supaya tidak diakses dari luar (demi keamanan). Yang bisa mengakses hanya aplikasi dashboard.
Pastikkan menghasilkan *output* seperti ini :
![Gambar output Gunicorn](tangkapan_layar/gunicorn.jpg)

4. Jalankan Aplikasi Dashboard Berita dan Twitter dengan kode perintah sebagai berikut:
```bash
node index.js
```
Pastikkan menghasilkan *output* seperti berikut :
![Gambar output Start Node](tangkapan_layar/node_start.jpg)




Say what the step will be

```
Give the example
```


### Prasyarat Client
Untuk mengakses Twitta Dashboard dibutuhkan perangkat yang bisa mengakses *browser*.
* **Browser Rekomendasi** : Chrome versi 80 keatas.   


And repeat

```
until finished
```

End with an example of getting some data out of the system or using it for a little demo

## Running the tests

Explain how to run the automated tests for this system

### Break down into end to end tests

Explain what these tests test and why

```
Give an example
```

### And coding style tests

Explain what these tests test and why

```
Give an example
```

## Deployment

Add additional notes about how to deploy this on a live system

## Built With

* [Dropwizard](http://www.dropwizard.io/1.0.2/docs/) - The web framework used
* [Maven](https://maven.apache.org/) - Dependency Management
* [ROME](https://rometools.github.io/rome/) - Used to generate RSS Feeds

## Contributing

Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Billie Thompson** - *Initial work* - [PurpleBooth](https://github.com/PurpleBooth)

See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project.

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
* Inspiration
* etc