私は大人の人生のほとんどの部分でWebサイトのデザインとプログラミングを行ってきました。私はいつもこのソロをやっており、ほとんどがフリーランスで、単一のマシンから作業しています。
現在、コーディングとサイトの公開(FTP経由)にDreamweaverを使用しており、ライブサイトで直接作業しています。それは私の「ワークフロー」の範囲についてです。私は主にPHPとフレームワークCakePHPを使用しています。
より良い開発手法を採用するときがきたと思います。これが私が心に留めていることであり、私が支援を必要としています:
これらの問題を解決する方法についてのアドバイスやガイダンスをいただければ幸いです。私はさまざまな種類のワークフローについて読みましたが、私の特定のケースでは実際には何も意味がないようです。
前もって感謝します。
ワークフローを改善するために使用できるツールがいくつかあります。それらを一度にすべて採用する必要はありませんが、それらは協調して非常にうまく機能するため、最終的にそれらのほとんどを採用することを計画する必要があります。
これはかなり長くなりましたが、私は短期的に価値のあるさまざまな方向にあなたを向けようとしました。
TL; DR:「gitの使用を開始して、基本的なLinuxサーバーを快適に実行してください。これら2つを解決したら、差し迫った問題を解決し、次のステップを検討することができます。」
[〜#〜] vcs [〜#〜](git)
いくつかのバージョン管理システムを採用したい。ユビキタスなので、git
がデフォルトの選択です。 gitのようなVCSの採用は、自動デプロイメント、自動テスト、そして最終的には本格的な継続的統合(CI)のようなものの一種の前提条件です。手動でのデプロイにも役立ちます。リリースにタグを付けることについての少しの規律により、悪い変更のロールバックがはるかに簡単になり、予測可能になります。
真実の中心的な情報源としてリモートリポジトリを維持する必要があります。リモートリポジトリは、ローカルリポジトリのOrigin
リモートとして設定されます。座って仕事をすると、git pull
を使用して、コードの最新バージョンを入手してください。ローカルでコミットを行った後、git Push
をリモートに追加して、変更を他の場所で使用できるようにします。
そのリモートリポジトリを信頼できる場所でホストする必要があります。あなたはそれをいくつかのVPSに貼り付けてssh経由でそれにアクセスすることができますが、いくつかの素晴らしいツールをテーブルに残します。
すばやく簡単なソリューションは、bitbucket.orgでアカウントを作成することです。プライベートリポジトリを含む無料で、課題追跡などの素敵なWebインターフェイスが含まれています。
サードパーティのサービス[1]にコードを配置することを懸念している場合、またはVPSの管理を開始する機会が欲しい場合(時間と精神的な帯域幅がある場合は、これは素晴らしいことです)、月額$ 10のVPSとインストール GitLab Community Edition 。 GitHubに似ていますが、独自のサーバーで実行します。それはかなり素晴らしいです、そしてオムニバスインストーラーはインストールとアップデートを比較的簡単にします。
ソリンPの回答 で述べたように、GUIクライアントはgitで利用できます。 SourceTreeとGitHub Desktopはどちらも優れています。前者の方が好きです。つまり、CLIツールをプライマリインターフェイスとして使用してgitを実行する必要があります。 CLIはどこでも機能します。
Gitは少し怖いかもしれませんが、小さく始めて成長することができます。とはいえ、gitの動作の基本的な理解は非常に役立ちます。 Git From the Bottom Up はかなり素晴らしいです。最初のページの用語を理解することは不可欠です。
はじめに、少なくともgitの動作を理解し、基本的なサブコマンドclone
、checkout
、add
、rm
に精通している必要があります。 、status
、diff
、commit
、pull
、Push
。
開発
特にローカル環境がWindowsの場合は、ローカル仮想マシンを十分に使用することはお勧めできません。 VirtualBoxとVagrant ASAPをよく理解してください。これにより、デプロイメント環境によく似たローカル環境に対して開発を行うことができます。また、基本的なLinux管理者のスキルをすぐに活用できる優れた方法でもあります。
VirtualBoxの「共有フォルダー」機能を使用して、クライアント(仮想、Linux)マシン上のディレクトリがホスト(物理)マシン上のディレクトリにマップされるようにします。これは、仮想マシンが「ヘッドレス」で実行されていることを意味します。グラフィカルインターフェイスはなく、コンソールのみです。エディター/ IDE、gitクライアントなどはすべて日常のコンピューターで実行されますが、Webサーバー、PHPインタープリター、SQLデータベースなど)はすべて仮想マシン内で実行されます。
Editor/IDEに関する限り、好きなものを自由に使用できます。私はVimでコーディングする人を知っています。私は長い間、emacsのホールドアウトでした。他の人はより洗練されたIDEを好みます。そうは言っても、Dreamweaverが最適であるかどうかは非常に疑問です。
私のIDE PHPはPHPStormで選択できます。無料ではありませんが、高価ではありません。PHP生活のためにそれは非常に簡単なIMOです。それはgitを理解し、Niceデータベースクライアントが組み込まれており、xdebugによるデバッグは非常にうまく機能し、静的分析はなくてはならないものになります。
支払いが問題にならない場合は、通常、「EAP」ビルドを無料で入手できます。これは基本的に次のリリースのベータ版ですが、通常は非常に安定しています。
もう1つの方法は、無料で優れたNetBeansです。しかし、最後に確認したPHPStormほど洗練されていません。
もっと軽量なものを好むなら、Sublime Textのような多くの人々、そしてAtomのような新人(あるいは意外なことに、Visual Studio Code)が好きです。
結論:少なくとも1つまたは2つの代替エディター/ IDEをチェックするのに時間をかけます。 FTP統合のため、Dreamweaverにしがみついた人がほとんどです。しかし、とにかくこれに依存するべきではありません(以下を参照)。
導入
デプロイとは、サイトまたはアプリの新しいバージョンをサーバーにインストールすることです。選択する方法は、ホスティングインフラストラクチャの外観によって異なります。
VPSes
私は商品VPSのほぼすべてをホストします。プロバイダーはたくさんあります。 DigitalOceanとLinodeはこの混雑した分野で人気があります。 AmazonのAWSもVPS(「EC2」サービス)も提供していますが、初心者がそこから始めることはお勧めしません。 AWSは、自動化とオーケストレーションが必要なときに本当に威力を発揮しますが、コストを見積もるのは難しく、複雑さは威圧的です。
合理的にモダンなフレームワークベースのPHPプロジェクトをVPSに更新することのコアは、次のようになります(完全に手動で実行した場合):
localhost$ ssh [email protected]
myvps$ cd /path/to/project
myvps$ git pull
myvps$ composer install
これはベストプラクティスと呼ばれるものではありませんが、展開プロセスがそのように見えるようになった場合、FTP経由で同期を試みるよりもはるかに先に進んでいます。
そこから、導入ツールの調査を開始できます。 Capitstrano は祖父ですが、他にも存在します。これらのツールは物事を自動化するので、人よりも少し賢くなります。たとえば、capistranoはソースの正しいバージョンをローカルでチェックアウトし、それらをバンドルしてサーバーに送信し、タイムスタンプ付きのディレクトリに展開してから、シンボリックリンクを操作して、ウェブルートに新しいバージョンを指定します。これにより、シンボリックリンクを以前のバージョンにスワップバックするのと同じくらい簡単にロールバックできます。これらのツールを読むことは間違いなく価値があります。彼らはあなたのニーズに対してやり過ぎかもしれないし、そうでないかもしれません。
もう1つの使い慣れたツールは rsync です。 Rsyncの仕事は、ファイルのツリーを効率的に同期することであり、それについて非常に優れています。サーバーでgitを実行したくない場合は、ローカルのgitとrysncを中心に独自のデプロイプロセスを構築して、チェックアウト(またはgit archive
)ソースのローカルツリー。必要なビルドプロセスを実行します(たとえば、composer install
)、そしてすべてをサーバーにrsyncします。
これらのツールはいずれも、簡単なシェルスクリプトを使用して、自動展開を構築するために使用できます。新しいリリースをプッシュ(またはプル)し、問題が発生した場合に簡単にロールバックできるスクリプトを作成することをお勧めします(カピストラーノスタイルのシンボリックリンクのトリックは、始めるのに最適です) 。
非VPS環境
私はこれらについて実際に話すことはできません。使い慣れた昔ながらの共有ホスティングがあり、シェルアクセスのないSSHにかなり制限されています。 PHPにはHerokuに似たplatform-as-a-serviceのサービスもありますが、私はそのアイデアを気に入りました。
とはいえ、共有ホスティングと完全に結婚している場合は、適切なCLI FTPクライアントを使用して、rsyncスタイルのワークフローを概算できる可能性があります。
データベースはどうですか?
コードのデプロイは素晴らしいですが、新しいコードリリースでは、ある種のデータベースの変更が必要な場合があります(たとえば、テーブルの新しい列や、修正したバグのアーティファクトを修正する更新など)。
これはより複雑になります(特にロールバックについて考える場合)が、役立つツールがあります。私は PHPmig と Doctrine Migrations の両方を使用して大きな成功を収めましたが、他にもあります。
ここでの基本的な考え方は、小さな移行クラスを作成し、移行ツールで実行する必要があるクラスを追跡して実行することです。あなたの小さなbashスクリプトは、どこかにphpmig migrate
したがって、デプロイを実行すると、保留中のDB移行が自動的に実行されます。
[1]ほとんどの人はIMOを気にする必要はありませんが、私はあなたの状況、政治、または妄想のレベルを知りません。
私の推奨するコンボは:
Netbeans IDE
Git
リポジトリーをdev.address.com
に使用しますaddress.com
リポジトリからdev.address.com
への差分のみをデプロイしますGIT FTPを使用すると、複数のサーバーに変更をデプロイするための複数のプロファイルを使用できます。
必要に応じて、SourceTree
リポジトリへのNiceグラフィカルインターフェイスにGit
またはGitHub Desktop
を使用できます。
コンピューターを BitTorrent Sync で同期させます(現在は「Resilio」に名称が変更されていますが、個人向けの無料バージョンはあなたが望んでいるものです)。LAN上で動作し、中央サーバーはなく、非常に高速です。デバイスを切り替えるシングルユーザーに最適です。
または、Dropboxを使用します。これは、非常に簡単です。大きなPSTが既に縮小されている設計フェーズを超えたコーディングフェーズのWebプロジェクトは、ほとんどスペースをとらないため、無料のDropboxで十分です。また、重要なものはバックアップされ続けました。災害が起こります。
各プロジェクトでgitを使用すると、最終的には以前のバージョンを再開するためにそれを使用する方法を学習します(おそらくいくつかの不足しているHEAD/multiple HEAD惨事を伴うでしょう方法)しかし、今のところは、git init .
およびgit commit
仕事。それが、昨日からではなく、今から始めるべきことです。
Gitは、チームでの作業のほとんどの問題を処理します。チームがそれを使用する方法を知ったら。
作業バージョンのデータベースダンプ(.sqlファイル)を保持し、それらをgitリポジトリに追加し、適切なデータベースにアップロードするスクリプトも追加します。