Instalasi di GAE - MappingSystem/Tutorial-Buka-Toko GitHub Wiki
Sesi ini kita akan kupas tentang cara mempersiapkan Instalasi Saleor di GAE
Setelah kita selesai membuat Aplikasi di PC maka kita bisa pasang via Source Code dan juga via Build Image baik secara Manual via Gcloud maupun secara Otomatis via Cloud Build.
Pemasangan via Source Code di GAE akan mengikuti kaidah Django dimana berdasarkan tutorial app.yaml
bisa pakai gunicorn
- Masukkan code
entrypoint: gunicorn -b :$PORT saleor.wsgi
kedalam fileapp.yaml
- Tambahkan baris dengan code
gunicorn==19.7.1
kedalam filerequirements.txt
- Saleor butuh memory lebih dari 128MB. Minimum instance_class: F2/B2
env: standard
service: product
runtime: python37
entrypoint: gunicorn -b :$PORT saleor.wsgi
instance_class: F2
automatic_scaling:
max_instances: 1
env_variables:
SECRET_KEY: [DJANGO_SECRET_KEY]
ALLOWED_HOSTS: product-dot-chetabahana.appspot.com,www.chetabahana.com
DATABASE_URL: postgresql://saleor:[email protected]/saleor
DEFAULT_CURRENCY: Rp
DEFAULT_COUNTRY: INDONESIA
CREATE_IMAGES_ON_DEMAND: False
handlers:
- url: /static
static_dir: static/
- url: /.*
script: auto
$ gcloud app deploy --version=v1-4
Setelan app.yaml
lihat:
- Gen - Config
- Runtimes - Custom
- Environment - Flexible'
- Resources - Three Simple Steps
- Resources - f1-micro Bursting
- Env Variables - Django’s Secret key setting
-
Env Variables - PostgreSQL Users: ubah default
saleor
: user/password, dan database
docker run -d gcr.io/chetabahana/saleor
CONTAINER_ID=$(docker ps -alq)
docker cp $CONTAINER_ID:/app .
docker stop $CONTAINER_ID
cd app
rm -rf Pipfile
rm -rf Pipfile.lock
cat 'gunicorn==19.7.1' > requirements.txt
gcloud app deploy --version=v1-4
$ gcloud sql connect instance-postgres --user=saleor
saleor >\q
$ gcloud sql instances describe instance-postgres
backendType: SECOND_GEN
connectionName: chetabahana:us-central1:instance-postgres
databaseVersion: POSTGRES_9_6
etag: 326a754445644907a9c2fc3954599c801ffbdd802bab1fadcefadcc5ad3045ce
gceZone: us-central1-c
instanceType: CLOUD_SQL_INSTANCE
ipAddresses:
- ipAddress: 10.59.224.3
type: PRIVATE
kind: sql#instance
name: instance-postgres
project: chetabahana
region: us-central1
selfLink: https://www.googleapis.com/sql/v1beta4/projects/chetabahana/instances/
instance-postgres
serverCaCert:
cert: |-
-----BEGIN CERTIFICATE-----
...
...
-----END CERTIFICATE-----
certSerialNumber: '0'
commonName: C=US,O=Google\, Inc,CN=Google Cloud SQL Server CA
createTime: '2019-02-25T18:07:19.716000+00:00'
expirationTime: '2029-02-22T18:08:19.716000+00:00'
instance: instance-postgres
kind: sql#sslCert
sha1Fingerprint: c1eb9bca950838b0fa8474211f80d5f2142866c9
serviceAccountEmailAddress: [email protected]
.gserviceaccount.com
settings:
activationPolicy: NEVER
availabilityType: ZONAL
backupConfiguration:
binaryLogEnabled: false
enabled: true
kind: sql#backupConfiguration
replicationLogArchivingEnabled: false
startTime: 23:00
dataDiskSizeGb: '10'
dataDiskType: PD_SSD
ipConfiguration:
ipv4Enabled: false
privateNetwork: projects/chetabahana/global/networks/default
kind: sql#settings
locationPreference:
kind: sql#locationPreference
zone: us-central1-c
maintenanceWindow:
day: 0
hour: 0
kind: sql#maintenanceWindow
pricingPlan: PER_USE
replicationType: SYNCHRONOUS
settingsVersion: '14'
storageAutoResize: true
storageAutoResizeLimit: '0'
tier: db-custom-1-3840
userLabels:
component: database
state: RUNNABLE
127.0.0.1:5243
, copy dan isikan nilai connectionName
di atas ke app.yaml
sbb:
beta_settings:
cloud_sql_instances: chetabahana:us-central1:instance-postgres=tcp:5432
Privat/Publik IP
$ gcloud sql connect instance-postgres
Whitelisting your IP for incoming connection for 5 minutes...done.
ERROR: (gcloud.sql.connect) It seems your client does not have ipv6 connectivity and the database instance does not have an ipv4 address. Please request an ipv4 address for this database instance.
sql connect at time 2019-02-26 10:42:41.811213+00:00
Simpan perubahan dan ulang koneksi
~$ gcloud sql connect instance-postgres
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [postgres].Password for user postgres:
psql (9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.
postgres=> \q
~$ gcloud sql connect instance-postgres --user=saleor
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [saleor].Password for user saleor:
psql: FATAL: database "saleor" does not exist
get https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy
./cloud_sql_proxy -instances="chetabahana:us-central1:instance-postgres"=tcp:5432
virtualenv env
source env/bin/activate
pip install -r requirements.txt
psql "host=127.0.0.1 sslmode=disable user=saleor dbname=saleor"
Lihat install-and-use-postgresql
(.venv) ~/MYAPP$ sudo apt-get update
(.venv) ~/MYAPP$ sudo apt-get install postgresql postgresql-contrib
********************************************************************************
You are running apt-get inside of Cloud Shell. Note that your Cloud Shell
machine is ephemeral and no system-wide change will persist beyond session end.
You can customize your environment to permanently include this package by
updating your environment at https://cloud.google.com/console/cloudshell/environment/view.
********************************************************************************
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
postgresql-doc
The following NEW packages will be installed:
postgresql postgresql-contrib
0 upgraded, 2 newly installed, 0 to remove and 13 not upgraded.
Need to get 112 kB of archives.
After this operation, 123 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 postgresql all 9.6+181+deb9u2 [55.8 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 postgresql-contrib all 9.6+181+deb9u2 [55.8 kB]
Fetched 112 kB in 0s (5,494 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package postgresql.
(Reading database ... 46505 files and directories currently installed.)
Preparing to unpack .../postgresql_9.6+181+deb9u2_all.deb ...
Unpacking postgresql (9.6+181+deb9u2) ...
Selecting previously unselected package postgresql-contrib.
Preparing to unpack .../postgresql-contrib_9.6+181+deb9u2_all.deb ...
Unpacking postgresql-contrib (9.6+181+deb9u2) ...
Setting up postgresql-contrib (9.6+181+deb9u2) ...
Setting up postgresql (9.6+181+deb9u2) ...
~/MYAPP$ psql --version
psql (PostgreSQL) 9.6.10
(.venv) ~/MYAPP$ gcloud sql connect myinstance --user=saleor
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [saleor].Password for user saleor:
psql (9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.
saleor=> ^C
(.venv) ~/MYAPP$
(.venv) ~/MYAPP$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
(.venv) ~/MYAPP$ chmod +x cloud_sql_proxy
(.venv) ~/MYAPP$ ./cloud_sql_proxy -instances=marketstore:us-central1:myinstance=tcp:5432
2019/02/16 06:59:03 Rlimits for file descriptors set to {&{8500 1048576}}
2019/02/16 06:59:04 Listening on 127.0.0.1:5432 for marketstore:us-central1:myinstance
2019/02/16 06:59:04 Ready for new connections
~$ psql "host=127.0.0.1 port=5432 sslmode=disable dbname=saleor user=saleor"
Password:
psql (9.6.10)
Type "help" for help.
saleor=> ^D
~$ cd MYAPP && source .venv/bin/activate
(.venv) ~/MYAPP$ export SECRET_KEY='PUT_SOME_BIG_AND_COMPLICATED_SECRET_KEY'
(.venv) ~/MYAPP$ python manage.py makemigrations
Migrations for 'page':
saleor/page/migrations/0006_auto_20190215_1817.py
- Alter field is_published on page
Migrations for 'product':
saleor/product/migrations/0088_auto_20190215_1817.py
- Alter field is_published on collection
(.venv) ~/MYAPP$ python manage.py migrate
Operations to perform:
Apply all migrations: account, auth, checkout, contenttypes, discount, django_celery_results, django_prices_openexchangerates, django_prices_vatlayer, impersonate, menu, order, page, payment, product, sessions, shipping, site, sites, social_django
Running migrations:
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
...
...
Applying shipping.0014_auto_20180920_0956... OK
Applying site.0019_sitesettings_default_weight_unit... OK
Applying social_django.0001_initial... OK
Applying social_django.0002_add_related_name... OK
Applying social_django.0003_alter_email_max_length... OK
Applying social_django.0004_auto_20160423_0400... OK
Applying social_django.0005_auto_20160727_2333... OK
Applying social_django.0006_partial... OK
Applying social_django.0007_code_timestamp... OK
Applying social_django.0008_partial_timestamp... OK
Lihat Debugging an Instance (Hanya bekerja pada type GAE Flexible).
$ gcloud app instances enable-debug
Choosing [product] for service.
Choosing [v1-1] for version.
Choosing [product/v1-1/aef-product-v1--1-85rr] for instance.
About to enable debug mode for instance
[product/v1-1/aef-product-v1--1-85rr].
Do you want to continue (Y/n)? y
Waiting for operation [apps/chetabahana/operations/599b6731-9413-4c64-8226-79d8
d3c581a9] to complete...done.
Enabling debug mode for instance [product/v1-1/aef-product-v1--1-85rr]...done.
Setelah semua OK kembalikan ke normal
$ gcloud app instances disable-debug
Akses SSH di Halaman Instance, pilih servisnya.
chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba72d25928cd gcr.io/chetabahana/saleor "uwsgi --ini /app/sa…" 5 hours ago Up 5 hours 8000/tcp, 172.17.0.1:8080->8080/tcp gaeapp
c0fdcc8ecab0 gcr.io/google-appengine/api-proxy "/proxy" 5 hours ago Up 5 hours api
829f7a631c00 gcr.io/google-appengine/nginx-proxy "/var/lib/nginx/bin/…" 5 hours ago Up 5 hours 8080/tcp, 0.0.0.0:8443->8443/tcp, 8090/tcp, 0.0.0.0:10402->10402/tcp nginx_proxy
00b8be4f0ef4 gcr.io/google-appengine/iap-watcher "./start_iap_watcher…" 5 hours ago Up 5 hours iap_watcher
b671d1701612 gcr.io/google-appengine/fluentd-logger "/opt/google-fluentd…" 5 hours ago Up 5 hours fluentd_logger
chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker logs cloudsql
2019/02/26 14:31:42 Listening on 0.0.0.0:5432 for chetabahana:us-central1:instance-postgres
2019/02/26 14:31:42 Ready for new connections
chetabahana_gmail_com@aef-product-v1--3-39p9:~$ netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 172.17.0.1:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.1:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::8443 :::* LISTEN
tcp6 0 0 :::10402 :::* LISTEN
chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker exec -it gaeapp /bin/bash
root@id:/app# python manage.py migrate
root@id:/app# python manage.py populatedb
root@id:/app# python manage.py createsuperuser
root@id:/app# exit
$ gcloud app deploy --version dev
$ gcloud app versions stop dev