Advertisement
  1. Code
  2. WordPress

Menjalankan WordPress di OpenShift Bagian 2

Scroll to top
Read Time: 26 min

Indonesian (Bahasa Indonesia) translation by Dean Ramadhan (you can also view the original English article)

Dalam tutorial ini, kita akan mempelajari lebih dalam tentang OpenShift untuk memahami proses pembangunan dan penyebaran kustom. Kami juga akan mempelajari command-line tool untuk mencatat dan mengatasi masalah saat aplikasi kami tidak aktif.

Kami juga akan membahas beberapa tips bonus untuk memanfaatkan fitur SSH yang ditawarkan oleh OpenShift. Selain itu, kita akan melihat cara menyinkronkan lingkungan lokal kita dengan lingkungan remote termasuk basis data, file sumber, dan file media.

Bagian pertama dari seri ini memberikan gambaran umum singkat tentang OpenShift. Kami membahas cara membuat aplikasi, mendapatkan URL server, nama akun kami, dan menyiapkan domain khusus.

Kami melakukan hampir semua tugas itu menggunakan antarmuka web yang bagus dan sangat nyaman; Namun, selain dasbor, OpenShift menawarkan alat klien yang kuat untuk dipanggil rhc client. Kita dapat memintanya dari command line untuk melakukan administrasi dan pemeliharaan OpenShift. Setelah Anda menginstal alat, Anda dapat membuat aplikasi, menambahkan kartrid, dan menambah roda gigi dengan cepat. Ini pisau tentara Swiss. Anda mungkin tidak membutuhkannya tetapi sangat berguna.

Instal Klien Command Line OpenShift

Dokumen OpenShift sangat jelas tentang menginstal pustaka klien ini. Perpustakaan ditulis dalam Ruby jadi pastikan Anda telah menginstal Ruby. Pada dasarnya, Anda hanya perlu menginstal getm rhc di Mac atau Linux. Anda memiliki peluang besar bahwa Git dan Ruby sudah diinstal sehingga Anda hanya perlu menjalankan:

1
sudo gem install rhc

Kemudian atur dengan nama pengguna dan kata sandi Anda. Kapan Anda diminta untuk Menghasilkan token sekarang? Ketik Ya.

1
rhc setup# Once it's done, you should see something similar:Saving configuration to /Users/kureikain/.openshift/express.conf ... done

2


3
Checking for git ... found git version 1.8.5.2 (Apple Git-48)

4


5
Checking common problems .. done

6


7
Checking for a domain ... tutsplus

8


9
Checking for applications ... found 2

10


11
  demo2 https://demo2-tutsplus.rhcloud.com/

12
  php   http://php-tutsplus.rhcloud.com/

13


14
  You are using 3 of 3 total gears

15
  The following gear sizes are available to you: small

16


17
Your client tools are now configured.

Sekarang kita telah menginstal utilitas, mari kita bermain dengannya.

Hal pertama yang perlu diperhatikan adalah bahwa perintah rhc akan memberi Anda daftar perintah yang tersedia. Anda dapat belajar dari sana dengan rhc help. Ini menunjukkan gambaran singkat dari setiap perintah. rhc help command_name akan menunjukkan kepada Anda bagaimana menggunakan perintah tertentu.

1
$ rhc helpGetting started:
2
  setup              Connects to OpenShift and sets up your keys and domain
3
  create-app         Create an application
4
  apps               List all your applications
5
  cartridges         List available cartridges
6
  add-cartridge      Add a cartridge to your application
7
  set-env            Set one or more environment variable(s) to your application
8
  logout             End the current session
9
10
Working with apps:
11
  tail               Tail the logs of an application
12
  port-forward       Forward remote ports to the workstation
13
  threaddump         Trigger a thread dump for JBoss and Ruby apps
14
  snapshot           Save the current state of your application locally
15
  git-clone          Clone and configure an application's repository locally

16


17
Management commands:

18
  account            Display details about your OpenShift account

19
  alias              Add or remove a custom domain name for an app

20
  app                Commands for creating and managing applications

21
  authorization      Manage your authorization tokens

22
  cartridge          Manage your application cartridges

23
  deployment         Commands for deploying and managing deployments of an

24
                     application

25
  domain             Add or rename the container for your apps

26
  env                Manages user-defined environment variables set on a given

27
                     application

28
  member             Manage membership on domains

29
  server             Display information about the status of the OpenShift

30
                     service

31
  ssh                SSH into the specified application

32
  sshkey             Add and remove keys for Git and SSH$ rhc help appUsage: rhc app <action>Creates and controls an OpenShift application.  To see the list of all applications use the rhc domain show command.  Note that deleteis not reversible and will stop your application and then remove the application and repo from the remote server. No local changes aremade.List of Actions  configure     Configure several properties that apply to an application  create        Create an application  delete        Delete an application from the server  deploy        Deploy a git reference or binary file of an application  force-stop    Stops all application processes  reload        Reload the application's configuration  restart       Restart the application  scale-down    Scale down the application's web cartridge  scale-up      Scale up the application's web cartridge  show          Show information about an application  start         Start the application  stop          Stop the application  tidy          Clean out the application's logs and tmp directories and tidy up the git repo on the server

Untuk perintah yang berinteraksi dengan aplikasi, Anda harus menentukan nama aplikasi dengan -a appname atau hanya menambahkan nama aplikasi; namun, jika Anda menjalankan perintah di dalam repositori Git yang Anda kloning sebelumnya, Anda dapat menghilangkannya. Nama aplikasi dapat dilihat dengan perintah rhc app. Contoh dengan aplikasi demo2 saya sebelumnya. Daripada mengetikkan seluruh nama akun dan nama server ke SSH ke dalamnya, saya bisa menggunakan perintah ini:


1
$ rhc ssh demo2
2
# Output 
3
Connecting to 532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com ...

Terkadang, berguna untuk memicu penyebaran tanpa dorongan apa pun. Katakanlah kita ingin menggunakan WordPress dari komit Git tertentu atau branch khusus.

Lihat contoh berikut:

1
# Deploy branch master on demo2 app

2
$ rhc app-deploy master -a demo2
3
4
# Deploy bracch branch/deploy on demo2 app

