☆☆ 新着記事 ☆☆

2018年11月30日金曜日

ねこでもわかる 「さくら VPS」 を試してみる 第五回 -phpMyAdmin

サーバー・レンタルの大手 さくらのVPSが、ネコでもわかる!らしいので、初心者だけど試してみる。の第五回目。  今回は、phpMyAdminのインストールと設定。

参考にするのは、さくら公式の導入ガイド「ネコでもわかる!さくらのVPS講座」
ネコに分かって、人間様に分からない筈はないので、早速、やってみる。 の五回目。

第四回では、phpパッケージをインストールして、MariaDBもインストール。 データベースにアクセスできるまでの設定をした。

「今回はphpMyAdminのインストールと、そのセキュリティ設定について」という事らしい。

でも、これ必須じゃないね。 とりあえず、環境構築さえできれば良い人は、この回をスキップしてください。 自分は、、、、一応、やっておきます。

目次

1.  phpMyAdminをインストールする
2. セキュリティ対策1: 第三者に推測されにくいURLに変更する。
3. セキュリティ対策2: SSLにより通信内容を暗号化する。
4. セキュリティ対策3: こまめにphpMyAdminをバージョンアップする。

1.  phpMyAdminをインストールする

(1) Install

「ご存知の方も多いと思いますがレンタルサーバーではphpMyAdminというツールが用意されており、ブラウザから簡単にデータベースを操作できる。」とのこと。

これがない場合、データベースに接続するには、vpsにログイン後、更に、DBにログインするという二度の手間がかかったが、phpMyAdminがブラウザから直接、DBにアクセスできるらしい。

確かに、前回、MariaDBにCUI(コマンド・ライン)で接続するのはメンドーだったので便利そう。

「phpMyAdminのパッケージはepelリポジトリとremiリポジトリにありますが、remiリポジトリにしか存在しないphp7.1関連のパッケージをあわせてインストールする必要があるため、remiを使用することにします。」 とのこと。

どうやって、どこのレポジトリーに、何の、どのバージョンが入っているのか知れるのだろう?
という疑問を持ちつつ、言われた通りにroot userから、インストール作業に入る。

SSHでサーバーにアクセス。rootユーザで、以下を実行。

 # yum install --enablerepo=remi,remi-php71 phpMyAdmin

 Install  1 Package (+52 Dependent packages)
Total download size: 16 M
Installed size: 63 M
Is this ok [y/d/N]: y

と、表示されるので、y

一瞬で、complete!


(2) phpMyAdminの設定

phpMyAdmin.confを編集して、ローカル以外からのアクセスもできるようにします。

phpMyAdmin.conf  が格納されているディレクトリに移動し、対象ファイルのコピーを作り、
vim でファイルを開きます。

#cd /etc/httpd/conf.d/
 (conf.d directoryでファイルの確認をしてみる。)
 [root@localhost conf.d]# ls -a
.  ..  README  autoindex.conf  php.conf  phpMyAdmin.conf  userdir.conf  welcome.conf

 # cp phpMyAdmin.conf phpMyAdmin.conf.old
 (実行後、ファイルの確認をしてみる。)
 [root@localhost conf.d]# ls -a
 .   README          php.conf         phpMyAdmin.conf.old  welcome.conf
 ..  autoindex.conf  phpMyAdmin.conf  userdir.conf
# vim phpMyAdmin.conf

 (開くとこんな感じ)
 <Directory /usr/share/phpMyAdmin/>
    AddDefaultCharset UTF-8
    <IfModule mod_authz_core.c>
      # Apache 2.4
      Require local

この16行目付近の Require local を、以下のよう変更する。

#Require local
Require all granted

変更後、:wq で終了。

httpdを再起動して、設定を有効に。

# systemctl restart httpd

http://xxx.xxx.xxx.xxx/phpmyadmin に、アクセスしてアクセスできるか確認。


アクセスできました!

これで、ログインできますが、まず、セキュリティー対策をするそうです。


2. セキュリティ対策の実施

1) 第三者に推測されにくいURLに変更する。

http://xxx.xxx.xxx.xxx/phpmyadmin というURLは第三者が推測しやすく「サーバーにphpMyAdmnがインストールされている」ということを外部に知られてしまいます。 そこでURLを分かりにくくします。」

とのこと。

再び、 phpMyAdmin.confの編集です。

まず、
# cd /etc/httpd/conf.d/    <- 上から連続して作業している場合、このディレクトリーにいるので不要。
# vim phpMyAdmin.conf

Aliasに関する2つの行をコメントアウトして、3行目に新しいAlias行を追加

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /phpMyAdminY2K18 /usr/share/phpMyAdmin

下線付の部分が、ブラウザ経由でアクセスするディレクトリーになる。
http://xxx.xxx.xxx.xxx/phpmyadminy2k18

設定が終わったらhttpdを再起動

# systemctl restart httpd

ブラウザでアクセスできるか、再確認で終了。



2) SSLにより通信内容を暗号化する。

・ApacheがSSLを使えるようにするために、mod_sslをインストールする。

root directoryで以下を実行。
# yum install mod_ssl

Install  1 Package
Total download size: 111 k
Installed size: 224 k
Is this ok [y/d/N]:
y


