観る将エンジニアブログ

見る将歴8年のエンジニアの技術系ブログ。

CentOS7.4にphp72をインストール

CentOSphpの最新バージョンを入れてfpmで動かすまでの手順になります。

OSとバージョンはCentOS7.4になります。

# レポジトリ情報を追加
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# php72をインストール
yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt

# php-fpmをインストール
yum install php72-php-fpm

# インストールされたか確認
php -v 

# こんな感じで表示される
# PHP 7.2.2 (cli) (built: Jan 30 2018 12:47:44) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

設定ファイル(/etc/opt/remi/php72/php-fpm.d/www.conf )に変更が必要。

設定ファイルの中のapaceってなってるところをnginxに変え、listen.modeを0666に変更。

vi /etc/opt/remi/php72/php-fpm.d/www.conf 

- user = apache
- group = apache
- listen.owner = apache
- listen.group = apache
- listen.mode = 0660

+ user = nginx
+ group = nginx
+ listen.owner = nginx
+ listen.group = nginx
+ listen.mode = 0666

その後php-fpmを再起動します。

systemctl restart php72-php-fpm

次にnginx側の設定ファイルを編集する。

- location / {
-     root   /usr/share/nginx/html;
-     index  index.html index.htm;
- }
+ location / {
+     root   /home/ユーザ名/www;
+     index  index.html index.htm index.php;
+ }

- #location ~ \.php$ {
- #    root           html;
- #    fastcgi_pass   127.0.0.1:9000;
- #    fastcgi_index  index.php;
- #    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- #    include        fastcgi_params;
- #}
+ location ~ \.php$ {
+     root           /home/ユーザ名/www;
+     fastcgi_pass   127.0.0.1:9000;
+     fastcgi_index  index.php;
+     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
+     include        fastcgi_params;
+ }

設定を反映させるために systemctl restart nginxで再起動。

ユーザディレクトリ下にwwwフォルダを作ってindex.phpを作成します。

mkdir ~/www
vi ~/www/index.php
<?php
    phpinfo();
?>

確認

ブラウザでhttp://ipアドレス/で表示されるか確認。

403 forbiddenが表示されたときはユーザディレクトリに権限が足りないので chmod 755 /home/ユーザ名で追加。

下記のようなphpの情報画面が表示されれば成功です。

f:id:tukushiari:20180201111114p:plain

次回

いよいよ次回はphpとsqlite3(データベース)を連携してデータベースからデータをブラウザに表示までやってみようと思います。

ではでは!

nginxでブラウザから閲覧できるようにする

前回まででVPSを借りて公開鍵を使ったログインができるようになりました。

www.conoha.jp

今回はnginxを使ってWEBブラウザから閲覧できるようにします。

OSはCentOS 7.4になります。

nginx(えんじんえっくす)って何?

apacheと並ぶwebサーバアプリ。

10k問題(1万人が同時に接続すると厳しい問題)を解決するためにできたものらしく、シンプルで省メモリらしい。

ぶっちゃけそこまでユーザが集まったことがないからapacheでもどっちでもいいですが、

最近シェアが伸びていて、設定ファイルがシンプルで使い易いので今回はnginxを使います。

導入手順

# レポジトリ情報を書く
vi /etc/yum.repos.d/nginx.rep

ファイルの内容は下記。(本家サイトからなので間違いはないかと。)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
# インストール
yum install nginx --evablerepo=nginx

# 起動
systemctl start nginx 

このままでは http://xxx.xxx.xxx.xxx(ipアドレス)としても「ページが見つかりません」と表示されまだ見えません。

ファイアウォールの設定を追加します。

# http通信を許可する
firewall-cmd --add-service=http --permanent

# 設定反映のためリロード
firewall-cmd --reload

ブラウザでhttp://xxx.xxx.xxx.xxxと打ち込むと下記のようにnginxのwelcomページが出てくれば成功です。

f:id:tukushiari:20180131171226p:plain

ちなみに設定ファイルは/etc/nginx/nginx.confとその下の/etc/nginx/conf.d/default.confにあります。

デフォルトページのhtmlは/usr/share/nginx/htmlに置いてあります。

/etc/nginx/conf.d/default.confのrootのところにあるディレクトリを書き換えれば自分の好きなディレクトリを公開できます。

まとめ

ここまでくれば自分のホームページを作ったりと割とサーバらしいことができるようになった気がします。

次回はphpを起動するところまで解説しようと思います。

ではでは!

ConoHaVPSでサーバを借りてから公開鍵を使ってログインできるまで設定

次回アプリの構想もだいたい決まってきたのでサーバを立てようと思います。

