アプリケーションをクリーンなUbuntにデプロイします:AからZ

したがって、純粋なUbuntuがあり、サーバーへのssh接続がコンソールで開かれ、コンソールは魅力的に招待します-「root @ my-awesome-host:〜#」-これ以上何もありません。 そして、私は世界中のある種の鉄道アプリケーションを走らせて見せたいと思っています。 スープからナッツに行きましょう。


家を建てる


システムにはまだユーザーさえいません。 はい、ほとんどの場合、ホスト名も上記の例ではなく、「56-78-vps-small」のようなものです。 注文ではありません。

変更:

#> nano /etc/hostname
#> nano /etc/hosts

再起動:

shutdown -r now

システムが起動するのを待っています。 ファイアウォールルールをすぐに追加します。

#> nano /etc/rc.local

# Drop all incoming traffic<br>
/sbin/iptables -P INPUT DROP<br>
# Drop all forwarded traffic<br>
/sbin/iptables -P FORWARD DROP<br>
# Allow all outgoing traffic<br>
/sbin/iptables -P OUTPUT ACCEPT<br>
# Allow returning packets<br>
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br>
# Allow incoming traffic on port 80 for web server<br>
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br>
# Allow local traffic<br>
/sbin/iptables -A INPUT -i lo -j ACCEPT<br>
# Allow incoming SSH on port 22<br>
/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT<br>
# Allow ping<br>
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT<br><br>

exit 0


風水では、構成を別のファイルに保存し、別のコマンドで復元できます。 しかし、そうかもしれません:)吸い込む:

#> /etc/rc.local

私達は試みます:

#> asdlkjflaskdjf

文字が表示されている場合-息を吐き、彼らは座っていた枝を切り倒しませんでした(ルールとのssh接続を閉じなかった)。 続けましょう。

#> adduser deployer<br>
#> adduser eugzol<br>
#> adduser eugzol sudo


パスワードを覚えてください。

デプロイヤの下では、すべてのwwwが機能します。 eugzolの下で、sshを使用します(お気に入りのユーザー名を選択します)。 私たちは去り、私たちは来ます...

root@my-awesome-host#> exit<br>
eugzol@home$> ssh my-awesome-host<br>
eugzol@my-awesome-host$> sudo echo test


すべてがうまくいく-良い。 キーを追加します。

$> mkdir .ssh<br>
$> echo "ssh-rsa ........... == eugzol@home" > .ssh/authorized_keys<br>
$> chmod 700 .ssh<br>
$> cd .ssh<br>
$> chmod 600 *


接続を切断し、パスワードを要求するべきではありません。 同様に、キーをデプロイヤーユーザーに追加します。

カラーコンソールが好きな場合は、.bashrcの対応する行からコメントマークを削除します。

$> nano ~/.bashrc<br>
# ...<br>
force_color_prompt=yes<br>
...


パッケージ、パッケージ、パッケージ


便利なものはすべて事前に用意しています。 まあ、多分彼らは何かを忘れてしまった、それは怖くない、我々は後で状況を追加します

Rubyをビルドするには:
$> sudo apt-get -y install build-essential zlib1g zlib1g-dev libxml2 libxml2-dev libxslt-dev sqlite3 libsqlite3-dev locate git-core

MySQL(rootパスワードを覚えておいてください):
$> sudo apt-get -y install mysql-server libmysqlclient-dev

Passengerを構築するには:
$> sudo apt-get -y install libcurl4-openssl-dev

アプリケーションを展開する


$> sudo su deployer

次に、ディレクトリ構造を作成します。
/ホーム/デプロイヤ/リポジトリ-gitリポジトリ
/ホーム/デプロイヤ/プロジェクト-プロジェクトの作業コピー

$> mkdir repos<br>
$> mkdir projects


こする:

$> bash < <(curl -s rvm.beginrescueend.com/install/rvm)

最後に彼が書いたものを見る。 ただし、2つのことが重要です。
-おそらく、指定された行を.bashrcに追加する必要があります(まだない場合)
-おそらく、すべてのパッケージが指定されたパッケージから以前に配信されたわけではありません。 一歩戻って配信する必要があります

続けましょう。

$> rvm install 1.8.7

このバージョンのRubyが必要でした。 あなたが別のメインバージョンを持っている場合-別のものを入れてください。

次に、アプリケーションをインストールする方法、たとえば、ロールオンレールを見てみましょう。 科学によると、これをCapistranoまたは同様のツールでラップする必要があります。 しかし、初心者にとっては、簡単な方法で行うことができます。

そして最後に:

$> echo "gem: --no-rdoc --no-ri" > ~/.gemrc"