5
$ rhc app-deploy branch/deploy -a demo2

Atau tampilkan informasi aplikasi:


1
demo2 [master] ⚡ rhc app-show demo2
2
demo2 @ http://demo2-tutsplus.rhcloud.com/ (uuid: 532bd7655004468bcf0000e1)
3
---------------------------------------------------------------------------
4
  Domain:          tutsplus
5
  Created:         Mar 20 11:08 PM
6
  Gears:           1 (defaults to small)
7
  Git URL:         ssh://532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com/~/git/demo2.git/
8
  Initial Git URL: https://github.com/openshift/wordpress-example.git
9
  SSH:             532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com
10
  Deployment:      auto (on git push)
11
  Aliases:         openshift.axcoto.com
12
13
  mysql-5.5 (MySQL 5.5)
14
  ---------------------
15
    Gears:          Located with php-5.4, phpmyadmin-4
16
    Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/
17
    Database Name:  demo2
18
    Password:       DyANqgKAFbTT
19
    Username:       adminL1GxwjI
20
21
  php-5.4 (PHP 5.4)
22
  -----------------
23
    Gears: Located with mysql-5.5, phpmyadmin-4
24
25
  phpmyadmin-4 (phpMyAdmin 4.0)
26
  -----------------------------
27
    Gears:          Located with mysql-5.5, php-5.4
28
    Connection URL: https://demo2-tutsplus.rhcloud.com/phpmyadmin/

Anda juga dapat menyimpan snapshot dari aplikasi saat ini:

1
$ rhc snapshot-save demo2
2
Pulling down a snapshot to demo2.tar.gz...
3
Creating and sending tar.gz
4
5
RESULT:
6
Success

Atau Anda dapat menambahkan beberapa kartrid:

1
# add mysql-5.5 cartridge into our app
2
$ rhc cartridge add -a demo2 -c mysql-5.1
3
4
# add php5-4  cartridge into our app
5
$ rhc cartridge add -a demo2 -c php-5.4

Tentu saja, silakan bereksperimen dengan sejumlah perintah yang berbeda. Ini relatif lurus ke depan dan mudah dipahami, dan karena semuanya di bawah kendali sumber, mudah untuk mengembalikan perubahan Anda.

Apa yang Terjadi Ketika Anda Push ke Repositori Anda?

Pada artikel pertama, kami melihat bahwa setiap kali git push untuk menyebarkan branch dipicu, aplikasi akan digunakan. Menurut dokumen OpenShift, berikut adalah rincian dari apa yang terjadi:

  1. Anda menjalankan git push di komputer Anda, perubahan Anda dikirim ke aplikasi OpenShift Anda
  2. Aplikasi dimatikan
  3. Perubahan Anda disalin di server ke lokasi yang benar
  4. OpenShift memanggil build hook Anda - file skrip yang Anda tempatkan di repositori Git Anda
  5. Aplikasi Anda dimulai

Langkah 4 ditangani oleh file skrip di .openshift /action_hooks Anda. OpenShift akan mengeksekusi file skrip tersebut diperiksa ke dalam repositori Git Anda pada titik tertentu selama proses penyebaran.

Jika file skrip yang sesuai tidak ada, proses penyebaran akan berlanjut secara normal. Sekali lagi, semua hook harus ditempatkan di direktori .openshift/action_hooks/ di repositori aplikasi Anda. Fase individu dari setiap build adalah:

  1. Pre-Receive. Selama push Anda, OpenShift memeriksa untuk memastikan bahwa aplikasi Anda dalam keadaan konsisten. Tidak ada hook untuk langkah ini.
  2. Pre-Build. Ini terjadi setelah aplikasi dihentikan dan direktori repo baru telah digunakan tetapi sebelum membangun. jalankan skrip .openshift/action_hooks/pre_build
  3. Build. Ini membangun aplikasi Anda, mengunduh ketergantungan yang diperlukan, mengeksekusi skrip .openshift/action_hooks/build dan menyiapkan segalanya untuk penyebaran. Dalam lingkup WordPress, kami tidak menggunakan langkah ini karena WordPress hanya perlu masuk ke root dokumen dan dijalankan oleh server web, tidak ada persyaratan membangun khusus. Kami biasanya menggunakan hook ini untuk Mengunduh WordPress dan mengekstraknya ke lokasi yang benar di OpenShift.
  4. Deploy. Langkah ini terjadi tepat sebelum aplikasi dikeluarkan permulaan. Pekerjaan persiapan apa pun yang diperlukan untuk menyiapkan aplikasi agar dimulai harus dilakukan di hook .openshift/action_hooks/deploy. Dalam lingkup WordPress, kami menggunakan hook ini untuk menyalin data build di atas ke dalam root dokumen, menyalin plugin dan tema (.openshift/themes dan .openshift/plugin) ke lokasi yang benar.
  5. Post-Deploy. Beberapa aplikasi mungkin perlu berinteraksi dengan aplikasi yang sedang berjalan untuk menyelesaikan proses penyebaran. Setelah aplikasi dimulai, hook .openshift/action_hooks/post_deploy akan dieksekusi.

Anda benar-benar dapat menyesuaikan skrip ini untuk keperluan Anda sendiri. Skrip build dijalankan secara langsung, artinya Anda dapat menulisnya dalam bahasa apa pun tidak peduli itu Bash, Ruby, atau Python selama Anda memasukkan shebang yang benar seperti jika Anda menggunakan bash.

1
#!/bin/bash
Atau Ruby
1
#!/usr/bin/ruby

Saya lebih suka menulis skrip Bash sederhana untuk tujuan pembuatan dan saya akan menggunakannya dalam tutorial ini. Bash ada di mana-mana dan sintaksinya sangat mudah sehingga Anda tidak perlu tahu Bash untuk memahami beberapa skrip sebenarnya.

