さくらのVPSで1からWebサーバーを構築する方法 (Ubuntu16.04)
目次/もくじ
今回はサーバーの構築について扱ってみようと思います。VPSを使った一般的なWEBサーバーの構築がゴールです。
MT4/MT5からサーバーにトレードデータを送受信する際に、ルート権限で細かいカスタマイズをすることを狙っています。(主として、MT4/MT5ユーザーのIPからのアクセス制限・緩和を行う)
OSはUbuntu16.04にしました。日本で使われているサーバーOSは ほとんどCentOSで、日本語で検索するとこちらの方が詳細が多いのですが、世界的に見るとかなりドマイナーなOSなので、そろそろUbuntuにした方がいいんじゃないかと思います。
(マイナーなOSの方がセキュリティ的には強い気もしますけどね。)
先に言っておくとトレード用のVPS(Beeksとか)は利用できません。ポートでVPSを振り分けているため、VPS毎にグローバルIPの振り分けが行われておらず、80,443ポートを開放できないためです。
サーバーの設定
さくらVPSでVPSの契約をするとコントロールパネルのログイン情報がメールに届きます。
OSはUbuntu16.04を選択します。すると、初期ユーザー(Ubuntu)のパスワードを入力を求められますので、適当に入力します。
※スタートアップスクリプトは要りません。
SSHでサーバーに入り、ルートユーザーにする
ここから先はコンソール(コマンドライン)での操作になります。Ubuntuにはデスクトップ版とサーバー版があって、サーバー版にはGUI(Windowsのようなデスクトップ画面)はありません。Windowsのデスクトップ画面にリモートアクセスする際にはRDPというプロトコルを使いますが、CUI(黒い画面)のサーバーに入る際にはSSHという通信方式を使います。
SSHのログインには鍵認証方式とアカウント方式があります。本来は鍵認証の方が良いのですが、今回はまずゴールまで到達することを目標にするため省きます。
コントロールパネルの「コンソール」をクリックします。本来SSHでアクセスするには専用ソフト(puttyとか)を使うのですが、こちらもインストールしてIPアドレスを入れるだけなので、省きます。
初期ユーザはubuntuで、先ほど設定したパスワードでログインします。この状態だと権限が弱い一般ユーザなのでrootユーザーに切り替えます。
1 |
sudo su - |
と打ち、先ほどと同じパスワードを入力します。
OSのバージョンアップ
OSに最新情報がないかチェックします。
1 |
apt update |
(これはいろいろセットアップした後に行うとどこかで不具合が生じる可能性があるので、初めにやっておいた方が良いです。)
Apacheを入れる
ApacheというのはサーバーをWEBで使えるようにするためのオープンソフトで、だいたいこれが入っています。最近はNginxというより高速なソフトもありますが、今回はApacheにします。
1 |
apt install apache2 |
まだネット接続に必要なhttp,https(80,443)ポートを開けていないので、これだけでは表示させることはできません。
vimを入れる
vimというのは編集ソフトのことでCUIのサクラエディタみたいなもんです。デフォルトで入っているOSもありますが入っていなかったので、インストールします。
1 |
apt install vim |
PHPを入れる
次にPHPを入れます。
1 |
apt install php |
インストール中にも表示されていますが、バージョンを調べるには
1 |
php --version |
と入れます。
デフォルトでphp7になっています。PHPは5がシェア9割で、7との互換性がない関数があるので、必要に応じてダウングレードするかPHPファイルの関数を書き換えてください。(スピードはPHP7の方が断然早いです)
【追記】PHPのダウングレードをすると端々に問題が発生することが多いので、最初から古いOS(Ubuntu14)を入れた方が良いです。
libapache2のインストール
1 |
apt install libapache2-mod-php |
・php.iniをいじくる
1 |
vim /etc/php/7.0/apache2/php.ini |
・apacheにphpを認識させる
1 |
service apache2 reload |
MySQLを入れる
1 |
apt install mysql-server |
データベース管理にMySQLを入れます。
ユーザーパスワードを求められますので、適当に入力します。
データベースを作成
1 |
mysql -u root -p |
ここからはSQLなので最後に;を入れます。
1 |
mysql> create database thedatabse; |
・ユーザーの作成
1 |
GRANT ALL ON thedatabase.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'このユーザーのパスワード'; |
・SQLの終了
1 |
mysql> exit; |
・MySQLの再起動
1 |
service mysql restart |
ApacheとMySQLの自動起動設定
自動で起動されるようにします。
1 2 3 |
apt install sysv-rc-conf sysv-rc-conf apache2 on sysv-rc-conf mysqld on |
phpMyAdminのインストール
ブラウザからSQLを操作できるようにphpMyAdminを入れます。
1 |
apt install phpmyadmin |
・シンボリックリンクを作成
1 |
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf |
・phpMyAdminのログインパスを変える
・設定を読み込ませる
1 2 |
a2enconf phpmyadmin service apache2 reload |
iptablesでポートの開放
iptablesというのは外部内部のネットアクセスに対していろいろ設定する箇所です。さくらのVPSは特殊なロケーションにあるので注意が必要です。
1 |
vim /etc/iptables/iptables.rules |
デフォルトではSSH用の22のみが開いているので、SSHでのみアクセス可能な状態です。
このiptalbesというやつはセキュリティの肝なので、慣れてきたら厳密に設定してください。今はとりあえずポートの開放だけします。
※「i」で編集、「Esc」で編集オフ、「:wq」で保存して終了、「:q!」で保存せず終了、「/」で検索
1 2 3 |
--A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT --A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT --A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT |
を追加します。
編集したらiptables本体に反映
1 |
iptables-restore < /etc/iptables/iptables.rules |
これでブラウザにIPアドレスを打ち込むと初期ページが表示されるはずです。
また、https://IPアドレス/phpmyadminも表示できるはずです。
FTPサーバーを入れる
FTPクライアントソフトからファイルをアップロードするにはFTPサーバーを入れる必要があります。
1 |
apt install vsftpd |
・設定ファイルを編集する
1 |
vim /etc/vsftpd.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#25行目 anonymous_enable=NO -<デフォルトでNOだが、一応チェック #31行目 write_enable=YES #99行目 ascii_upload_enable=YES #100行目 ascii_download_enable=YES chroot_local_user=YES #121行目 chroot_list_enable=YES #125行目 chroot_list_file=/etc/vsftpd.chroot_list #131行目 ls_recurse_enable=YES #最終行に追加 local_root = /var/www/html |
※サーバー管理者≠FTPユーザーの場合は上位フォルダにアクセスできないようにする必要があります。
・FTPユーザーを作成
1 2 |
useradd ftp-user passwd ftp-user |
・ユーザーリストにユーザーを追加する
1 |
vim /etc/vsftpd.chroot_list |
ここにFTPユーザー名を追加する
・フォルダの権限変更
上記だけでは閲覧はできてもアップロードなどができないので、権限を与えます。
1 2 3 |
cd /var/www chown ユーザー名(ubuntu):ユーザーグループ(ubuntu) html chmod 755 html |
・再起動
1 |
service vsftpd restart |
DNSの設定
ドメインとIPアドレスを紐づけます。IPアドレスだけでもアクセスできるので独自ドメインを必要としない場合はスルーで結構です。
さくらのVPSのコントロールパネルの右上の方に「ネームサーバー登録」という項目があるので、それをクリックします。
ここに取得しているドメインを新規登録して、
ゾーン編集をして、
VPSのグローバルIPとドメインを紐づけします。
ドメインを取得したサービス(お名前ドットコムとか)の設定でネームサーバーに下記を設定します。
プライマリネームサーバー ns1.dns.ne.jp
セカンダリネームサーバー ns2.dns.ne.jp
(レンタルサーバーと一緒です)
SSLで接続できるようにする
正式にSSLで接続できるようにするには認証局を通す必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
cd /etc/ssl/private openssl genrsa -aes128 -out server.key 2048 openssl rsa -in server.key -out server.key openssl req -new -days 3650 -key server.key -out server.csr #管理者情報をいろいろ入力 openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 chmod 400 server.* vim /etc/apache2/sites-available/default-ssl.conf # 32,33行目 SSLCertificateFile /etc/ssl/private/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key a2ensite default-ssl a2enmod ssl service apache2 reload |
こちらのサイト様 参照:https://www.server-world.info/query?os=Ubuntu_16.04&p=httpd&f=8
これでトレードシステムを稼働させるサーバーとしての準備ができました。他にも用途に応じてオプションがありますが、ここまでできればそちらは適宜できると思います。
その他オプション
・SSHの鍵方式
・iptablesの詳細設定
・WordPressのインストール
・サブドメインの設置
・SSL証明書の取得
・メールサーバーの設置(さくらサーバーでははがき確認後になります)
関連記事
-
AWSでWebサーバー構築するやり方 (EC2xUbuntu)
今回はAWSのサーバーの構築を扱ってみようと思います。前回VPSを使った一般的なWEBサーバーの構築
-
AWSで無料でWindows VPSを使う方法
自動売買とVPSは切っても切り離せません。しかし、その自動売買が本当に儲かるかどうかわからないのに、