前作アプリ詰将棋らっしゅもConoHaのVPSサーバを使っていて何の問題もなく動いているので今回もConoHaで行きます。

この記事から何回かに分けてVPSサーバを借りて色々Unityアプリからデータを取ってくるところまで解説します。

Macからの操作になります。

サーバを借りる

申し込みは下記サイトから。

www.conoha.jp

ログインするとコントロールパネル画面が現れるので左上の「サーバ追加」を押す。

f:id:tukushiari:20180130175542p:plain

サーバの選択画面

上から必要なものを選んでいく。

プラン

  • タイプ:VPSを選択。
  • リージョン:サーバの場所なので日本人中心のアプリなら東京がよい。
  • メモリ:お試しなら512MB、本番稼働なら1GBにしておけばあとで2GB以上に変更できます。

f:id:tukushiari:20180130175555p:plain

イメージ

  • イメージタイプ:OS
  • OS:CentOS 特にこだわりがなければCentOSで。デフォルトだけあって情報量が多いです。次点でUbuntu
  • バージョン:最新で。
  • rootパスワード:ログインする際のパスワード。あとで使うので控えておきましょう。

f:id:tukushiari:20180130175557p:plain

オプションは一番下のネームタグ(サーバ一覧のところに表示される名前)だけ好きな名前に変えて、 それ以外はそのままで。

ネームタグも後で変更できます。

f:id:tukushiari:20180130175652p:plain

内容と金額を確認してよければ「追加」ボタンを押すと20秒もたたずに追加されます。

サーバに削除ロックをかける

サーバ一覧に表示されたらまずは削除ロックをかけておきましょう。

conohaのコントロールパネルは削除もすぐにできちゃいます。

間違えて削除しないようにサーバのチェックボックスにチェックをいれて「削除ロック」を選択。

リストの頭に鍵マークが付いていればOKです。

f:id:tukushiari:20180130194343p:plain

f:id:tukushiari:20180130194346p:plain

f:id:tukushiari:20180130194347p:plain

ターミナルからログイン

ipアドレスはネームタグをクリックし、ネットワーク情報の中にIPアドレス(借りたサーバの住所)があるのでこれをメモ。

f:id:tukushiari:20180130200935p:plain

ssh root@ipアドレス

と打つと、「繋いだことないんだけど繋いじゃうよ?」みたいなこと聞かれるのでyesを その後パスワードを聞かれるので設定したrootパスワードを入力すると入れます。

f:id:tukushiari:20180130201433p:plain

ユーザを追加

rootユーザは管理者権限なのでなんでもできちゃうので、 新しいユーザ newuserさんを追加します。

newuserのところはご自分で決めたユーザ名に置き換えてください。

# ユーザ作成
adduser newuser

# パスワード設定
passwd newuser

# グループに追加
gpasswd -a newuser wheel

# newuserでログインできるか確認 Switch User
su newuser

# [newuser@ipadress root]$のように頭がユーザ名になっていれば成功です。
# 戻るときはsuでrootパスワードを入れるとrootユーザに戻れます。

鍵を使ったログインができるようにする

今はパスワードとipアドレスさえ分かればどこからでもアクセスできる状態です。

「パスワードが漏れなきゃいいんじゃない?」と思うかもしれませんが、

ブルードフォースアタック(順番にパスワードを入力していく)もあるので危険な状態です。

なのでRSA暗号鍵を使ってセキュリティを高めましょう。

暗号鍵でのログインを許可。

sudo vi /etc/ssh/sshd_config

viはunixのエディタで使い方は下記を見てみてください。

viはCUIでよく使うので覚えておきましょう。

viエディタの使い方

下記2行の設定を変更。

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

[注意]少し前までは RSAAuthentication yes を入れるようになっていましたが、非推奨でないようです。 CentOSの7.4以降はデフォルトでこの設定自体がなくなっています。

下記コマンドで設定を再読み込みします。

sudo systemctl restart sshd

鍵を作成

# newuserのディレクトリで行ってくださいsu newuser
# フォルダを作成 バージョン7.4では元からあるので下記3行は不要
pwd
# /home/newuser/が表示されることを確認
mkdir .ssh
chmod 700 .ssh

# 鍵を作成
cd .ssh
ssh-keygen -t rsa -b 4096
# 鍵の名前はお好みで
# パスワードも設定しておく

#公開鍵(xxxx.pub)をsushi_configで設定してあった名前に変更する
mv xxxx.pub authorized_keys

#644でもOK 他のユーザの書き込み権限がなければよい
chmod 600 authorized_keys

自分のPCに秘密鍵をコピーする