Sehubungan dengan WordPress, kami tidak melakukan banyak tugas dalam proses pembangunan karena PHP tidak membutuhkan pembangunan; Namun, kami memanfaatkan proses pembuatan itu untuk mempersiapkan beberapa data. The .openshift/action_hooks/build memeriksa apakah WordPress dibuat di OpenShift, jika tidak akan mengunduh WordPress dari WordPress.org, membuat direktori yang diperlukan, mengekstrak dan menyalin konten file sumber WordPress ke lokasi yang benar. Sejak penyebaran kedua, skrip pembangun itu hampir tidak menghasilkan apa-apa karena WordPress telah diinstal. Untuk mengkustomisasi skrip build ini, kita harus mengetahui variabel lingkungan.

Variabel Lingkungan OpenShift

Selama proses membangun dan mendokumentasikan, kita perlu mengetahui beberapa informasi OpenShift seperti jalur root dokumen, jalur data, dan nama aplikasi. Informasi ini tersedia dalam variabel lingkungan yang daftar lengkapnya dapat diakses di sini.

Beberapa variabel yang akan sering kita gunakan adalah sebagai berikut:

  1. OPENSHIFT_HOMEDIR. jalur direktori home. Di mesin lokal Anda, Linux Anda akan memiliki direktori home pengguna /home/username atau di Mac OS X itu adalah /Users/username. Direktori home adalah folder tempat Anda akan berada di sana ketika Anda mengakses jarak jauh melalui SSH. Ini /var/lib/openshift/user_account_id. Sebagai contoh, saya sendiri adalah /var/lib/openshift/532bd7655004468bcf0000e1.
  2. OPENSHIFT_REPO_DIR$OPENSHIFT_HOMEDIR/app-root/runtime/repo/. Repositori yang berisi versi yang saat ini digunakan (aplikasi). Persis sama dengan apa pun yang Anda miliki di dalam repositori di komputer lokal Anda dengan pengecualian bahwa folder php sekarang adalah titik tautan simbolis ke root dokumen; oleh karena itu, $OPENSHIFT_REPO_DIR/php dapat digunakan dalam membangun skrip untuk referensi ke root dokumen.
  3. OPENSHIFT_DATA_DIR$OPENSHIFT_HOMEDIR/app-root/data/
  4. OPENSHIFT_APP_UUID. Id unik aplikasi Anda di OpenShift. UUID bisa sangat berguna ketika Anda mulai men-generate.

Kami mengakses variabel ini dalam skrip build kami dengan $variable_name.

Proses Penyebaran dan Build Kustom

Mari kita lihat kembali struktur repositori kami saat ini:

Kami akan mulai dengan tindakan Hello World sehingga kami dapat mengetahui apa yang akan dihasilkan, kapan dan bagaimana kami menyesuaikan skrip build.

Hello World Build Anda

Biarkan menambahkan ini echo "Hello world. This is invoked before building." ke dalam ./openshift/pre_build Anda

1
$ echo "echo \"Hello world. This is invoke before building.\"" >> .openshift/action_hooks/pre_build
Push ke repositori dan Anda akan melihat output seperti ini:
1
$ git add .openshift/action_hooks/pre_build
2
$ git commit -m "Hello world for pre_build"
3
$ git push
4
5
Counting objects: 9, done.
6
Delta compression using up to 4 threads.
7
Compressing objects: 100% (5/5), done.
8
Writing objects: 100% (5/5), 411 bytes | 0 bytes/s, done.
9
Total 5 (delta 4), reused 0 (delta 0)
10
remote: Stopping MySQL 5.5 cartridge
11
remote: Stopping PHP 5.4 cartridge (Apache+mod_php)
12
remote: Waiting for stop to finish
13
remote: Stopping PHPMyAdmin cartridge
14
remote: Waiting for stop to finish
15
remote: Building git ref 'master', commit 1f4ef8a
16
remote: Hello world. This is invoke before building
17
remote: Checking .openshift/pear.txt for PEAR dependency..
18
remote: Do we need to run WordPress install

19
remote: Preparing build for deployment
20
remote: Deployment id is d06b1d4a
21
remote: Activating deployment
22
remote: Starting MySQL 5.5 cartridge
23
remote: Starting PHPMyAdmin cartridge
24
remote: Hello world. This is invoke when deploying
25
remote: Copying WordPress plugins from .openshift/plugins
26
remote: Copying WordPress themes from .openshift/themes
27
remote: Database already configured.
28
remote: Starting PHP 5.4 cartridge (Apache+mod_php)
29
remote: Application directory "php/" selected as DocumentRoot
30
remote: Hello world. This is invoke after deploying
31
remote: -------------------------
32
remote: Git Post-Receive Result: success
33
remote: Activation status: success
34
remote: Deployment completed with status: success
35
To ssh://532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com/~/git/demo2.git/
36
   1e7ad85..1f4ef8a  master -> master
Seperti yang Anda lihat, pesan kami muncul selama proses pembuatan. Sekarang, mari kita lakukan hal yang nyata untuk menyalin file selama proses pembangunan.

Menyalin File ke Root Dokumen

Jika Anda mengingat langkah sebelumnya, file dalam .openshift/themes dan .openshift/plugins disalin ke wp-content/themes dan wp-content/plugins. Katakanlah kita ingin melakukan hal yang sama untuk menyalin file ke root dokumen.

Anda ingin membuat sub folder yang dipanggil resume dan meletakkan file resume/my_resume.txt dan membuatnya mengakses melalui demo2-tutsplus.rhc-cloud.com/resume/my_resume.txt. Mari kita buat direktori untuk menyimpan data yang akan kita salin ke dalam dokumen root. Kami membuat panggilan folder docroot di dalam .openshift dan apa pun di dalamnya akan disalin.

Mari kita buka .openshift/action_hooks/deploy, perhatikan baris 49 (saya membuatnya tebal)

1
#!/bin/bash

2
3
# This deploy hook gets executed after dependencies are resolved and the

4
# build hook has been run but before the application has been started back

5
# up again.  This script gets executed directly, so it could be python, php,

6
# ruby, etc.

7
8
echo "Hello world. This is invoke when deploying"
9
dest_dir=${OPENSHIFT_DATA_DIR}current
10
11
current_version=$(cat ${OPENSHIFT_BUILD_DEPENDENCIES_DIR}.current_version)
12
install_dir=${OPENSHIFT_BUILD_DEPENDENCIES_DIR}${current_version}
13
14
if [ ! -d "${dest_dir}" ]; then

