Bagaimana saya bisa memperbarui situs saya tanpa memaksa pengguna untuk menunggu?

8

Downtime tidak nyaman bagi pengguna dan saat ini mereka harus menunggu kapan mesin situs sedang ditingkatkan. Selain itu, ketika menggunakan skrip off-the-shelf ada risiko bahwa perubahan pengaturan tidak akan berfungsi dengan baik sebagaimana dimaksud (bahkan jika mereka telah diuji pada situs pementasan).

Bagaimana saya bisa menyimpan beberapa versi situs di server dan beralih di antara mereka tanpa menyebabkan downtime (misalnya dengan file htaccess)?

agar-agar
sumber

Jawaban:

6

Apakah Anda menggunakan mesin Linux / BSD? Jika demikian, Anda dapat dengan mudah menggunakan tautan simbolis untuk mencapai tujuan ini.

Buat Versi 1 situs di sini:

/var/www/www.example.org.v1

Buat tautan simbolis yang menunjuk ke direktori ini

cd /var/www
ln -s www.example.com.v1 www.example.com

Ini akan memberi Anda daftar direktori ( ls -la) yang terlihat seperti ini:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

Tetapkan server web Anda untuk digunakan /var/www/www.example.comsebagai root dokumennya. Anda tidak perlu mengubah ini; semua pengarahan ulang akan dilakukan pada level sistem file.

Sekarang, ketika Anda ingin bertukar dalam Versi 2 situs yang harus Anda lakukan adalah menempatkan versi baru di:

/var/www/www.example.org.v2

Dan perbarui tautan simbolis untuk menunjuk ke versi ini:

ln -sfh www.example.com.v2 www.example.com

Yang akan membuat output direktori Anda terlihat seperti ini:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

Seperti yang Anda lihat, tautan simbolis www.example.com sekarang menunjuk ke Versi 2 situs Anda. Ini adalah operasi atom dan tidak boleh menyebabkan downtime terkait dengan file yang tidak tersedia.

Tentu saja, masih ada kerumitan yang diperlukan dalam memastikan bahwa struktur basis data diperbarui, semua sumber daya statis tersedia (dan ditautkan ke versi yang benar), dll, tetapi setidaknya ini memastikan bahwa semua sumber daya yang tepat untuk situs baru tersedia secara instan.

Windows Vista dan Server 2008 juga mendukung tautan simbolik menggunakan mklinkperintah, meskipun saya tidak punya pengalaman langsung dengan mereka.

JasonBirch
sumber
7

Anda dapat menggunakan host virtual di apache untuk memiliki 2 versi kode pada 2 url berbeda. Contoh yang umum digunakan adalah:

test.example.com -> /var/www/version1.2

www.example.com -> /var/www/version1.1

keduanya berada di server yang sama, tetapi mungkin hanya satu yang dapat diakses oleh dunia. Setelah Anda puas bahwa test.example.com berfungsi, Anda dapat mengubah di mana mereka menunjuk pada konfigurasi apache dan ... presto. Situs baru, kode baru. Dengan asumsi tidak ada perubahan skema database ini harus berfungsi. Jadi setelah Anda melakukan perubahan, itu akan menjadi:

test.example.com -> / var / www / newtestversion

www.example.com -> /var/www/version1.2

Berikut adalah contoh config direktif apache untuk host virtual:

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

Untuk info lebih lanjut tentang cara melakukan ini, lihat dokumentasi host virtual apache

Saya tidak yakin bagaimana melakukan ini di IIS, tetapi saya membayangkan ada juga caranya.

Jika terjadi kesalahan, alihkan host virtual kembali ke aslinya, dan situs lama Anda kembali ... tidak ada masalah. Anda harus memulai ulang apache agar perubahan ini dapat diterapkan, tetapi itu umumnya hal yang sangat cepat untuk dilakukan.

gabe
sumber
0

Apa yang saya sarankan:

  • Uji secara lokal di server pengembangan sebelum mengunggah perubahan apa pun. Jangan membuat perubahan pada server langsung sampai Anda cukup yakin itu berfungsi pada server pengujian.
  • Lakukan perawatan pada waktu lalu lintas paling sedikit. Untuk sebagian besar situs web, ini akan dilakukan pada dini hari di akhir pekan. Jika akhir pekan bukan pilihan, maka lakukanlah selama waktu paling tidak diperdagangkan Anda selama seminggu.
  • Peringatkan pengguna Anda tentang pemeliharaan terjadwal sebelumnya.
Virtuosi Media
sumber
Apakah ada cara untuk hanya mengatur beberapa versi dan beralih dengan mulus di antara mereka?
Gelatin
Saya belum pernah melakukannya sebelumnya, tetapi saya akan membayangkan Anda bisa melakukannya melalui multi-server atau server virtual. Jika itu yang Anda cari, itu mungkin berakhir dengan pertanyaan yang lebih baik untuk ServerFault.
Virtuosi Media
@Simon: Ya, gunakan WampServer dan instal berbagai modul untuk berbagai versi Apache, PHP, dan MySQL agar sesuai dengan server langsung - wampserver.com/en
DisgruntledGoat