そのため、rubygemsによってドキュメントのインストールが遅くなることはありませんが、それでもローカルコンピューターからは誰も見ていません。

$> rvm use 1.8.7<br>
$> rvm gemset use global<br>
$> gem install bundler


リポジトリと作業ディレクトリ

cd ~/repos<br>
git init --bare rolling-on-rails.git


次に、プロジェクトディレクトリ内のローカルマシンで:

eugzol@home$> git remote add my-awesome-host ssh://deployer@my-awesome-host.ru/home/deployer/repos/rolling-on-rails.git<br>
eugzol@home$> git push my-awesome-host master


リモートに戻ります。

cd ~/projects<br>
mkdir rolling-on-rails<br>
cd rolling-on-rails<br>
git init<br>
git remote add local /home/deployer/repos/rolling-on-rails.git<br>
git fetch local<br>
git checkout master


プロジェクトのファイルがディレクトリに表示されます。

ベースをセットアップする

mysql -u root -p

パスワードを入力してください。

mysql> create user 'rolling-on-rails'@'localhost' identified by 'sakdl5&%1';<br>
mysql> create database rolling-on-rails charset utf8 collate utf8_bin;<br>
mysql> grant all on rolling-on-rails.* to 'rolling-on-rails'@'localhost';


構成を作成します。

cd ~/projects/rolling-on-rails<br>
echo "production:<br>
adapter: mysql<br>
host: localhost<br>
database: rolling-on-rails<br>
username: rolling-on-rails<br>
password: sakdl5&%1<br>
encoding: utf8" > config/database.yml


ジェムズアンドゴー!

$> echo "rvm 1.8.7@rolling-on-rails > .rvmrc"<br>
$> rvm gemset create rolling-on-rails<br>
$> cd ..<br>
$> cd rolling-on-rails


RVMは、.rvmrcに記述した内容を信頼するかどうかを尋ねます。 自分でこの行を思いついたのではなく、オープンネットワークのソースからコピーし、これらのインターネットサイトの構成ファイルに書き込むために何を提供するのかを知っているので、もう一度読み直します。

$> rvm info

もう一度、Rubyとgemsetの正しいバージョンがあることを確認します。

$> bundle install<br>
$> RAILS_ENV=production rake db:migrate<br>
$> RAILS_ENV=production rake db:seed


すべてが機能するかどうかを確認します。

乗客を置きます


一時的なデプロイヤをsudoグループに追加します。

eugzol@my-awesome-host$> sudo adduser deployer sudo<br>
sudo su deployer


インストール自体:

cd ~/projects/rolling-on-rails<br>
gem install passenger<br>
rvmsudo passenger-install-nginx-module


インストーラーに指示-すべてをダウンロードしてインストールします。

nginxログの場所を作成します。

mkdir ~/nginx

設定ファイルの編集:

cd /opt/nginx/conf<br>
sudo nano nginx.conf


最終的に、 http://pastie.org/2625120のようなものが得られます。

initスクリプトを配置します。

cd<br>
git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git<br>
sudo mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx<br>
sudo chown root:root /etc/init.d/nginx


pidファイルへのパスを変更します。

$> sudo nano /etc/init.d/nginx
...<br>
PIDSPATH=/home/deployer/nginx<br>
...


私たちはチェックします:

$> sudo service nginx configtest
$> sudo service nginx start

IPまたはドメイン名でブラウザからサーバーにアクセスします。 「nginxへようこそ!」プロンプトが表示されます。

アプリケーション構成を追加します。

$> cd /opt/nginx/conf<br>
$> sudo su<br>
#> mkdir sites-available<br>
#> mkdir sites-enabled<br>
#> nano sites-available/rolling-on-rails.conf


http://pastie.org/2625166のようなものをそこに追加します。

含まれるもの:

#>cd sites-enabled<br>
#> ln -s ../sites-available/rolling-on-rails.conf .


再起動:

#> service nginx reload

rolling-on-rails.ruにアクセスします。 すべてが正しく行われていれば、作業アプリケーションを楽しんでいます。

尾をきれいにします


残りのゴミを削除します。

deployer@my-awesome-host$> rm -rf ~/rails-nginx-passenger-ubuntu
deployer@my-awesome-host$> exit

デプロイヤユーザーをsudoグループから削除します。

eugzol@my-awesome-host$> sudo nano /etc/group

「sudo:x:27:eugzol、deployer」のような行を「sudo:x:27:eugzol」に変更します。

exit

すべてが機能している間に他のことをやっています:)

PSこのトピックは、主にeugzol habrayuzerと私の小さな追加で書かれたので、カルマにすべての質問とプラスを送信する方が良い

Source: https://habr.com/ru/post/J129817/


All Articles