15
  mkdir -p $dest_dir
16
  cp -rf ${install_dir}/* ${dest_dir}/
17
fi
18
19
# Replace the php/ directory with provided clean Wordpress installation

20
#

21
if [ -d ${OPENSHIFT_REPO_DIR}php ]; then

22
  rm -rf ${OPENSHIFT_REPO_DIR}php
23
fi

24
ln -sf ${dest_dir} ${OPENSHIFT_REPO_DIR}php
25
26
if [ ! -d ${OPENSHIFT_DATA_DIR}uploads ]; then

27
    mkdir ${OPENSHIFT_DATA_DIR}uploads
28
fi
29
30
31
# If this is initial installation, copy the default themes and plugins

32
# from official Wordpress installation

33
#

34
if [ ! -d ${OPENSHIFT_DATA_DIR}plugins ]; then

35
  mv ${dest_dir}/wp-content/plugins ${OPENSHIFT_DATA_DIR}plugins
36
fi

37


38
if [ ! -d ${OPENSHIFT_DATA_DIR}themes ]; then

39
  mv ${dest_dir}/wp-content/themes ${OPENSHIFT_DATA_DIR}themes
40
fi
41
42
# Users can place their own plugins and themes into .openshift/ directory

43
# inside their GIT repository.

44
#

45
echo "Copying WordPress plugins from .openshift/plugins"
46
cp -rf $OPENSHIFT_REPO_DIR/.openshift/plugins/* ${OPENSHIFT_DATA_DIR}plugins/ 2>/dev/null
47
48
echo "Copying WordPress themes from .openshift/themes"
49
cp -rf $OPENSHIFT_REPO_DIR/.openshift/themes/* ${OPENSHIFT_DATA_DIR}themes/ 2>/dev/null
50
# We will copy file hereecho "Copying custom file from .openshift/docroot"

51
cp -rf $OPENSHIFT_REPO_DIR/.openshift/docroot/* ${OPENSHIFT_REPO_DIR}php/
52
53
# Add multisite upload dir

54
#

55
if [ ! -d $OPENSHIFT_DATA_DIR/blogs.dir ]; then

56
    mkdir $OPENSHIFT_DATA_DIR/blogs.dir
57
fi

58


59
ln -sf ${OPENSHIFT_DATA_DIR}blogs.dir ${OPENSHIFT_REPO_DIR}php/wp-content/
60
ln -sf ${OPENSHIFT_DATA_DIR}plugins   ${OPENSHIFT_REPO_DIR}php/wp-content/
61
ln -sf ${OPENSHIFT_DATA_DIR}themes    ${OPENSHIFT_REPO_DIR}php/wp-content/
62
ln -sf ${OPENSHIFT_DATA_DIR}uploads   ${OPENSHIFT_REPO_DIR}php/wp-content/
63
64
set -e
65
66
if [ -z "$OPENSHIFT_MYSQL_DB_HOST" ]
67
then

68
    echo 1>&2
69
    echo "Could not find mysql database.  Please run:" 1>&2
70
    echo "rhc cartridge add -a $OPENSHIFT_APP_NAME -c mysql-5.1" 1>&2
71
    echo "then make a sample commit (add whitespace somewhere) and re-push" 1>&2
72
    echo 1>&2
73
fi

74


75
if [ -z "$OPENSHIFT_MYSQL_DB_HOST" ]
76
then

77
    exit 5
78
fi
79
80
# Confirm database exists, if not create it

81
if ! /usr/bin/mysql -u "$OPENSHIFT_MYSQL_DB_USERNAME" --password="$OPENSHIFT_MYSQL_DB_PASSWORD" -h "$OPENSHIFT_MYSQL_DB_HOST" -P "$OPENSHIFT_MYSQL_DB_PORT" -e "select * from wp_commentmeta;" "$OPENSHIFT_APP_NAME" > /dev/null 2>&1
82
then

83
    echo

84
    echo "Database schema not yet added, WordPress is ready for install by visiting the site."
85
else

86
    echo "Database already configured."
87
fi

Kami menambahkan perintah ini setelah itu.

1
# We will copy file here

2
echo "Copying custom file from .openshift/docroot"
3
cp -rf $OPENSHIFT_REPO_DIR/.openshift/docroot/* ${OPENSHIFT_REPO_DIR}php/
4

Baris dengan # adalah komentar, untuk referensi kami sendiri. echo garis hanya untuk menunjukkan beberapa output. Perintah sebenarnya yang kami gunakan adalah cp untuk menyalin semua file dan folder secara rekursif.

Sekarang, mari letakkan sesuatu di .openshift/docroot dan gunakan.

1
☁  demo2 [master] ⚡ mkdir -p .openshift/docroot/resume/
2
☁  demo2 [master] ⚡ echo "Hi there" > .openshift/docroot/resume/my_resume.txt
3
☁  demo2 [master] ⚡ git add .openshift/
4
☁  demo2 [master] ⚡ git commit -m "Custom hook for file copy"
5
[master 46235a2] Custom hook for file copy
6
 3 files changed, 7 insertions(+), 1 deletion(-)
7
 create mode 100644 .openshift/docroot/hi.txt
8
☁  demo2 [master] git push
9
Counting objects: 13, done.
10
Delta compression using up to 4 threads.
11
Compressing objects: 100% (6/6), done.
12
Writing objects: 100% (8/8), 723 bytes | 0 bytes/s, done.
13
Total 8 (delta 4), reused 0 (delta 0)
14
remote: Stopping MySQL 5.5 cartridge
15
remote: Stopping PHP 5.4 cartridge (Apache+mod_php)
16
remote: Waiting for stop to finish
17
remote: Stopping PHPMyAdmin cartridge
18
remote: Waiting for stop to finish
19
remote: Waiting for stop to finish
20
remote: Waiting for stop to finish
21
remote: Waiting for stop to finish
22
remote: Waiting for stop to finish
23
remote: Waiting for stop to finish
24
remote: Building git ref 'master', commit 46235a2
25
remote: Hello world. This is invoke before building
26
remote: Checking .openshift/pear.txt for PEAR dependency..
27
remote: Do we need to run WordPress install

28
remote: Preparing build for deployment
29
remote: Deployment id is fe0803a9
30
remote: Activating deployment
31
remote: Starting MySQL 5.5 cartridge
32
remote: Starting PHPMyAdmin cartridge
33
remote: Hello world. This is invoke when deploying
34
remote: Copying WordPress plugins from .openshift/plugins
35
remote: Copying WordPress themes from .openshift/themes
36
remote: Copying custom file from .openshift/docroot
37
remote: Database already configured.
38
remote: Starting PHP 5.4 cartridge (Apache+mod_php)
39
remote: Application directory "php/" selected as DocumentRoot
40
remote: Hello world. This is invoke after deploying
41
remote: -------------------------
42
remote: Git Post-Receive Result: success
43
remote: Activation status: success
44
remote: Deployment completed with status: success
45
To ssh://532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com/~/git/demo2.git/
46
   1f4ef8a..46235a2  master -> master
47
☁  demo2 [master] curl http://openshift.axcoto.com/resume/my_resume.txt
48
Hi there
49
☁  demo2 [master]

Latihan Anda

Gunakan folder php di repositori Anda sebagai cara untuk menyimpan konten ini, daripada memperkenalkan .openshift/docroot.

Petunjuk

app-deployments/current/repo memiliki salinan repositori yang persis sama. Apa pun yang Anda miliki di komputer lokal Anda akan ada di sini.

Memecahkan masalah dan Memelihara

Di bagian sebelumnya, Anda tahu cara akses rremote ke aplikasi Anda dengan SSH. Setelah Anda masuk, Anda dapat menggunakan perintah Linux.

1
$ ssh 532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com

Namun, rhc datang dengan perintah ssh memungkinkan Anda untuk terhubung ke suatu aplikasi. Cepat dan mudah diingat.

1
$ rhc ssh demo2

Dari ini, Anda selalu dapat menggunakan help untuk menampilkan perintah yang tersedia.

  1. tail_all: tail semua log Anda. Anda dapat melihat logging secara real time dengan perintah ini untuk semua roda gigi di sistem: seperti log akses Apache, log kesalahan MySQL.
  2. mysql membuat anda memakai ke dalam shell MySQL. Sangat berguna membandingkan dengan mengetikkan perintah mysql yang panjang dengan nama host, string pengguna dan kata sandi.
  3. export menunjukkan semua variabel lingkungan saat ini. Selama bekerja dengan skrip build, Anda dapat menggunakan perintah ini untuk melihat daftar variabel lingkungan yang tersedia.
  4. gear untuk mengontrol gear Anda: mulai, berhenti, restart. Seperti Anda dapat me-restart apache, hentikan mysql.
  5. snapshot snapshot mengambil backup penuh dari WordPress Anda saat ini dengan semua file, database dump, dan data media. Cara yang sangat baik untuk memiliki backup penuh situs Anda.
  6. quota menunjukan kuota disk Anda. Berguna saat Anda tidak dapat mengunggah ke WordPress lagi, Anda mungkin kehabisan ruang.

Mengambil Snapshot

rhc snapshot-save demo2 dump basis data Anda, kompres file media, dan kode sumber, kumpulkan file tar dan unduh untuk Anda.

1
$ rhc snapshot-save demo2
2
Pulling down a snapshot to demo2.tar.gz...
3
Creating and sending tar.gz
4
$ ls | grep tar.gz
5
demo2.tar.gz

Secara default, file tar dengan nama yang sama dengan aplikasi Anda dibuat. Simpan di suatu tempat untuk Anda santap. Setelah snapshot disimpan, Anda juga dapat memulihkannya.

1
$ rhc snapshot-restore demo2
2
Restoring from snapshot demo2.tar.gz...
3
Removing old git repo: ~/git/demo2.git/
4
Removing old data dir: ~/app-root/data/*
5
Restoring ~/git/demo2.git and ~/app-root/data

Memeriksa Status Gear

Perintah gear mengontrol status kartrid, mulai / berhenti. Seperti Anda mendapatkan kesalahan batas waktu saat mengunjungi domain Anda, atau kesalahan 404, 503, atau kesalahan basis data. Anda harus SSH ke aplikasi Anda dan memeriksa status gear:

1
[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\> gear statusCart to get the status for?1. mysql-5.52. php-5.43. phpmyadmin-4?  2ATTR: status=ALREADY_STOPPEDATTR: quota_blocks=1048576ATTR: quota_files=80000CLIENT_RESULT: Application is either stopped or inaccessible[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\>

Jika dikatakan CLIENT_RESULT Application is either stopped or inaccessible, saya harus memulainya dengan:

1
[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\> gear start --cart php-5.4
2
Starting PHP 5.4 cartridge (Apache+mod_php)
3
Application directory "php/" selected as DocumentRoot
4
[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\>
1
# Confirm it's working now[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\> gear status

2
Cart to get the status for?
3
1. mysql-5.5
4
2. php-5.4
5
3. phpmyadmin-4
6
?  2
7
ATTR: quota_blocks=1048576
8
ATTR: quota_files=80000
9
CLIENT_RESULT: Application is running
10
CLIENT_RESULT: %
11
[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\>
Langkah selanjutnya adalah berkonsultasi dengan file log Anda.

Log

tail_all menunjukkan Anda log yang selesai semua kartrid secara real time. Namun, jika Anda ingin melihat log individual, berikut adalah daftarnya:

  1. akses php/logs dan log kesalahan dari Apache dan MySQL
  2. mysql/log logMySQL

Port Forwarding

Perintah rch port-forward dapat membantu Anda membuat koneksi lokal ke layanan yang di-host (server Web, server Database ...). OpenShift secara otomatis memeriksa port yang tersedia pada sistem lokal Anda dan meneruskan satu ke port remote layanan yang berjalan. Melalui port forwarding, Anda dapat bekerja pada mesin lokal tetapi koneksi diteruskan ke mesin remote.

Mari kita coba dengan MySQL.

1
$ rhc port-forward demo2
2
Checking available ports ... done

3
Forwarding ports ...
4
Address already in use - bind(2) while forwarding port 8080. Trying local port 8081
5
Address already in use - bind(2) while forwarding port 3306. Trying local port 3307
6
7
To connect to a service running on OpenShift, use the Local address
8
9
Service Local               OpenShift
10
------- -------------- ---- ----------------
11
httpd   127.0.0.1:8080  =>  127.2.126.1:8080
12
httpd   127.0.0.1:8081  =>  127.2.126.3:8080
13
mysql   127.0.0.1:3307  =>  127.2.126.2:3306
14
15
Press CTRL-C to terminate port forwarding

Saya memiliki port 8080 dan 3306 untuk berbagai aplikasi saya. Karena itu, OpenShift mengambil 3307 untuk MySQL. Sekarang saya bisa menggunakan kredensial MySQL untuk terhubung dengannya dengan Sequel Pro. Jika Anda lupa kata sandi, Anda bisa mendapatkannya lagi di dashboard OpenShift atau SSH ke server, dan masalah:

1
[demo2-tutsplus.rhcloud.com 532bd7655004468bcf0000e1]\> export | grep MYSQL
2
declare -x OPENSHIFT_MYSQL_DB_HOST="127.2.126.2"
3
declare -x OPENSHIFT_MYSQL_DB_LOG_DIR="/var/lib/openshift/532bd7655004468bcf0000e1/mysql//log/"
4
declare -x OPENSHIFT_MYSQL_DB_PASSWORD="DyANqgKAFbTT"
5
declare -x OPENSHIFT_MYSQL_DB_PORT="3306"
6
declare -x OPENSHIFT_MYSQL_DB_SOCKET="/var/lib/openshift/532bd7655004468bcf0000e1/mysql//socket/mysql.sock"
7
declare -x OPENSHIFT_MYSQL_DB_URL="mysql://adminL1GxwjI:DyANqgKAFbTT@127.2.126.2:3306/"
8
declare -x OPENSHIFT_MYSQL_DB_USERNAME="adminL1GxwjI"
9
declare -x OPENSHIFT_MYSQL_DIR="/var/lib/openshift/532bd7655004468bcf0000e1/mysql/"
10
declare -x OPENSHIFT_MYSQL_IDENT="redhat:mysql:5.5:0.2.9"
11
declare -x OPENSHIFT_MYSQL_LD_LIBRARY_PATH_ELEMENT="/opt/rh/mysql55/root/usr/lib64"

Menggunakan Sequel Pro untuk terhubung dengannya.

Dengan port forwarding, Anda dapat terhubung ke aplikasi dengan mudah menggunakan program GUI

Sinkronisasi Lingkungan Lokal dan Langsung

Semua orang suka mengembangkan pada mesin lokal daripada mengunggah ke server untuk menguji atau mengevaluasi fitur. Anda dapat mengekspor data dari host langsung dan mengimpor pada mesin lokal untuk tujuan itu seperti dalam tutorial ini. Namun, proses ekspor itu menyebalkan. Data bisa besar, lebih lama dan lebih lama untuk ekspor/impor. Memperbaiki bug juga lebih sulit. Jika bug hanya terjadi pada posting/halaman tertentu di situs langsung, tanpa memproduksi ulang konten posting/halaman yang tepat, akan sulit untuk melakukan debug pada lingkungan lokal.

Atau jika Anda adalah tim remote, dan tim Anda membuat banyak pos pengujian pada area staging/testing (hosting di OpenShift), akan lebih baik jika Anda memiliki cara yang baik untuk hanya menyinkronkan semuanya kembali, khususnya data gambar .

Oleh karena itu, saya mengusulkan metode untuk mencapainya dengan: port forwarding dan mengedit file host. Menggunakan port forwarding seperti yang kita lihat di atas, kita dapat mengakses MySQL dengan mudah dari mesin lokal. Dengan bantuan mengedit file host, kita dapat mengarahkan domain openshift.axcoto.com ke mesin lokal, alih-alih ke OpenShift. Dalam repositori clone kami, kami memiliki folder php kosong. Saat menyebarkan, folder itu diganti dengan tautan simbolis ke root dokumen Apache. Sekarang, kita akan menggunakan folder itu sebagai root dokumen pada mesin lokal kita. Ingat struktur repositori lagi, di komputer saya.

1
☁  demo2 [master] ⚡ pwd
2
/Users/kureikain/Sites/demo2
3
☁  demo2 [master] ⚡ ls -la
4
total 24
5
drwxr-xr-x  10 kureikain  staff   340 Mar 21 00:39 .
6
drwxr-xr-x@ 57 kureikain  staff  1938 Mar 21 00:38 ..
7
drwxr-xr-x  16 kureikain  staff   544 Mar 28 01:20 .git
8
-rw-r--r--   1 kureikain  staff     9 Mar 21 00:39 .gitignore
9
drwxr-xr-x  11 kureikain  staff   374 Mar 25 23:42 .openshift
10
-rw-r--r--   1 kureikain  staff  2243 Mar 21 00:39 README
11
-rw-r--r--   1 kureikain  staff  2201 Mar 21 00:39 README.md
12
drwxr-xr-x   3 kureikain  staff   102 Mar 21 00:39 libs
13
drwxr-xr-x   3 kureikain  staff   102 Mar 21 00:39 misc
14
drwxr-xr-x   7 kureikain  staff   238 Mar 28 01:05 php

Perhatikan bahwa, untuk berhasil pada metode ini, Anda harus menambahkan apa pun yang Anda miliki di wp-content/plugins (default WordPress 3.8.1 plugins) dan wp-content/themes (default WordPress 3.8.1 themes) di OpenShift ke dalam repositori Git Anda. Anda dapat mengunduhnya melalui scp atau SFTP seperti yang kita bahas di artikel sebelumnya, atau Anda dapat mengunduh yang default dari WordPress.

Pastikan repositori .openshift/themes dan .openshift/plugins Anda memiliki hal yang sama dengan folder wp-content/themes dan folder wp-content/plugins dari aplikasi WordPress di OpenShift.

Langkah 1: Port Forwarding

Menggunakan perintah rhc port-forward demo2, dengan demo2 adalah aplikasi saya. Ubah ke nama aplikasi Anda.

Langkah 2: Host Virtual

Menggunakan Apache, kami akan menambahkan satu lagi entri untuk titik domain kami, tahan folder WordPress kami. Tergantung pada OS Anda, Anda mungkin memiliki lokasi berbeda untuk konfigurasi Apache. Itu bisa /etc/apache2 atau /etc/httpd.

Sebagai contoh, di Mac saya, ini /etc/apache2. Saya akan menambahkan kode di bawah ini ke /etc/apache2/httpd.conf saya, atau /etc/apache2/extra/httpd-vhosts.conf bergantung pada OS Anda, atau di tempat yang Anda inginkan.

1
<VirtualHost *:80>
2
    ServerName openshift.axcoto.com
3
    DocumentRoot "/Users/kureikain/Sites/demo2/php"
4
    <Directory "/Users/kureikain/Sites/demo2/php">
5
      Order allow,deny
6
      Allow from all
7
    </Directory>
8
</VirtualHost>
Jika Anda tidak terbiasa dengan Apache dan Virtual host, beberapa artikel akan membantu:
  1. https://code.tutsplus.com/articles/apache-2-basic-configuration-on-unix-like-systems--net-26607
  2. http://code.tutsplus.com/articles/how-to-setup-a-wordpress-development-environment-for-windows--wp-2...
  3. http://code.tutsplus.com/tutorials/wordpress-development-and-deployment-with-mamp-git-and-dropbox--w...

Langkah 3: Variabel lingkungan

Saat berjalan di mesin lokal Anda, Anda tidak akan memiliki variabel lingkungan yang tersedia. Kita harus mendefinisikan di suatu tempat. Untuk permulaan yang sederhana, saya lebih suka menempatkan variabel ini langsung di file konfigurasi Apache dengan arah SetEnv.

Entri host virtual kami menjadi:

1
<VirtualHost *:80>
2
    SetEnv OPENSHIFT_SECRET_TOKEN  "kCsELz-GJnho4I0M9XemTiZ47Jn4_QCSONFL5We8zw3Tgg572ivNEQQgZeIKQkTo2kE>    SetEnv OPENSHIFT_APP_UUID 532bd7655004468bcf0000e1        SetEnv OPENSHIFT_APP_NAME demo2

3
    SetEnv OPENSHIFT_MYSQL_DB_USERNAME adminL1GxwjI

4
    SetEnv OPENSHIFT_MYSQL_DB_PASSWORD DyANqgKAFbTT

5
    SetEnv OPENSHIFT_MYSQL_DB_HOST "127.0.0.1"

6
    SetEnv OPENSHIFT_MYSQL_DB_PORT 3307

7


8
    ServerName openshift.axcoto.com

9
    ServerAdmin webmaster@dummy-host2.example.com

10
    DocumentRoot "/Users/kureikain/Sites/demo2/php"

11
    <Directory "/Users/kureikain/Sites/demo2/php">

12
      Order allow,deny

13
      Allow from all

14
    </Directory>

15
    

16
    ErrorLog "/var/log/apache2/openshift.axcoto.com-error_log"

17
    CustomLog "/var/log/apache2/openshift.axcoto.com-access_log" common

18


19
</VirtualHost>

Saya ambil variabel lingkungan OpenShift dan memasukkannya ke file konfigurasi kami. Tetapi saya mengubah host MySQL menjadi 127.0.0.1 dan MySQL Port ke 3307 karena kami melakukan port forwarding sebelumnya.

Langkah 4: Mengubah Host File

openshift.axcoto.com dikonfigurasi untuk mengarah ke OpenShift. Namun, kita dapat menimpanya dengan secara langsung mengedit /etc/hosts. Buka file itu dengan editor favorit Anda dan tambahkan

1
127.0.0.1    openshift.axcoto.com
Konfirmasikan bahwa itu menunjuk ke mesin lokal kami.

1
☁  ~  ping openshift.axcoto.com
2
PING openshift.axcoto.com (127.0.0.1): 56 data bytes
3
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.055 ms
4
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.165 ms
5
^C
6
--- openshift.axcoto.com ping statistics ---
7
2 packets transmitted, 2 packets received, 0.0% packet loss
8
round-trip min/avg/max/stddev = 0.055/0.110/0.165/0.055 ms

Jika Anda ingin mengunjungi aplikasi nyata di OpenShift, komentari baris itu di /etc/hosts. Beri "#" untuk dikomentari:

1
# 127.0.0.1     openshift.axcoto.com
Maka openshift.axcoto.com akan menunjuk ke situs langsung lagi.

Langkah 5: Tarik File Inti WordPress dan Sinkronkan Media Dari Situs Live

Akhirnya, kita harus menyalin file media dan WordPress ke lingkungan lokal kita. Kami juga membuat tautan simbolis untuk mengarahkan php/wp-content/themes ke .openshift/theme. Konsep yang sama berlaku untuk plugin, php/wp-content/plugins menunjuk ke .openshift/plugins. Dengan cara ini kita dapat bekerja pada .openshift/themes dan .openshift/plugins dan dapat menyegarkan browser untuk melihat perubahan kita.

1
$ cd php
2
$ rm -rf ./*# make snapshot to the specified file name.$ rhc snapshot save demo2 --filepath snap.tar.gz# extract it$ tar xzf snap.tar.gz# we got it now$ ls

3
532bd7655004468bcf0000e1    snap.tar.gz# the 532bd7655004468bcf0000e1 is out extracted snapshot
4
# it can be different on you app.

5
$ cp -rf 532bd7655004468bcf0000e1/app-root/data/current/*
6
# link the themes folder

7
$ ln -s `pwd`/../.openshift/themes wp-content/themes#link the plugin folder$ ln -s `pwd`/../.openshift/plugins wp-content/plugins
8
# Link .openshift folder itself because it has some special thing inside$ ln -s `pwd`/../.openshift .openshift# copy upload files

9
$ cp -rf 532bd7655004468bcf0000e1/app-root/data/uploads wp-content
10
11
# clean up

12
$ rm -rf 532bd7655004468bcf0000e1 snap.tar.gz

Pertama kali Anda ingin menyinkronkan data, Anda menjalankan perintah ini; Namun, sejak kedua kalinya, kami tidak ingin menarik semua file karena sebagian file ada di sana. Pilihan yang lebih baik hanya menyinkronkan file unggahan. Kita dapat melakukannya dengan scp:

1
$ cd ~/Site/demo2/php
2
$ scp -r 532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com:app-root/data/uploads wp-content/

Atau dengan rsync. Rsync jauh lebih baik karena hanya mengunduh file yang tidak ada. File yang sama tidak akan diunduh lagi.

1
$ cd ~/Site/demo2/php$ rsync -av --partial --progress  --rsh="ssh " 532bd7655004468bcf0000e1@demo2-tutsplus.rhcloud.com:app-root/data/uploads wp-content

Anda dapat melangkah lebih jauh, memasukkan perintah-perintah ini ke dalam skrip shell dan melacaknya dengan repositori Git Anda juga. Aku akan meninggalkan bagian itu untukmu :)

Anda mungkin ingin mengabaikan file di dalam php karena file itu hanya untuk pengujian/berjalan di komputer lokal. Tidak perlu melacaknya.

1
$ echo "php/*" >> .gitignore

Langkah 6: Administrasi melalui SSL (Opsional)

wp-config.php, yang dihasilkan OpenShift, didefinisikan untuk melayani administrator melalui SSL

1
<?php
2
// wp-config.php

3
//...

4
5
/**

6
 * We prefer to be secure by default

7
 */