すぐ、終わる。

・変更を有効にするため、httpdを再起動
# systemctl restart httpd


ブラウザで再確認。

はい、
http://153.126.207.149/phpmyadminY2K18/ でも、
https://153.126.207.149/phpmyadminY2K18/ でも
アクセスできるようになりました。


httpsで接続する時、
「この Web サイトのセキュリティ証明書には問題があります。」というメッセージが出ますが、
これは、正式な証明書を利用していない「オレオレ証明書なので」、現段階ではしょうがない。


念のため、httpでのアクセスを禁止しておく。

# cd /etc/httpd/conf.d/
# vim phpMyAdmin.conf

*14行目付近にSSLRequireSSLを追加

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   SSLRequireSSL
変更を有効にするため、httpdを再起動
# systemctl restart httpd

http:// でアクセスできなくなっていることを確認して、この項目を終了。


3.) こまめにphpMyAdminをバージョンアップする。

phpMyAdminは先述したとおり、たびたびツールの脆弱性が指摘されており、古いバージョンのまま使い続けるのはリスクがるので、定期的に、以下のチェックをしておく。

・最新のremiパッケージリストの取得
# yum check-update --enablerepo=remi

・phpMyAdminの情報を表示

Installed Packages
Name        : phpMyAdmin
Arch        : noarch
Version : 4.7.1
Release     : 1.el7.remi

・・・
Available Packages
Name        : phpMyAdmin
Arch        : noarch
Version : 4.7.2
Release     : 1.el7.remi
・・・
と、なる筈ですが、今回は最新版をインストールしたばかりなので、Available Packagesは表示されませんでした。

表示されれば、

# yum update --enablerepo=remi phpMyAdmin

で、アップデートをしておく。

これで第五回は終了です。



 

2018年11月29日木曜日

ねこでもわかる 「さくら VPS」 を試してみる 第四回 -PHP, MariaDBインストール

サーバー・レンタルの大手 さくらのVPSが、ネコでもわかる!らしいので、初心者だけど試してみる。の第四回目。  参考にするのは、さくら公式の導入ガイド「ネコでもわかる!さくらのVPS講座」
ネコに分かって、人間様に分からない筈はないので、早速、やってみる。 の四回目。

前回はApacheを入れて、Firewallの設定をして、htmlが表示できるようにした。 
今回は、phpとMaria DB (MySQLの派生版)をインストールして、環境構築をしてみる。

が、さっそくやってみる。

目次
  1. phpをインストールする
  2. MariaDBをインストールする

1. phpをインストールする
「CentOS7標準のphpはバージョン5.4ですが、現時点ではphp7.1がリリースされており今後はこちらが主流になります。手順は若干増えてしまいますが、ここではCentOS標準のphp5.4ではなく最新のphp7.1をインストールする手順を説明します。

php7.1はCentOS公式リポジトリ(アプリケーションの配布元サーバー)には置かれていません。phpの最新アプリケーションパッケージを置いているremiという別のリポジトリ(またはレポジトリとも言います)から取得します。VPS上でそのための設定を先に行います。

なお、remiを使えるようにするためには、本来ならばEPEL(イーペル)という別のリポジトリを先に使用可能にしておかなければならないのですが、さくらのVPSは初めからEPELリポジトリが使用可能になっていますのでEPELは設定不要です。」

(1) remi用の設定パッケージをインストール
suコマンドでrootユーザーになってから

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
を実行。 

というが、どのディレクトリーで実行すれば良いのか?
不安を覚えつつも、SSH接続のdefault directory の 'root' directoryで実行してみる。
(この辺りは、Linuxのdirectory構成を理解しないと不安ではある。)

ふむ、一瞬で完了。 次に、

(2)php (とパッケージも) のインストール

# yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mysqlnd php-pdo php-gd

お、暫く無反応で、動いたと思ったら、

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
epel/x86_64/metalink                                                 | 6.7 kB  00:00:00

というメッセージが出たので、失敗したかと思ったが、すぐに、それぞれのファイルのダウンロードが始まって、無事にインストールできた('complete'のメッセージが表示された)。 びっくりした。

(3) Apacheの再起動で使用可能にする。

# systemctl restart httpd

以下のphpファイルをvar/wwwにアップロードして、挙動確認。

<html>
  <body>
    <?php echo "Hello World! php" ?>
  </body>
</html>


phpが動くようになりました!!

(4) phpのアップロード・ファイルの上限を変更する
基本のインストールは上記で終わりですが、今後の事を考えて、アップロードできるファイルの上限サイズの変更をしておくらしい。 こういうガイドは素晴らしい!!

# cd /etc
# cp php.ini php.ini.old


を実行。 それぞれのコマンドは、第二回ですでに実施しているので解説なし。

ls -l で確認すると、コピーされたファイルが出来ていますね。
-rw-r--r--   1 root root    62394 Nov  8 02:54 php.ini
-rw-r--r--   1 root root    62394 Nov 29 20:36 php.ini.old

# vim php.ini
ファイルを開いて、2か所を変更。
(変更前)
post_max_size = 8M
・・・
upload_max_filesize = 2M

