ローカルで動かしたLaravelをCentOSにデプロイする方法
前提: ソースがGitリポジトリに存在すること。
1. git cloneする。
# cd /var/www # git clone https://hoge.backlog.com/git/HOGE/hoge.git hoge # cd hode # chown -R apache:apache .
2. Composerをインストールする。
インストール済みなら不要。
# yum install composer
3. Composer で必要なファイルをインストールする。
# php composer install
4. .env をコピーして適当に書き換える。
# cp .env.example .env # vi .env
5. アプリケーションキーを生成する。
# php artisan key:generate
6. VirtualHost の設定をする。
# vi /etc/httpd/conf.d/hoge.conf
public に AllowOverride All しないとルーティングが有効にならないらしい。
<VirtualHost *:80> ServerName hoge.jp DocumentRoot /var/www/hoge/public ErrorLog logs/hoge-error_log CustomLog logs/hoge-access_log combined env=!no_log <Directory "/var/www/hoge/public"> AllowOverride All </Directory> </VirtualHost>
7. httpdに設定を読み込ませる。
# service httpd reload
git clone しようとしたら HTTP request failed と怒られたときの解決方法
CentOSのVPSでgit cloneしようとしたら、エラーになった。
# git clone https://hoge.backlog.com/git/HOGE/hoge.git hoge Initialized empty Git repository in /tmp/hoge/.git/ error: The requested URL returned error: 401 Unauthorized while accessing https://hoge.backlog.com/git/HOGE/hoge.git/info/refs fatal: HTTP request failed
いろいろぐぐって対策してみるけど解決できず。
git のバージョンが古いのが原因ぽいことがわかった。
こちらを参考にして git をアップデート。
≫ CentOS6でのgitアップデート(1.7→2.16)
既存gitのアンインストール
# git remove git
git2系がインストールできるrpmを入れる
# wget --no-check-certificate https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-15.ius.centos6.noarch.rpm # rpm -Uvh ius-release-1.0-15.ius.centos6.noarch.rpm
git2uをインストールする
# yum install git2u --enablerepo=ius Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Could not retrieve mirrorlist https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos6&arch=x86_64&protocol=http error was 14: Peer cert cannot be verified or peer cert invalid Error: Cannot find a valid baseurl for repo: ius
エラーになった。。。
参照したサイトでも似たようなエラーで、対策が書いてあった。
/etc/yum.conf に、以下の1行を追加する。
sslverify=false
リトライしたら成功。
>|| # yum install git2u --enablerepo=ius (略) Installed: git2u.x86_64 0:2.16.5-1.ius.centos6 Dependency Installed: git2u-core.x86_64 0:2.16.5-1.ius.centos6 git2u-core-doc.noarch 0:2.16.5-1.ius.centos6 git2u-perl-Git.noarch 0:2.16.5-1.ius.centos6 Complete!
git clone してみる。
# git clone https://hoge.backlog.com/git/HOGE/hoge.git hoge Cloning into 'hoge... Username for ... Password for ...
clone できた!
Vagrant+Homestead+nginxで502 Bad Gatewayエラー
VagrantのIPアドレスにアクセスしたら、502 Bad Gateway エラーが発生した。
ぐぐったらそれっぽいの発見。
≫ https://qiita.com/ragingalpaca/items/6fc645ebfd4604a336b3
サービス再起動で動く?
$ sudo service php7.2-fpm restart
php7.2-fpm ってサービスは何してるの?
≫ https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc
で、
$ service --status-all
してみたら、そもそも動いてない。
起動&自動起動するように設定。
$ service php7.2-fpm start $ systemctl enable php7.2-fpm
現場至上主義 Spring Boot2 徹底活用
献本いただきました。ありがとうございます。
専門学校での教科書に使えるのではないかと思いましたが、やはり「現場至上主義」な本は、教科書としては難易度が高すぎました。
しかし、副本としては学生にオススメするには良い本です。
今年からこちらの本を教科書として使っています。
入門書という位置づけなので基本的な情報がわかりやすく書かれています。
この本があれば、簡単なWebサイトを作れるようになります。
で、よくある機能を追加しようとするとすぐに情報不足になります。
ファイルアップロード・ダウンロード、ユーザー認証、メール送信などなど。
これらの方法が、現場至上主義 Spring Boot2 徹底活用には書かれてますので、副本として持っておくとカバーできます。
Thymeleafで画面の部品化ができるのは、知りませんでした。
似たような画面を複数作ったりするとき、同様の内容を複数の画面で求める場合などは役立ちそうです。
Spring Boot で接続してきたクライアントのIPアドレスを取得する方法
コントローラで HttpServletRequest を参照できるようにするために、@Autowiredでインスタンス変数requestを追加する。
request.getRemoteAddr() でIPアドレスを取得できる。
HogeController.java
@Autowired private HttpServletRequest request; public String getRemoteAddr() { return request.getRemoteAddr(); }
デフォルトのままではIPv6形式になってしまうので、IPv4形式のアドレスを返すようにするために、application.properties に以下の設定を追加する。
server.address=127.0.0.1