8
define('FORCE_SSL_ADMIN', true);
Di komputer Anda, Anda biasanya tidak memiliki sertifikat SSL. Anda dapat mengedit wp-config.php dan mengatur FORCE_SSL_ADMIN menjadi false. Jika Anda ingin tantangan, dan ingin mencobanya untuk menjalankan koneksi SSL maka inilah instruksinya.

Menghasilkan sertifikat SSL

Ini adalah sertifikat tanda tangan yang berarti peramban tidak akan mempercayainya. Tidak apa-apa karena kami masih mengerjakan lokal dan Anda bisa menambahkan pengecualian ketika browser memberikan peringatan yang tidak dipercaya.

1
$ sudo mkidr -p /etc/apache2/ssl
2
# make sure you type correct domain
3
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Kami membuat folder /etc/apache2/ssl, kemudian menghasilkan sertifikat dan kunci ke folder itu. Kami akan mengkonfigurasi titik apache ke dua file ini nanti.

Mendefinisikan Entri Virtual Host

Buka /etc/apache/httpd.conf Anda (sekali lagi, file konfigurasi Apache Anda dapat berada di folder yang berbeda, seperti /etc/httpd), temukan baris Listen 80 dan tambahkan Listen 443

1
Listen 80
2
Listen 443

Di atas /etc/apache2/extra/httpd-vhost.conf Anda, temukan baris NameVirtualHost *: 80 dan tambahkan