(変更後)
post_max_size = 128M
・・・
upload_max_filesize = 128M

該当箇所の検索は、
vimで ‘/’ をタイプしてください。検索モードになり、画面の一番下にフォーカスが移りますので、検索語句”post_max_size“を入力してEnterキーを押します。

# systemctl restart httpd
を、実行して、変更を有効に!!

これでおしまい。 

今回は、以前に使ったコマンドばかりでしたから、簡単でしたね。



2. MariaDBをインストールする

(1) パッケージのダウンロード
「CentOS6ではデータベースアプリケーションとしてMySQLが用意されていましたが、CentOS7ではMariaDBが標準となりました。」

ということで、MySQL派生のMariaDBをインストールする。

# yum install mariadb-server

の実行。 

上から連続してやっていると、Current Directoryは 'etc' になっているので、指示はないけど、一応、
#cd /
で、root directoryに戻ってから実行してみる。

すぐに’Complete!‘が表示されたのでダウンロード終了。


これでDiskの使用量は、
[root@ik1-xxx-xxxxx ~]# df -h
Filesystem      Size      Used     Avail   Use%  Mounted on    第二回終了時
/dev/vda4        16G       2.2G     14G    14%        /                     used 2.0G    
devtmpfs        233M       0       233M    0%         /dev                           0
tmpfs             244M        0       244M    0%        /dev/shm                    0
tmpfs             244M     8.6M   236M    4%       /run                           4.5M
tmpfs             244M        0      244M    0%       /sys/fs/cgroup              0
/dev/vda2      497M    222M   276M   45%     /boot                          222M
tmpfs              49M        0         49M     0%     /run/user/1000              0


だから、ほとんど変わりませんね。

(2) サーバー再起動時にMariaDBを自動的に起動する設定に変更。

systemctl enable mariadb

実行すると
Created symlink from /etc/systemd/system/multi-user....
のメッセージで完了

# systemctl start mariadb
特にメッセージは出ないけど、よしとしよう。

(3)MariaDBにログインするためのパスワードを設定
# mysql_secure_installation

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so
you should just press enter here.

Enter current password for root (enter for none):

こういうメッセージ。 なので、enterキーを押下。

Set root password? [Y/n]

Y で

'MariaDBの' root passwordを設定するらしい。

設定すると、また質問。

「その後、いくつかの質問が続きます。この先はすべて’Y’で答えておけばよいです。」
とのガイドだが、聞かれたことだけメモしておく。

1) By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]

2) Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]

3)By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] ^C

Aborting!
Cleaning up...
[root@ik1-339-29895 ~]#


うわ、コピーするつもりでctl+cを押してしまったら、abortしてしまった。

Remove test database and access to it?
Reload privilege tables now? [Y/n]

の2つが出来なかったみたい。

まあ、問題なさそうなので、これでMariaDBの初期設定が完了として、
次に進む。

(4)MariaDBにログインできるかどうかを確認

# mysql -u root -p

実行すると、
[root@ik1-xxx-xxxxx ~]# mysql -u root -p
Enter password: (さっき設定したパスワード)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

という事で接続ができた。

「DBにログインするには、まずVPSにLinuxユーザーとしてログイン済みでなければなりません。つまり、DBにログインするには、 「Linuxユーザーとしてログイン後、DBユーザーとしてログインする」という2回のログイン操作が必要になります。
また、VPSの外から直接DBにログインすることはできません。」

という説明。 まあ、DBですからね。


(5)データベースの確認


MariaDB [(none)]> show databases;  (最後のセミコロンまで入力要)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)


「データを保存する「テーブル」の集合がデータベースであり、MariaDBインストール時には最初から3つのデータベース
・information_schema |
・mysql        
・performance_schema |
が存在します。MariaDBそのものも、「データベース」と呼ばれます。」

うーむ。test.dbが残っちゃってますね。

DBが表示され、MariaDBに接続できている事が確認されたので
exit()
で、MariaDBからログオフする。


これで第四回はお終いです。


2018年11月28日水曜日

ねこでもわかる 「さくら VPS」 を試してみる 第三回  -Apacheインストール

サーバー・レンタルの大手 さくらのVPSが、ネコでもわかる!らしいので、初心者だけど試してみる。の第三回目。 今回は、Apacheのインストール。

参考にするのは、さくら公式の導入ガイド「ネコでもわかる!さくらのVPS講座」
ネコに分かって、人間様に分からない筈はないので、早速、やってみる。 の三回目。

前回はOSをインストールして、今回はいよいよApache。 基本的にOSが最初からインストールされているパソコンか、同じくサーバー・レンタル会社に管理を100%丸投げしている共用サーバーしか利用した事のない自分にとっては既に感慨深いものがある。 

が、さっそくやってみる。


目次
  1. httpサーバーApacheをインストールする
  2. SFTPを使ってファイルをアップロードする
  3. ドキュメントルートの権限を変更する
  4. ドメインを取得して、DNSの設定をする

1. httpサーバーApacheをインストールする

(1) Apacheのインストール

ガイドでは、最近、流行している「nginx(エンジンエックス)」があるよ、と書いているが、インストール手順を書いてくれてないので、昔からのApache(アパッチ)を、素直にインストールする。


