- 投稿日:2021-02-26T23:51:33+09:00
[Linux(Ubuntu)]タイムゾーンを日本時間にする4つの方法まとめ
Zennにも筆者本人が転載済
環境
Ubuntu18をVirtualbox/Vagrantの仮想環境で動かしている。
$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic設定方法(4つ)
(1)/etc/localtimeを変更
$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime上記だけで他のユーザーも同様のタイムゾーンに設定される。
(2)環境変数TZを設定
$ export TZ="Asia/Tokyo"上記の設定は現在のユーザーにしか適用されない。
(試しに現在のユーザーで上記の環境変数を設定した後にrootになってからuptimeコマンドを打ってみればわかる。)(3)tzselectコマンドから選択
上記のように質問が来るので数字を入力してEnterすることで選択を進めていく。
上記の
TZ='Asia/Tokyo'; export TZを~/.bash_profileに於けばそのホームディレクトリのユーザーのタイムゾーンは変更される。
(4)tzconfig(もしくはdpkg-reconfigure tzdata)
$ tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdatatzconfigは最近のLinuxディストリビューションでは使えないみたい。。。なのでお勧めされている『dpkg-reconfigure tzdata』を使ってみよう。
-- rootユーザーに切り替えてからやるかsudoでやるように $ sudo dpkg-reconfigure tzdata下記のようにカラフルな選択画面が出てくる。
上記で選択をしていけば、どのユーザーでもタイムゾーンは統一される。
本日は以上です。
- 投稿日:2021-02-26T23:51:33+09:00
[Linux(Ubuntu)]タイムゾーンを日本時間にする5つの方法まとめ
Zennにも筆者本人が転載済
環境
Ubuntu18をVirtualbox/Vagrantの仮想環境で動かしている。
$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic設定方法(5つ)
(1)/etc/localtimeを変更
$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime上記だけで他のユーザーも同様のタイムゾーンに設定される。
(2)環境変数TZを設定
$ export TZ="Asia/Tokyo"上記の設定は現在のユーザーにしか適用されない。
(試しに現在のユーザーで上記の環境変数を設定した後にrootになってからuptimeコマンドを打ってみればわかる。)(3)tzselectコマンドから設定すべきタイムゾーンを知る
tzselect自体はタイムゾーンの値を確認するための対話コマンド。
上記のように質問が来るので数字を入力してEnterすることで選択を進めていく。
上記の
TZ='Asia/Tokyo'; export TZを~/.bash_profileに於けばそのホームディレクトリのユーザーのタイムゾーンは変更される。
もしくは/etc/timezoneに
Asia/Tokyoを記入する。(これで全ユーザーに適用される)
(4)tzconfig(もしくはdpkg-reconfigure tzdata)で設定
$ tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdatatzconfigは最近のLinuxディストリビューションでは使えないみたい。。。なのでお勧めされている『dpkg-reconfigure tzdata』を使ってみよう。
-- rootユーザーに切り替えてからやるかsudoでやるように $ sudo dpkg-reconfigure tzdata下記のようにカラフルな選択画面が出てくる。
上記で選択をしていけば、どのユーザーでもタイムゾーンは統一される。
(5)timedatectlで設定
$ timedatectl set-timezone Asia/Tokyo$ cat /etc/timezone Asia/Tokyo問題なく全ユーザーのタイムゾーン設定が出来ている。
ちなみに余談だがtimedatectlコマンドを用いれば下記でタイムゾーン表記の確認も出来る。
$ timedatectl list-timezones | grep -i tokyo Asia/Tokyo※『grep -i』は大文字小文字を区別せずに文字検索する
本日は以上です。
- 投稿日:2021-02-26T23:51:33+09:00
[Linux(Ubuntu)]タイムゾーンを日本時間にする5つの方法まとめG
Zennにも筆者本人が転載済
環境
Ubuntu18をVirtualbox/Vagrantの仮想環境で動かしている。
$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic設定方法(5つ)
(1)/etc/localtimeを変更
$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime上記だけで他のユーザーも同様のタイムゾーンに設定される。
(2)環境変数TZを設定
$ export TZ="Asia/Tokyo"上記の設定は現在のユーザーにしか適用されない。
(試しに現在のユーザーで上記の環境変数を設定した後にrootになってからuptimeコマンドを打ってみればわかる。)(3)tzselectコマンドから設定すべきタイムゾーンを知る
tzselect自体はタイムゾーンの値を確認するための対話コマンド。
上記のように質問が来るので数字を入力してEnterすることで選択を進めていく。
上記の
TZ='Asia/Tokyo'; export TZを~/.bash_profileに於けばそのホームディレクトリのユーザーのタイムゾーンは変更される。
もしくは/etc/timezoneに
Asia/Tokyoを記入する。(これで全ユーザーに適用される)
(4)tzconfig(もしくはdpkg-reconfigure tzdata)で設定
$ tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdatatzconfigは最近のLinuxディストリビューションでは使えないみたい。。。なのでお勧めされている『dpkg-reconfigure tzdata』を使ってみよう。
-- rootユーザーに切り替えてからやるかsudoでやるように $ sudo dpkg-reconfigure tzdata下記のようにカラフルな選択画面が出てくる。
上記で選択をしていけば、どのユーザーでもタイムゾーンは統一される。
(5)timedatectlで設定
$ timedatectl set-timezone Asia/Tokyo$ cat /etc/timezone Asia/Tokyo問題なく全ユーザーのタイムゾーン設定が出来ている。
ちなみに余談だがtimedatectlコマンドを用いれば下記でタイムゾーン表記の確認も出来る。
$ timedatectl list-timezones | grep -i tokyo Asia/Tokyo※『grep -i』は大文字小文字を区別せずに文字検索する
本日は以上です。
- 投稿日:2021-02-26T21:27:12+09:00
Couldn't serve files through port 8081, AWS EC2 Ubuntu 18.04 Instance
Issue
Was setting up a simple website for fun/practice on Ubuntu 18.04, using Apache2 as the web server. I then wanted to work on another website, so I thought I would work on it through a different port than the one for the first (443/HTTPS), and tried it with a random port 8081.
For some strange reason, I couldn't get it to work. I checked the access logs for my instance from AWS, and the requests via port 8081 were getting in, but the web server was not responding.
TL,DR; (Solution)
Turns out I had set up a separate firewall within the Ubuntu instance that I had completely forgotten about.
Once I figured that out, fixing it was easy:sudo ufw allow 8081
If you try troubleshooting firewall issues with AWS instances, most of the guides/ knowledge online tells you to look at the settings in AWS, since those should be the only ones that matter.
But if you're like me and followed Apache tutorials that told you to set up a firewall within the server, and then you just forgot you did that, chances are you might've forgotten that you need to edit those firewalls.
So I wrote this as a friendly reminder that this might be something you have to check, since I didn't see it anywhere else :)
- 投稿日:2021-02-26T21:13:41+09:00
EC2インスタンスにRails + MySQL環境構築
はじめに
AWS
のEC2インスタンス
立ち上げたところからのサーバー構築手順です。・設定用のツールをインストール
・Node.jsをインストール
・Yarnをインストール
・rbenvとruby-buildをインストール
・Rubyをインストール
・MariaDBをインストール(サーバーにDB設定する場合)
・Githubとの接続
・Unicornをインストール
・Githubからコードをクローン
・gemをインストール
・環境変数の設定
・アセットファイルをコンパイル
・本番環境でRailsを起動ここまではアプリケーションサーバー構築。
WEBサーバー構築は以下。
EC2サーバーにRails + Nginx設定用のツールをインストール
yum
というコマンドを使ってこのサーバに元々あるプログラムをアップデートします。$ sudo yum -y update環境構築に必要なパッケージを諸々インストール。(長いコマンド)
$ sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl libcurl-devel curlNode.jsをインストール
サーバーサイドで動く
JavaScript
のパッケージです。$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash - $ sudo yum -y install nodejsYarnをインストール
Rails
に搭載されているJavaScriptのパッケージを管理するためのパッケージマネージャです。$ sudo yum -y install wget $ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo $ sudo yum -y install yarnrbenvとruby-buildをインストール
rbenv
とruby-build
は、Ruby
のバージョンを管理する際に組み合わせて使うツールになります。これらはRuby
をインストールする前に、インストールする必要があります。
ruby-build
はrbenv
のプラグインであり、ruby-build
によってRuby
の様々なバージョン(2.0.0など)をインストールすることができます。
rbenv
を使用することでruby
のバージョンを切り替えることできます。#rbenvのインストール $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv #パスを通す(どのディレクトリからもアプリケーションを呼び出せる状態にする) $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile #rbenvを呼び出すための記述 $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #.bash_profileの読み込み $ source .bash_profile #ruby-buildのインストール $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build #rehashを行う $ rbenv rehashRubyをインストール
Ruby
のインストールには時間がかかります。$ rbenv install 2.6.5 $ rbenv global 2.6.5 #EC2インスタンス内で使用するRubyのバージョンを決める $ rbenv rehash #rehashを行う $ ruby -v # バージョンを確認※
AWS RDS
を使用する場合はMariaDB関連操作
は不要。MariaDBをインストール(サーバーにDB設定する場合)
Amazon Linux 2
を利用している場合、MariaDB
はyum
コマンドからインストールすることができます。$ sudo yum -y install mysql56-server mysql56-devel mysql56 mariadb-server mysql-devel○○○利用できませんと表示されますが問題ありません。
データベースを起動
データベースを起動するために
systemctl
コマンドを利用します。これは、Amazon Linux
やCentOS
に含まれているもので、インストールしたソフトウェアの起動を一括して行えるツールです。$ sudo systemctl start mariadb $ sudo systemctl status mariadb #起動できたか確認データベースのrootパスワードの設定
yum
でインストールしたMariaDB
には、デフォルトで root というユーザーでアクセス出来るようになっていますが、パスワードは設定されていません。パスワードを設定していきます。$ sudo /usr/bin/mysql_secure_installation対話形式でパスワードを設定します。
データベースへの接続確認
$ mysql -u root -pパスワードを入力するように表示されるので、先程設定したパスワードを入力して、Enterしてください。
Githubとの接続
EC2サーバのSSH鍵ペアを作成
$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ec2-user/.ssh/id_rsa. Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub. The key fingerprint is: 3a:8c:1d:d1:a9:22:c7:6e:6b:43:22:31:0f:ca:63:fa ec2-user@ip-172-31-23-189 The key's randomart image is: +--[ RSA 4096]----+ | + | | . . = | | = . o . | | * o . o | |= * S | |.* + . | | * + | | .E+ . | | .o | +-----------------+全て何も入力せずにEnterキーで進んでください。
生成されたSSH公開鍵を表示し、値をコピーします。
$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2E......catで表示させた公開鍵を、Githubにアクセスして登録していきます。
https://github.com/settings/keys①Titleは自由に記入
②Keyに公開鍵をペースト
③Add SSH Key
を押して保存Githubに鍵を登録できたら、SSH接続できるか以下のコマンドで確認
$ ssh -T git@github.com Hi <Githubユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.Permission denied (publickey). と表示された場合は、SSH鍵の設定が間違っているので、作業を確認してください。
アプリケーションサーバの設定
アプリケーションサーバとは、ブラウザからの「リクエスト」を受け付けRailsアプリケーションを実際に動作させるソフトウェアのことです。
Unicornをインストール
ローカル環境のGemfile を編集
group :production do gem 'unicorn', '5.4.1' endローカルのターミナルで
% bundle installconfig/unicorn.rbを作成し、内容を以下のように編集
#サーバ上でのアプリケーションコードが設置されているディレクトリを変数に入れておく app_path = File.expand_path('../../', __FILE__) #アプリケーションサーバの性能を決定する worker_processes 1 #アプリケーションの設置されているディレクトリを指定 working_directory app_path #Unicornの起動に必要なファイルの設置場所を指定 pid "#{app_path}/tmp/pids/unicorn.pid" #ポート番号を指定 listen 3000 #エラーのログを記録するファイルを指定 stderr_path "#{app_path}/log/unicorn.stderr.log" #通常のログを記録するファイルを指定 stdout_path "#{app_path}/log/unicorn.stdout.log" #Railsアプリケーションの応答を待つ上限時間を設定 timeout 60 #以下は応用的な設定なので説明は割愛 preload_app true GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true check_client_connection false run_once = true before_fork do |server, worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect! if run_once run_once = false # prevent from firing again end old_pid = "#{server.config[:pid]}.oldbin" if File.exist?(old_pid) && server.pid != old_pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH => e logger.error e end end end after_fork do |_server, _worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection endGithubからコードをクローン
EC2サーバーにSSH接続後に以下の操作
#mkdirコマンドで新たにディレクトリを作成 $ sudo mkdir /var/www/ #作成したwwwディレクトリの権限をec2-userに変更 $ sudo chown ec2-user /var/www/ #移動 $ cd /var/www/ #Githubから「リポジトリURL」を取得しクローンします $ git clone https://github.com/<ユーザー名>/<リポジトリ名>.gitSwap(スワップ)領域作成
Swap領域は、メモリが使い切られそうになった時にメモリの容量を一時的に増やすために準備されるファイルです。
EC2はデフォルトではSwap領域を用意していないため、これを準備することでメモリ不足の処理エラーを防ぎます。
$ cd $ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512 # しばらく待って、以下のように表示されれば成功 512+0 レコード入力 512+0 レコード出力 536870912 バイト (537 MB) コピーされました、 7.35077 秒、 73.0 MB/秒 $ sudo chmod 600 /swapfile1 $ sudo mkswap /swapfile1 # 以下のように表示されれば成功 スワップ空間バージョン1を設定します、サイズ = 524284 KiB ラベルはありません, UUID=74a961ba-7a33-4c18-b1cd-9779bcda8ab1 $ sudo swapon /swapfile1 #右へ長いコマンドです $ sudo sh -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'gemをインストール
rbenvでインストールされたRubyが使われているかチェック
$ cd /var/www/<アプリ名> $ ruby -v ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]本番環境でgemを管理するためのbundlerをインストールして、bundle installを実行
ローカル環境でバージョン確認。
#ローカル環境 アプリのディレクトリで以下を実行 % bundler -v Bundler version 2.1.4ローカルと同じバージョンをEC2サーバー上で以下のコマンド
# ローカルで確認したbundlerのバージョンを導入する $ gem install bundler -v 2.1.4 $ bundle install環境変数の設定
環境変数は、Railsからは
ENV['<環境変数名>']
という記述でその値を利用することができます。今回は、SECRET_KEY_BASE
という環境変数を指定していきます。$ rake secret 69619d9a75b78f2e1c87ec5e07541b42f23efeb6a54e97da3723de06fe74af29d5718adff77d2b04b2805d3a1e143fa61baacfbf4ca2c6fcc608cff8d5a28e8dこの長い英数の羅列は、この後利用するのでコピーしておきます。
環境変数は
/etc/environment
というファイルに保存することで、サーバ全体に適用されます。$ sudo vim /etc/environment#前章で設定したデータベースのrootユーザーのパスワードを入力 DATABASE_PASSWORD='データベースのrootユーザーのパスワード' SECRET_KEY_BASE='先程コピーしたsecret_key_base'書き込みができたら esc(エスケープキー)を押下後、
:wq
と入力して内容を保存します。
保存できたら環境変数を適用するために一旦ログアウト。$ exit logout Connection to 52.xx.xx.xx closed.再度ログイン。
$ ssh -i [ダウンロードした鍵の名前].pem ec2-user@[作成したEC2インスタンスと紐付けたElastic IP]環境変数が適用されているか確認
$ env | grep SECRET_KEY_BASE SECRET_KEY_BASE='secret_key_base' $ env | grep DATABASE_PASSWORD DATABASE_PASSWORD='データベースのrootユーザーのパスワード'ポートを開放
config/unicorn.rb
にlisten 3000
と記述しましたが、これはRailsのサーバを3000番ポートで起動するということを意味します。EC2インスタンスの
セキュリティグループ
を編集しカスタムTCP
でポート3000を許可してください。database.ymlの本番環境の設定
config/database.yml(ローカル)
を以下のように設定。<<: *default database: ~~~(それぞれのアプリによって異なる) username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock※
RDS
など使用の場合はまた異なります。ローカルでの編集をコミットして、GitHubにプッシュし、EC2へ再度クローンします。
$ git pull origin masterデータベースを作成しマイグレーションを実行
EC2サーバー上で以下のコマンド。
$ rails db:create RAILS_ENV=production Created database '<データベース名>' $ rails db:migrate RAILS_ENV=productionもしデータベースが起動していないときは
sudo systemctl start mariadbアセットファイルをコンパイル
本番モードでは、事前にアセットをコンパイルする必要があります。
$ rails assets:precompile RAILS_ENV=production本番環境でRailsを起動
unicorn のgemをインストールしていると
unicorn_rails
というコマンドが使えるようになっています.
ローカルでいうrails s
にあたります。Unicornのプロセスを確認
$ ps aux | grep unicorn ec2-user 17877 0.4 18.1 588472 182840 ? Sl 01:55 0:02 unicorn_rails master -c config/unicorn.rb -E production -D ec2-user 17881 0.0 17.3 589088 175164 ? Sl 01:55 0:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D ec2-user 17911 0.0 0.2 110532 2180 pts/0 S+ 02:05 0:00 grep --color=auto unicorn「unicorn_rails master」と表示されているプロセスがあれば
kill
コマンドで停止してください。$ kill <確認したunicorn rails masterのPID>unicornを起動
$ cd /var/www/[リポジトリ] $ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
RAILS_SERVE_STATIC_FILES=1
は、コンパイルされたアセットをRailsが見つけられるような指定です。ブラウザで確認
http://<Elastic IP>:3000/で正常に表示されれば成功です。
うまく表示されない場合
エラーが起こっているのでログを確認。
$tail -f /var/www/<アプリ名>/log/production.logまたは/var/www/<リポジトリ名>/log/unicorn.stderr.logをlessまたはcatコマンドで確認。
設定は以上です。
- 投稿日:2021-02-26T19:51:39+09:00
#ターミナルをかっこよくする
プロンプト
.bashrcPS1='\[\e[30;47m\] \u \[\e[37;46m\] \W \[\e[0m\]\$'$ source ~/.bashrc説明
[\e[ 0x;3x;4x m]]の中身の文法書体,文字色,背景色の順位に;で区切る
エスケープシーケンス00 普通 01 ボールド 02 細字 03 イタリック 04 アンダーライン 05 点滅 3x 文字色 4x 背景色 x0 黒 x1 赤 x2 緑 x3 黄 x4 青 x5 紫 x6 水 x7 灰変数の説明
\h ホスト名 パソコンの名前 \u ユーザ名 \w カレントディレクトリ絶対パス \W カレントディレクトリ相対パス \t 時間 24h \T 時間 12h \@ 時刻PM AM \d 日付 \D タイプスタンプ \D{}として%y,%m,%d,%H,%M,%Sの引数をとれる \# コマンド番号 \n 改行する \$ $ or #の表示 末尾に入れるべきひとまずここまで
参考
- 投稿日:2021-02-26T15:43:47+09:00
カレントディレクトリ以下に、「ディレクトリを指し示しているシンボリックリンク」が存在しているか調べる
もともと2014年4月28日に別のところに書いていた記事を、備忘的に持ってきたものです。
方法
find -type l -and -xtype d
-xtype
の指定は、シンボリックリンクを辿った先のファイルがどのような属性であるかを調べる1。そのため、ファイル自体がシンボリックリンクであり(-type l
)、かつそれを辿った先がディレクトリである(-xtype d
)という条件で検索すればよい。経緯
「ディレクトリを書庫に格納するとき、シンボリックリンクが示すファイルは実体のほうを書庫に格納する」という方法で書庫を作りたかったのだが、その中にディレクトリを指し示すようなシンボリックリンクがあると不用意に書庫のサイズを大きくしてしまいかねないので、それを避けたかったのである。
-xtype
がこのような挙動になるには、find
コマンドのデフォルトオプション(ファイルを列挙する過程ではシンボリックリンクも単にファイルとみなし、辿ることはしない。オプションを明示的に書くなら-P
)を使っているという前提が必要である。詳細は例えばMan page of FIND(OSDNによる日本語訳)を参照。 ↩
- 投稿日:2021-02-26T12:56:40+09:00
Raspberry Pi 4BにUbuntu20.04でサーバー構築し、Nextcloudを導入してみた。第1回[準備~SSHでログイン出来るまで]
第1回 現在のページ
- Ubuntuのインストール
- Raspberry Piの準備
- キーボード・ユーザー設定
- プライベートIPアドレス固定化
- SSH公開鍵認証
- サーバー側ファイアウォール
- swap領域の作成
- タイムゾーン・ホスト名設定など
- SSDマウント
- ドメイン取得・DDNS設定
- Nextcloudインストール
- サーバー・ルーターのポート開放
- SSL証明書取得
- Nextcloudへの外付けSSD認識
- 2要素認証
- 通知メール設定
- 主な参考元
※第2回以降は限定公開となっておりますが、どなたでも閲覧して構いません。
先に用意するもの
Raspberry Pi 4B (妥協するなら3Bでも可)
8GB以上のmicroSD
SSD(usb3.0以上対応)
usbタイプのキーボード
HDMIケーブルと対応するモニター
イーサネットケーブル(Cat6以上推奨)
PC(私はWindows 10 OSのものを使用)1. Ubuntuのインストール
まず、PCでラズベリーパイ公式サイトよりRaspberry Pi Imagerをダウンロード。
8GB以上のMicroSDをPCに差し込む。
ダウンロードしたimagerをインストールし、起動。
imagerが起動したら、OSはubuntu server 20.04 LTS
を選び、挿入したSDカードを選択して書き込む。2. Raspberry Piの準備~起動
付属の説明書通りに組み立てます。私はビニル手袋を嵌めて作業しました。
各差込口がきちんと嵌まっているかよく確認してネジ止め。
組みあがったら、ubuntuをインストールしたSDカード、usbキーボード、ルータと繋いだイーサネットケーブル、モニタに繋いだHDMIを予め差し込んでから起動。初回ログインは
login: ubuntu password: ubuntuでログインします。
(ちなみに私の場合、何故か上記のとおり入力して何度やっても上手くいかず、翌日になると正常にログイン出来ました・・・)
初回ログイン直後に現在のパスワードubuntu
と新しいパスワードの入力を求められるので、入力完了したらいよいよ各種設定です。3. キーボード・ユーザー設定
ラズパイ版ubuntuでは最初にキーボードレイアウトを日本語に設定する必要があります。
$ sudo dpkg-reconfigure keyboard-configurationで対話形式の設定画面に移り、
Generic 105-key PC (Intl.)
↓
Japanese
↓
Japanese
↓
The default for the keyboard layout
↓
No compose key
と選択して設定完了後、再起動すると反映されます。次に、デフォルトのubuntuユーザーを使うことはセキュリティ上好ましくないので、新たなユーザーを追加した上でユーザーubuntuを削除します。
$ sudo adduser ユーザー名でユーザーを追加出来ます。ユーザー名の
先頭はa-z
、以後はa-zと0-9
しか使用出来ないことに注意(環境変数を変更することで他の文字も使用出来ますがここでは割愛)。加えて、sudoコマンドでルート権限で実行できるように、以下のコマンドでユーザーをグループsudoへ追加します。
$ sudo gpasswd -a ユーザー名 sudo再起動した後、新しいユーザー名でログインし、
$ sudo userdel -r ubuntuでデフォルトユーザーを削除して完了です。
4. プライベートIPアドレスの固定化
PCからSSH接続でサーバー設定を行うため、プライベートIPアドレスを固定化します。
$ sudo vi /etc/netplan/99-config.yamlでファイルを開き、以下の様にネットワーク設定を書き込みます。
network version: 2 renderer: networkd ethernets: eth0: dhcp4: false dhcp6: false addresses: [ . . . /24 ] 空欄にサーバーに設定するIPアドレスを入力 gateway4: . . . 空欄にデフォルトゲートウェイのIPアドレスを入力 nameservers: addresses: [ . . . , 8.8.8.8 ] 空欄にDNSサーバーのIPアドレスを入力各種IPアドレスの設定は、コマンドプロンプト(Win)の
ipconfig /all
などでLANのサブネット及び、デフォルトゲートウェイ、DNSサーバのアドレスを確認した上で行ってください。下記コマンドで設定を反映。
$ sudo netplan applyその後、以下のコマンドでeth0が
state UP
、inet
の欄が設定されたIPアドレスになっていれば成功です。$ ip addr
ここまで出来たら、PCでPuTTYをダウンロードし、Host Name欄に
サーバーのIPアドレス
を、Port欄に22
と入力、Connection typeのSSH
を選択することでSSHでのログインが可能です。初回起動時には接続先が正しいかを確認されますが
yes
で大丈夫です。これによってホスト認証キーがPC側にも保存され、以後は確認されなくなります。
- 投稿日:2021-02-26T12:56:40+09:00
Raspberry Pi 4BにUbuntu20.04でサーバー構築し、Nextcloudを導入してみた。第1回
第1回 現在のページ
- Ubuntuのインストール
- Raspberry Piの準備
- キーボード・ユーザー設定
- プライベートIPアドレス固定化
- SSH公開鍵認証
- サーバー側ファイアウォール
- swap領域の作成
- タイムゾーン・ホスト名設定など
- SSDマウント
- ドメイン取得・DDNS設定
- Nextcloudインストール
- サーバー・ルーターのポート開放
- SSL証明書取得
- Nextcloudへの外付けSSD認識
- 2要素認証
- 通知メール設定
- 主な参考元
※第2回以降は限定公開となっておりますが、どなたでも閲覧して構いません。
先に用意するもの
Raspberry Pi 4B (妥協するなら3Bでも可)
8GB以上のmicroSD
SSD(usb3.0以上対応)
usbタイプのキーボード
HDMIケーブルと対応するモニター
イーサネットケーブル(Cat6以上推奨)
PC(私はWindows 10 OSのものを使用)1. Ubuntuのインストール
まず、PCでラズベリーパイ公式サイトよりRaspberry Pi Imagerをダウンロード。
8GB以上のMicroSDをPCに差し込む。
ダウンロードしたimagerをインストールし、起動。
imagerが起動したら、OSはubuntu server 20.04 LTS
を選び、挿入したSDカードを選択して書き込む。2. Raspberry Piの準備~起動
付属の説明書通りに組み立てます。私はビニル手袋を嵌めて作業しました。
各差込口がきちんと嵌まっているかよく確認してネジ止め。
組みあがったら、ubuntuをインストールしたSDカード、usbキーボード、ルータと繋いだイーサネットケーブル、モニタに繋いだHDMIを予め差し込んでから起動。初回ログインは
login: ubuntu password: ubuntuでログインします。
(ちなみに私の場合、何故か上記のとおり入力して何度やっても上手くいかず、翌日になると正常にログイン出来ました・・・)
初回ログイン直後に現在のパスワードubuntu
と新しいパスワードの入力を求められるので、入力完了したらいよいよ各種設定です。3. キーボード・ユーザー設定
ラズパイ版ubuntuでは最初にキーボードレイアウトを日本語に設定する必要があります。
$ sudo dpkg-reconfigure keyboard-configurationで対話形式の設定画面に移り、
Generic 105-key PC (Intl.)
↓
Japanese
↓
Japanese
↓
The default for the keyboard layout
↓
No compose key
と選択して設定完了後、再起動すると反映されます。次に、デフォルトのubuntuユーザーを使うことはセキュリティ上好ましくないので、新たなユーザーを追加した上でユーザーubuntuを削除します。
$ sudo adduser ユーザー名でユーザーを追加出来ます。ユーザー名の
先頭はa-z
、以後はa-zと0-9
しか使用出来ないことに注意(環境変数を変更することで他の文字も使用出来ますがここでは割愛)。加えて、sudoコマンドでルート権限で実行できるように、以下のコマンドでユーザーをグループsudoへ追加します。
$ sudo gpasswd -a ユーザー名 sudo再起動した後、新しいユーザー名でログインし、
$ sudo userdel -r ubuntuでデフォルトユーザーを削除して完了です。
4. プライベートIPアドレスの固定化
PCからSSH接続でサーバー設定を行うため、プライベートIPアドレスを固定化します。
$ sudo vi /etc/netplan/99-config.yamlでファイルを開き、以下の様にネットワーク設定を書き込みます。
network version: 2 renderer: networkd ethernets: eth0: dhcp4: false dhcp6: false addresses: [ . . . /24 ] 空欄にサーバーに設定するIPアドレスを入力 gateway4: . . . 空欄にデフォルトゲートウェイのIPアドレスを入力 nameservers: addresses: [ . . . , 8.8.8.8 ] 空欄にDNSサーバーのIPアドレスを入力各種IPアドレスの設定は、コマンドプロンプト(Win)の
ipconfig /all
などでLANのサブネット及び、デフォルトゲートウェイ、DNSサーバのアドレスを確認した上で行ってください。下記コマンドで設定を反映。
$ sudo netplan applyその後、以下のコマンドでeth0が
state UP
、inet
の欄が設定されたIPアドレスになっていれば成功です。$ ip addr
ここまで出来たら、PCでPuTTYをダウンロードし、Host Name欄に
サーバーのIPアドレス
を、Port欄に22
と入力、Connection typeのSSH
を選択することでSSHでのログインが可能です。初回起動時には接続先が正しいかを確認されますが
yes
で大丈夫です。これによってホスト認証キーがPC側にも保存され、以後は確認されなくなります。