cat xxxx(さっきの鍵の名前)

で鍵の中身を表示し全てコピーします。

ここからはもう一枚ターミナルを開き、PC側に秘密鍵の設定をしていきます。

cd ~/.ssh
vi xxxx # catした内容をコピペする
chmod 600 xxxx

sshの設定ファイルの中に接続情報を書き込みます

# xxxx
Host xxxx
    HostName xxx.yyy.zzz.aaa(ipアドレス)
    User newuser
    Port 22
    IdentityFile ~/.ssh/xxxx
````

### 接続できるか確認

ターミナルからsshでログインできるか確認

ssh xxxx

### rootログインを禁止に

いよいよrootでのログインを禁止にします。

sudo vi /etc/ssh/sshd_config




rootユーザでのログインを禁止

PermitRootLogin no

パスワードログインを禁止

7.4では下記行が2つあるので片方をコメントアウト(# Pass~)しましょう

PasswordAuthentication no

再起動し設定を読み込む。

systemctl restart sshd

## ポート番号を変える

ファイヤウォールの自動起動するようにする

systemctl enable firewalld

xxxxxはポート番号

firewall-cmd --add-port=xxxxx/tcp --zone=public --permanent

firewalldを再起動

systemctl restart firealld




vi /etc/ssh/sshd_config




port xxxxx




systemctl restart sushi

自分のPC側の~/.ssh/ssh_configのポート番号も変えてsshログインできればOKです。

今日はここまです。


## まとめ

長くなりましたが家でいうと

<b>「家を借りて鍵を作って自分だけ入れるようになった。」</b>状態です。

ConoHaVPSは初期費用がかからず、日割り計算なのでちょっと触って見たい人にもオススメです。

サーバ構築は慣れが大切なので作って削除してがコントロールパネルですぐできるのもポイント。

私は上記の手順を5回はやっていますし、この記事通りいくか試すために2回通しでやっています。

Linuxはコマンドラインしか見えず、覚えるには手を動かすしかないのでトライアンドエラーでやっていくのがいいと思います。

[https://www.conoha.jp/referral/?token=4CsQUCEKVCch0IgKmdE4KenQTWug.dK2sjLeXR_4cMe.pFI_Eks-KJV:embed:cite]

上記のリンクから申し込みすれば1000円分のクーポンがついているので一番下のプランなら一ヶ月はタダで遊べます。

次回はnginxを入れてwebブラウザから見れるようにしたいと思います。

色々つまづくことがあればコメントで教えてください。

なるべくお答えするか新しく記事にしようと思います。

ではでは!

CentOSのviでシンタックスハイライト(色付け)する

CentOSでの設定関連はほぼviで編集しますが、デフォルト設定ではシンタックスハイライト(色付け)がされません。

今回はviで色付けされるようにします。

OSバージョンはCentOS7.4です。

viコマンドでvimを起動するように設定する

# rootユーザにスイッチ
su

#ルートディレクトリに移動
cd ~

# 設定ファイルを編集
vi .bashrc

.bashrcファイルに下記を追記。

alias vi='vim'

エイリアスは「別名」のこと。

これでviを打つとvimと打ったことになる。

source ~/.bashrc

で設定ファイルを再読み込みするとハイライトされているはず。

vimの設定

.vimrcに設定を書くとviを開くときに反映されます。

いろいろありますが、とりあえず下の2つだけ設定しておくだけでも便利になります。

# 行番号を表示する
set number
# 検索するときに大文字小文字を無視する
set ignorecase

終わり

linuxではvimで設定ファイルをいじることがあるので色々設定しておくとその後の作業が捗ります。

では!

PHPでPDO使ってDBにレコード挿入しようとしたときの起きたエラーまとめ

PHPでSQlite3を使うときにinsertやupdateできない事態に陥ったので忘備録。

結論から言うと

DBファイルとそのディレクトリに書き込み権限が足りていないのでchmodで権限付与

で解決しました。

attempt to write a readonly database

DBの書き込み権限が足りていませんでした。

ls -l
-rw-r--r-- #書き込み権限なし
chmod 777 xxxx.sqlite3 #777は乱暴
ls -l
-rwxrwxr-x 

unable to open database file

DBがあるディレクトリにも権限が必要。

drwxr-xr-x 2 root root     4096 Jan 26 17:33 tsumetore
chmod 777 tsumetore/ 
drwxrwxrwx 2 root root     4096 Jan 26 17:33 tsumetore

二度あることは三度ある

権限系は1回やっても忘れたころに同じ操作して??ってなるので

ノウハウは忘れず残していこうと思います。