サーバーに一般ユーザー(vpsuser)でログインしてrootにスイッチ

# yum install httpd

を実行。

と、と、と、サーバーにログ・イン出来ない。

そーかー、前回の終わりにも書いたけど、最後にサーバーをシャット・ダウンしてるから、再起動かけないと、、、 (マニュアルに従ってやるんだから、シャット・ダウンさせた後、次の回を始めるときには「再起動が必要」と書いといて欲しいな、、、素人なんだからwww。)


そして、VPSコントロールパネルからお申し込みされた場合、パスワードはお申し込み時に
【お客様が設定されたパスワード】
に、なってる訳ですね。

パスワード管理は、非常に難しい。

さて、いずれにしても、コントロールパネルにログインして、サーバー再起動をかけた。

そして再び、SSH(Tera Term)でサーバー・ログインを試みる。

ログインできた!!

そして、ルートユーザに切り替えるコマンドは、

# su -  (suの後、半角スペースとハイフン)


Passwordを求められたので、入力して、ルート・ユーザに切り替え完了。

そして、上のコマンド実行。
Complete!

(2) Apache(httpd)のFW変更。

httpdを起動

♯ systemctl start httpd

ふむ、リターンを押しても、次の#のラインに移るだけですね。

♯ firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent

を、1行ずつ実行する。

各ラインごとに 'success'が表示されて、穴あけ完了。

ファイアウォールサービスを再起動
# systemctl restart firewalld

なにも表示されないけど。。。

IP addressでブラウザからアクセスしてみる。

http:// IPアドレス 

で、表示できた。 こんな事でも嬉しいのでsnap shot.



(3) httpdがサーバー再起動時に自動で再起動するよう設定変更。

# systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

というメッセージがでるけど、

$ systemctl list-unit-files | grep httpd

で、設定の再確認。

httpd.service   enabled

が、表示されればOKです。


****以下は、マニュアルに書いてあったので、
   参考程度にしてください。 上記のコマンドの方がベターです。****

♯ systemctl list-unit-files -t service

で、設定の再確認。

httpd.service   enabled

が、確認できたのでOK

あれ、コマンド・ラインに戻れない!

:q

を、押下してみたら、戻れた。 q まで必要かは微妙。
(おー、マニュアルに q で良いと書いてあった、)
****参考終了****

さて、マニュアルからちょっと逸脱。

今は、CentOSとApacheを入れただけだけど、どれくらい、Diskを使っているの?

興味が湧いたので、前回から勉強中のlinuxコマンドをうってみると、以下の感じ。

[root@] # df -h
Filesystem      Size     Used    Avail Use% Mounted on
/dev/vda4        16G    2.0G      14G  13%        /
devtmpfs        233M     0       233M   0%    /dev
tmpfs            244M     0       244M   0%    /dev/shm
tmpfs            244M  4.5M   240M   2%    /run
tmpfs            244M     0  2    44M   0%    /sys/fs/cgroup
/dev/vda2       497M  222M  276M  45%  /boot
tmpfs              49M     0        49M   0%   /run/user/1000

2G くらいですね。 お申込みは、最低限のSSD 20Gなので、既に10%使っちゃったことになる。
あれ、実質は、上のリストからすると、17.5GBくらいか、、、なるほどね。


2. SFTPを使ってファイルをアップロードする

SFTPを使いましょう、という推奨を心にとめることにして、html ファイルをアップロードしてみる。

と思って、FTPで接続しようとしたができない。

 どうも「 vsftpdをインストール 」して、設定変更をする必要があるようだ。
(参考: さくらVPS FTP接続)等。

 どうも、SFTP(SSH File Transfer Protocol)というのは、暗号化通信を前提としていて、平文通信のFTPとは違うようだ。

そこまでFTPに拘りもないので、おすすめのうちの一つ、WinSCP をインストールしてみる。
(ソフトの選択に根拠はありません。比較検討もしません。時間がもったいないので。)

「窓の杜」さんから、ダウンロード。(v5.13.5(18/11/21))
(圧縮してても 、ファイルサイズが9Mもあるんですね。)

WinSCPのホスト名に接続先IPアドレスをいれて、あとはSSH接続のユーザ名とパスワード。

無事、ログインできました。
悩んだ時間がもったいなかった。結局、SFTPというのは、名前の通りSSHで接続するんですね。

3. ドキュメントルートの権限を変更する

さて、いよいよhtmlをアップロードすることになるのだが、アップロード先は、

http://xxx.xxx.xxx.xxx にアクセスされたときに対応するディレクトリは、サーバーのドキュメントのトップの位置に相当するので、ドキュメントルートと言います。 これは、デフォルトでは
/var/www/html
になります。」

ということになるらしい。

このDirectoryに、書き込みが出来るように権限変更。

sshでVPSに接続し、rootユーザーで以下のコマンドを実行。

# cd /var/www

あれ? コマンド・ラインのプロンプトの前の表示
[root@ik1-xxx-xxxx /] は、ディレクトリを変えても、変わらないのか?

であれば、覚えたてのLinux Commandで、カレント・ディレクトリを調べてみる。
[root@ik1-xxx-xxxx /]# pwd    <-pwdがカレント・ディレクトリを表示するコマンド。/                  <-何故か、ルート・ディレクトリ(?)にいることが判明。

