CentOS7.4にphp72をインストール
CentOSにphpの最新バージョンを入れて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の情報画面が表示されれば成功です。
次回
いよいよ次回はphpとsqlite3(データベース)を連携してデータベースからデータをブラウザに表示までやってみようと思います。
ではでは!
nginxでブラウザから閲覧できるようにする
前回まででVPSを借りて公開鍵を使ったログインができるようになりました。
今回は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ページが出てくれば成功です。
ちなみに設定ファイルは/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からの操作になります。
- サーバを借りる
- サーバに削除ロックをかける
- ターミナルからログイン
- ユーザを追加
- 鍵を使ったログインができるようにする
- rootユーザでのログインを禁止
- パスワードログインを禁止
- 7.4では下記行が2つあるので片方をコメントアウト(# Pass~)しましょう
- ファイヤウォールの自動起動するようにする
- xxxxxはポート番号
- firewalldを再起動
サーバを借りる
申し込みは下記サイトから。
ログインするとコントロールパネル画面が現れるので左上の「サーバ追加」を押す。
サーバの選択画面
上から必要なものを選んでいく。
プラン
- タイプ:VPSを選択。
- リージョン:サーバの場所なので日本人中心のアプリなら東京がよい。
- メモリ:お試しなら512MB、本番稼働なら1GBにしておけばあとで2GB以上に変更できます。
イメージ
- イメージタイプ:OS
- OS:CentOS 特にこだわりがなければCentOSで。デフォルトだけあって情報量が多いです。次点でUbuntu。
- バージョン:最新で。
- rootパスワード:ログインする際のパスワード。あとで使うので控えておきましょう。
オプションは一番下のネームタグ(サーバ一覧のところに表示される名前)だけ好きな名前に変えて、 それ以外はそのままで。
ネームタグも後で変更できます。
内容と金額を確認してよければ「追加」ボタンを押すと20秒もたたずに追加されます。
サーバに削除ロックをかける
サーバ一覧に表示されたらまずは削除ロックをかけておきましょう。
conohaのコントロールパネルは削除もすぐにできちゃいます。
間違えて削除しないようにサーバのチェックボックスにチェックをいれて「削除ロック」を選択。
リストの頭に鍵マークが付いていればOKです。
ターミナルからログイン
ipアドレスはネームタグをクリックし、ネットワーク情報の中にIPアドレス(借りたサーバの住所)があるのでこれをメモ。
ssh root@ipアドレス
と打つと、「繋いだことないんだけど繋いじゃうよ?」みたいなこと聞かれるのでyesを その後パスワードを聞かれるので設定したrootパスワードを入力すると入れます。
ユーザを追加
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でよく使うので覚えておきましょう。
下記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でのログインを禁止にします。
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
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回やっても忘れたころに同じ操作して??ってなるので
ノウハウは忘れず残していこうと思います。