1
NameVirtualHost *:443

Selanjutnya, kami mendefinisikan satu entri lagi di virtual host untuk port 443. Kami hanya menduplikasi definisi sebelumnya dengan port 80, tapi kali ini, kami menambahkan beberapa definisi SSL.

1
<VirtualHost *:443>
2
3
    SetEnv OPENSHIFT_SECRET_TOKEN  "kCsELz-GJnho4I0M9XemTiZ47Jn4_QCSONFL5We8zw3Tgg572ivNEQQgZeIKQkTo2kEwUHWjpsO7fhy1FeVqDlyRzSsKg6-fWNDWJaj9hO65nwVqE5auj35R2F9RNvEk"
4
    SetEnv OPENSHIFT_APP_UUID 532bd7655004468bcf0000e1
5
    SetEnv OPENSHIFT_APP_NAME demo2
6
    SetEnv OPENSHIFT_MYSQL_DB_USERNAME adminL1GxwjI
7
    SetEnv OPENSHIFT_MYSQL_DB_PASSWORD DyANqgKAFbTT
8
    SetEnv OPENSHIFT_MYSQL_DB_HOST "127.0.0.1"
9
    SetEnv OPENSHIFT_MYSQL_DB_PORT 3307
10
11
    ServerName openshift.axcoto.com