再度、 # cd /var/www を実行すると、


[root@ik1-339-29895 www]#

あっ、やっぱりDirectoryが表示されるんですね。


以下のコマンドで、ファイルの一覧表示。
 
# ls -l
total 0
drwxr-xr-x 2 root root 6 Jun 27 22:49 cgi-bin

drwxr-xr-x 2 root root 6 Jun 27 22:49 html

があった。 読み方は、こういう事らしい。

drwxr-xr-x 2 root root 6 Jun 27 22:49 html

rwx:所有者の権限
r-x:グループの権限
r-x:他人の権限
2は解説がなく、
root : 最初のrootは、所有者名
root : 2番目のrootは、所有者グループ名最後の html が、対象のDirectory名

このDirectoryに、書き込みの権限を与えるように変更するらしい。

もう一つ、このhtml Dicrectoryに書き込み権限を与えるべきユーザにApacheというユーザを
登録しておく方が便利らしい。

WordPressなどのコンテンツ管理システム(CMS)経由でをサイト上で動かす場合は、
Apacheのユーザーである”apache”でファイルを書き込むことになります

これらを考慮し、

drwxrwxr-x 2 apache vpsuser 6 Jun 27 22:49 html

に変える。(即ち、所有者をapache, 所有者グループをvpsuserにする、という事ですね。)

*通常WEBに公開するファイルのパーミッションはhtmlファイルやcssファイルなどは644、ディレクトリは755にしてれば、phpで動的なページを作っても大丈夫だと言われていますが。

やってみる。

・ファイルやディレクトリの所有者を変更するコマンドを実行
# chown apache:vpsuser html

ls - l で、ふむ、所有者、所有者グループが変わったことを確認。
drwxr-xr-x 2 apache vpsuser 6 Jun 27 22:49 html

・権限を変更するコマンドを実行
# chmod 775 html

ls - l で、ふむ、権限が変わったことを確認。
drwxrwxr-x 2 apache vpsuser 6 Jun 27 22:49 html

*この’775’の意味は、rwxrwxr-x を3つのブロックに分け、r=4、w=2、x=1と数値化して計算した合計の値
r w x = 4 + 2 + 1 = 7
r - x  = 4 +  0 + 1 = 5

これで、htmlフォルダに書き込みが出来るようになったわけだ。
SFTPでファイルを
/var/www/htmlにアップロードして、
http:// [ipアドレス]/file名 にアクセスすると、


無事、日本語も表示できました。

/var/wwwにファイルをアップすると、

http://[ipアドレス または ドメイン名]/ファイル名

で、htmlが直接、表示できるんですね。 ドキュメント・ルートと言われる理由だという事が理解できました。

*ところで、https: にすると、この段階では表示できないんですね。 Firewallに通しただけだから。


4. ドメインを取得して、DNSの設定をする

ドメイン・ネーム設定の解説は、ねこでもわかる、の解説の対象外らしい。

ネームサーバ利用申請方法 – さくらのサポート情報
https://help.sakura.ad.jp/hc/ja/articles/206207381

を、読んで設定してください、とのこと。

一通りサーバー環境の構築が終わったらやってみることにして、第三回は、これでおしまい。

だんだん、それらしくなってきました。

 追記)

2週間の無料試験期間中は、さくらのDNSサーバーは利用できないみたいです。
無料のドメインネーム取得サービス会社、 FeenomのDNSサーバーを利用することにしました。

2018年11月27日火曜日

ねこでもわかる 「さくら VPS」 を試してみる 第二回 OSインストール SSH接続

サーバー・レンタルの大手 さくらのVPSが、ネコでもわかる!らしいので、初心者だけど試してみる。の第二回目。

参考にするのは、さくら公式の導入ガイド「ネコでもわかる!さくらのVPS講座」
ネコに分かって、人間様に分からない筈はないので、早速、やってみる。 の二回目。



(目次)
  1. VPSの利用申し込みをしよう
  2. VPSにログインしよう。SSHクライアントソフトのインストール
  3. OSをアップデートしよう
  4. SSHをもっと安全に使うために
  5. 一般ユーザーを作ろう
  6. sshサーバーの設定を変更して、rootで直接アクセス出来ないようにする。

1. VPSの利用申し込みをしよう
これを書いている現在、カード支払を選択すると、「2週間の無料お試し」期間が設定されていのたので、この機会に使ってみることにした。 2週間で解約したら、無料らしい。 (初期費用の取り扱いが、よく分からないけど。) 

申し込み自体は、簡単なので、これ以上は説明しない。(申し込み後、利用登録とログイン情報は、2分くらいで、登録したメールに届いた。 素晴らしい。)

次に。


2. VPSにログインしよう。SSHクライアントソフトのインストール
3.OSをアップデートしよう

・ VPSコントロールパネルにログインしVPSを起動しましょう。

ログインすると、
1) 「起動」ボタンを押してすぐにサーバーを起動することもできるのですが、今回はデフォルトのCentOS6 X64_84ではなくCentOS7 X64_84を使用するため、このOSのインストールを先に行います。

2) 画面右上の「各種設定」ボタンで「OSインストール」を選び、 続けて「標準OSインストール」からCentOS7 x86_64を選択して、クリック。

同時に、新しいrootパスワード(管理者パスワード)を設定するらしい。

この「各種設定ボタン」は、「名称未設定」となっているサーバー名をクリックすると出てくるんですね。 マニュアルに書いてあるけど、読み飛ばしてしまった。

スタートアップスクリプトが設定できるらしいけど、ネコ様にはガイドしないようなので、
人間様もスキップする。

実行すると、コントロール・パネルが「稼働中」表示される。

簡単だった。 次。

4.SSHをもっと安全に使うために

・VPSにログインしよう。SSHクライアントソフトのインストール

Puttyをダウンロードして、SSHでサーバーにログインする。
ここはTera Termで。

接続先IPアドレスは、コントロール・パネルに書いてある。


login as: のところは”root”を入力してEnterキー、次の行のpasswordはVPSの仮登録完了のお知らせメールに記載されている。(ポートは22)

Tere Termから、下図のメッセージだが、Known Hostとして登録する。




うーむ。ダメだな。 Puttyをダウンロードして接続を試みるもダメだ。。。
login as: までは出来るけど、passwordを入力してアクセスを試みると、access denied になってしまう。


あれ、ガイドには「次の行のpasswordはVPSの仮登録完了のお知らせメールに記載されていた初期パスワードを入力してください。」

と書いてあるけど、さっきの段階でroot権限のパスワードを設定したじゃん!

ということで、先程、設定したパスワードを入力してアクセスできた。
30分ほどロスした。


ログインしたらOSのアップデートをする。

>># yum update

Fair enough! 最初のコマンド操作としては、簡単な操作ですね。
(結構、処理が終わるのに時間がかかりますね。)

 
5.一般ユーザーを作ろう




rootユーザーで直接サーバーにログインできる状態になっていると、万が一rootのパスワードを盗まれた場合すぐに悪意あるユーザーにサーバー管理者権限を渡してしまうことになり、結果としてサーバーを乗っ取られてしまいます。
このままではセキュリティ的に危険なので、rootユーザーでは直接ログインできないように設定を変更します。

もしあなたが管理者権限が必要な作業をする場合は、いったん 一般ユーザーでログインし、その後rootユーザーに切り替えてください。(この切替をスイッチユーザーといいます)

とのこと。 やってみよう。

# adduser vpsuser
# passwd vpsuser

で、passwordを変更する。

その後、いったん、ログアウト(Teraちゃんもexit()) して、
次に一般ユーザとしてアクセス。

再度、ログインができました。

ここから、rootユーザに切り替えるコマンドは、

$ su -

(プロンプトの表示が違いますね。)


6.sshサーバーの設定を変更して、rootで直接アクセス出来ないようにする

「rootユーザーで直接ログインできないようにするため、sshd_configというsshの設定ファイルを編集します。 rootユーザーで作業してください。」

vimで編集するそうだ。
vimは、「LinuxにPATHを通す bash_profile」で簡単に触った程度だけど、ここでは、この知識で足りそうだ。 (間違えた時は、'esc'キー 入力後、:q! コマンド実行。 保存しないで戻る、という意味)

# cd /etc/ssh                 ♯ディレクトリ変更
# cp sshd_config sshd_config.old   ♯sshd_configをsshd_config_oldにコピー
# vim sshd_config            ♯vimでファイルを開く。

を実行。 インサート・モード(i を押下)とノーマル・モード(default / Escキーでインサート・モードから戻る)を駆使しつつ、

#PermitRootLogin yes をnoに。

:wq (意味:w: 保存、 q: quit)を押して終了。

vimの操作は以下のサイトがお勧めらしい。

[参考]Vimをメモ帳程度に使うために覚えておくべきコマンド – Qiita
http://qiita.com/honeniq/items/201156650310c4968c3a
また、動画の学習サイト「ドットインストール」のvim入門も参考になります。
http://dotinstall.com/lessons/basic_vim

最後に、sshサーバーであるsshdを再起動すると、設定が有効になります。

# systemctl restart sshd.service

何も表示されなければ、成功らしい。 表示されないので成功したのでしょう。

最後に、次回までの間、不必要な攻撃を避けるため、サーバーをshut downしておく、

# shutdown -h now

これで、第二回もおしまい。

Linuxのコマンドを勉強しよう!!Linux初心者の基礎知識http://www.linux-beginner.com/linux_command.html

も、お勧めされているので、時間のある時に。

順調だなぁー。


ねこでもわかる 「さくら VPS」 を試してみる 第一回

サーバー・レンタルの大手 さくらのVPSが、ネコでもわかる!らしいので、初心者だけど試してみる。 参考にするのは、さくら公式の導入ガイド「ネコでもわかる!さくらのVPS講座」
ネコに分かって、人間様に分からない筈はないので、早速、やってみる。


1. 第一回:VPSてなんだろう?〜

基本、VPSの説明なので、読み飛ばします。 が、この段階でインストールするサーバーOSを決めなくてはいけないみたい。
初心者なので、長いものに巻かれたいので、各OSのシェアを調べてみた。