12
    ServerAdmin webmaster@dummy-host2.example.com
13
    DocumentRoot "/Users/kureikain/Sites/demo2/php"
14
    <Directory "/Users/kureikain/Sites/demo2/php">
15
      Order allow,deny
16
      Allow from all
17
    </Directory>
18
    
19
    ErrorLog "/var/log/apache2/openshift.axcoto.com-error_log"
20
    CustomLog "/var/log/apache2/openshift.axcoto.com-access_log" common
21
22
    SSLEngine On
23
    SSLCertificateFile /etc/apache2/ssl/apache.crt
24
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
25
26
    <Location />
27
        SSLRequireSSL On
28
        SSLVerifyClient optional
29
        SSLVerifyDepth 1
30
        SSLOptions +StdEnvVars +StrictRequire
31
    </Location>
32
33
</VirtualHost>

Perhatikan path file sertifikat SSL. Restart Apache dengan sudo apachectl restart. Sekarang, Anda dapat mengakses dasbor Anda melalui SSL. Ini adalah instalasi WordPress saya, berjalan sepenuhnya lokal dengan database yang sama dari situs live, dan data media disinkronkan.

Kesimpulan

Sepanjang seri ini, kami memperoleh banyak pengetahuan tentang OpenShift. Anda seharusnya tidak dapat dengan mudah menginstal dan mengkonfigurasi WordPress di OpenShift. Dengan bantuan rhc client, Anda dapat dengan cepat mengkonfigurasi atau melihat informasi aplikasi dari terminal.

Kami juga membahas skrip pembuatan dan penyebaran sehingga Anda dapat menyesuaikan aplikasi Anda dengan kebutuhan Anda seperti menunjukkan spanduk khusus, dan dorongan ke HipChat selama penyebaran. Anda bahkan dapat menyinkronkan data antara komputer lokal Anda dan OpenShift. Saya harap Anda menikmati tutorial dan OpenShift ini.

Meninggalkan komentar agar kami tahu kabar Anda. Jika Anda mengalami masalah, beri tahu saya di komentar, saya ingin membantu.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.