Linuxのディストリビューションのシェアについては、以下のサイトによると
https://w3techs.com/technologies/history_details/os-linux



サーバーにログインした時のターミナルは、ネコ様用にはPuttyを推奨してるけど、もうTera Termを使っているので、しばらくはTera Termで行ってみる。

サーバー構築にあたって、今後必要になる知識


  • Linuxコマンドの理解
  • パーミッション(権限)の知識
  • Linux上で動くエディタ(vim)の使い方を覚える
  • HTTPサーバーApacheのインストール方法、設定
  • データベース(MariaDB)のインストール、設定
  • セキュリティ、ファイアウォールの知識
  • WordPressのインストール

  • が、必要になるらしい。 最初に宣言しておいてくれるのはありがたい。







    2017
    1 Nov
    2017
    1 Dec
    2018
    1 Jan
    2018
    1 Feb
    2018
    1 Mar
    2018
    1 Apr
    2018
    1 May
    2018
    1 Jun
    2018
    1 Jul
    2018
    1 Aug
    2018
    1 Sep
    2018
    1 Oct
    2018
    1 Nov
    2018
    27 Nov
    Ubuntu
    37.9%
    38.5%
    38.9%
    39.0%
    39.2%
    37.4%
    33.9%
    34.0%
    34.2%
    35.0%
    35.8%
    37.4%
    37.7%
    38.0%
    Debian
    31.1%
    30.9%
    30.7%
    30.8%
    30.9%
    30.4%
    27.3%
    27.3%
    26.5%
    24.2%
    23.4%
    23.5%
    23.3%
    22.9%
    CentOS
    20.8%
    20.7%
    20.6%
    20.6%
    20.5%
    19.2%
    17.1%
    16.9%
    16.6%
    16.9%
    17.4%
    18.2%
    18.0%
    17.9%
    Gentoo
    2.7%
    2.7%
    2.7%
    2.7%
    2.7%
    2.6%
    2.3%
    2.3%
    2.3%
    2.4%
    2.4%
    2.5%
    2.5%
    2.5%
    Red Hat
    3.1%
    3.1%
    3.0%
    2.9%
    2.9%
    2.7%
    2.4%
    2.4%
    2.3%
    2.3%
    2.3%
    2.4%
    2.4%
    2.4%
    Fedora
    0.8%
    0.8%
    0.7%
    0.7%
    0.7%
    0.7%
    0.6%
    0.6%
    0.6%
    0.6%
    0.6%
    0.6%
    0.6%
    0.6%
    SuSE
    0.6%
    0.6%
    0.6%
    0.6%
    0.6%
    0.5%
    0.5%
    0.5%
    0.4%
    0.4%
    0.4%
    0.4%
    0.4%
    0.4%
    Scientific Linux
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    Turbolinux
    0.1%
    0.1%
    0.1%
    0.1%
    0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%
    <0.1%

    ということで、Ubuntuが流行っているらしい。
    (といっても、シェアはあまり変わっていませんね。)

    Ubuntuって何だ? 調べるときに、Wikiなんて使わない。 知ってることなら、説明を読んで分かるけど、知らない事は、Wikiの説明を読んでも分からないから。

    Net検索。

    ・UbuntuはDebianというLinuxディストリビューションから派生している。
    初心者に優しいOS:
     Ubuntuはインストールから、日常作業など、その操作のほとんどがマウス操作で完結する。
    ・毎年4月と10月にリリースを行なうが、TLSとつくバージョンは長期保証版(5年間)

    という事らしい。 【3分でわかるシリーズ】Ubuntuとは?を参考にさせていただきました。
    もっと詳しく書いてあるので、興味のある方は見てください。

    ということで、これくらいの認識で、Ubuntuを選択してみることにする。

    と思ったが、ネコでもわかるのはCentOSの方らしいので、こちらをインストールする。

    2018年11月22日木曜日

    Python Anywhereで FlaskをDeployしてみる。

    以前,「( !! これで動く !! )ロリポップ・サーバーでPython Flaskを動かしてみる 」という記事を書いたが、実は、これでは全くFlaskでアプリ開発なんてできない事が分かった。

    これはロリポップだけではなく、さくらにしても他のシェアード・サービスでも、cgi経由でFlaskを動かす場合は同じ問題だと思う。

    (そういう意味で、「Flaskが動いた」と書いているブログは、ほぼ検索可能な範囲で、どのサイトも問題解決をしていないので、(少なくとも書いていない)どうしているんだろう?)

    詳しくは、今度、書こうと思うけど、ということで、きちんとFlaskの機能を使えるホスティング・サービス(できれば無料)を探していて、結局、難しくて避けていたPython Anywhere が妥当であろう、という見解に達したので、まじめにPython Anywhereを使ってみることにする。


    無料アカウントで作業します。 アカウント作成は直観でできますので説明しません。

    Step1) Virtual Environmentの作成。

    Dashboard -> Console -> bashを選んで編集します。


    bashをクリックすると、console画面が出てくるはずだけど、IEでは出てきませんね。
    ここからは、ブラウザをchromeに変更。

    そして以下のコマンドを記述。
    mkvirtualenv <env-name> -- python =/usr/bin/python3.6

    ~ $ mkvirtualenv flaskapp --python =/usr/bin/python3.6 
    (公式チュートリアルは、mkvirtualenv --python=/usr/bin/python3.6 flaskapp)

    こんなコンソール画面になる。


    flaskのインストール
    (flaskapp) ~ $ pip install flask 
    * flaskappディレクトリでinstall
    (プロジェクト名)のプロンプトが出ていると、virtural環境がactiveになっている証拠。


    このメッセージが最後に表示される

    Successfully installed Jinja2-2.10 MarkupSafe-1.1.0
    Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0


    flaskのオプション・パッケージが必要な場合は、この段階で以下のように
    追加すればよい。

    ~ $ pip install flask -SQLAlchemy 
    この時点で、インストールされたパッケージを確認してみる。

    (flaskapp) ~ $ pip list

    Package      Version------------ -------Click        7.0    Flask        1.0.2  itsdangerous 1.1.0  Jinja2       2.10   MarkupSafe   1.1.0  pip          18.1   setuptools   40.6.2 Werkzeug     0.14.1 wheel        0.32.3

    今回は、とりあえず これでexit。


    ~ $ exit

    あれ? コンソールが保存されてないぞ? なんか保存作業をしないといけない?


    さて、さて、インストールが出来ているかは、ダッシュボードのファイルから以下のように確認できますね。




    ふむ、プロジェクトは作られているので次にすすむ。




    Step 2: Uploadするflaskのappファイルを作る。

    今回はシンプル版。


    from flask import Flask

    app = Flask(__name__)
    @app.route('/')
    def index():

        sum = 3 + 2
       
        return str(sum)+"<h1>   Now sum calc. is done by Flask App!</h1>"


    if __name__ == '__main__':
        app.run()

    注意点は、

    if __name__ == '__main__':
        app.run()


    は、無くても良い。 寧ろ、書く場合には app.run() がif文の中にしっかりと
    入っていることが必要。 app.run()だけを書いて実行することもローカル環境では可能だけど、
    以下の venv 環境を設定した後で実行した時に、app.run()を読み込むと
    appがクラッシュして、サーバーから504エラーが返ってくることになる。

    さて、これをアップロードする。

    virtualenvironment のディレクトリー配下にmyapp ディレクトリーを作る。



    このmyappデイレクトリーを選択して、ファイルをアップロード。

    Step3 新しいWeb Applicationを作成する。

    ダッシュボードのWebタグから新しいアップを追加します。


    インターネットに公開されるURLが表示されます。
    次に、以下を選択しながら、ページを進めていきます。
    ・Python Web frameworkの選択
    > Flaskを選択

    ・Select a Python versionの選択
    > Python 3.6 を選択


    すると、PATHの選択画面になりますが、とりあえずDefaultのまま
    進めます。

    DefaultのPathは、
    /home/ユーザー名/mysite で作成されます。 このmysite.app ディレクトリーの下に、flask_app.pyが作られているのいるので、簡単なappファイルであれば、このファイルを編集しても良いですね。

    Webappが作成されました。




    ファイル Tabで、mysiteディレクトリが作成されていることを確認します。

    /home配下には、/local や /virtualenv があります。




    Step4. Web APPの詳細設定

    1) VirtualenvのPathの設定
     
    次に、virtualenvのPath設定。
    (踏む、virtualenv wrapperを使うことが推奨されてるんですね。次回以降にやってみる。)
    今回はマニュアルで入力。

    /home/kappamobestjp/.virtualenvs/flaskapp

    (ファイル名だけを入れて、レ点青〇をクリックすると
     自動でパスを書いてくれますね。このやり方は便利)


    2. wsgi.py の修正
    (上記のPathが記述されていますので、実際のもに変更します。)

    import sys
    # add your project directory to the sys.path
    project_home = u'/home/Kappamobestjp/myapp'
    if project_home not in sys.path:
        sys.path = [project_home] + sys.path
    # import flask app but need to call it "application" for WSGI to work
    from myapp import app as application  # noqa ♯defaultのflask_app.pyからの変更。

    これでおしまいです。

    そしてOutput:


    ここまでは、CGI経由でもできる。

    CGI経由では出来ない、Routingをするアプリを動かしてみる。

    app.py

    from flask import Flask, render_template, request
    app = Flask(__name__)

    @app.route('/')
    def first():
        message="Hi, Charlie!"
        return render_template("sample01.html", message=message)
       
    @app.route('/add',methods=['POST'])
    def add():
        if request.method =='POST':
            result = request.form['new_wish']
        #else:
        #    result = "No wish! Ah?"
           
        return render_template("sample02.html", result=result)
    if __name__ == '__main__':
        app.run()

    動いた!!




    参考)
    ◆公式

    (Quick Start: virtualenv なし)
    https://blog.pythonanywhere.com/121/

    (virtualenv あり)
    Setting up Flask applications on PythonAnywhere

    ◆Deploy (Host) Flask web app on pythonanywhere
    https://www.youtube.com/watch?v=uWoY3jcrQTo

    ◆Deploying Flask Apps Using Python Anywhere
    https://www.youtube.com/watch?v=M-QRwEEZ9-8