ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。プログラム&ロボット大好きなポンコツが日々の記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

apache2上でCodeIgniter3を動かしてみるまでの道のり

今更感はありますが、apache2とCodeIgniter3を使ってみました。

それをgcp上のCompute EngineのVMインスタンスで動かします。

OSは何も考えずにDebian GNU/Linux 9を使っています。

 

CodeIgniterをインストール

インストールと言っても、単純にダウンロードするだけです。

GithubにプッシュしてCircleCIがrsyncしてデプロイするだけの簡単構成。

/var/www/html/の直下にapplicationディレクトリとかindex.phpが置かれるように配置しています。

 

apache2のインストール

apache2のインストールも以下のようなコマンドでインストールします。

$ apt-get install apache2

 

phpのインストール

PHPもインストールしないといろいろ動きません。

$ apt-get install php

$ php -v

PHP 7.0.30-0+deb9u1 (cli) (built: Jun 14 2018 13:50:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.30-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

PHP7.0が入りました。

 

.htaccessの有効化

まず、.htaccessを有効にしないといけません。

$ vim /etc/apache2/apache2.conf

以下のように、Directory /var/www/のところのAllowOverrideをNoneからAllに変更します。

...

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

...

そして、apache2を再起動します。

$ service apache2 restart

 

.htaccessの設定

/var/www/html/.htaccessに当たるところ(CodeIgniterのapplicationディレクトリと同じ階層に.htaccessを作成)

この.htaccessの中身は以下のようになります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

 

動作確認をしてみる

さあ!きっとこれでいけるはず!

と思ってアクセスしたら、以下のようなエラーが。。。。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.25 (Debian) Server at 35.200.106.78 Port 80

ぐぬぬ、、と思って、ログを見てみる。

$ tail -f /var/log/apache2/error.log
[Tue Oct 02 14:41:17.559946 2018] [core:alert] [pid 13792] [client 119.240.246.50:51900] /var/www/html/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

ほう、RewriteEngineがないようなのでエラーになっているみたい。

ということで、ググる。

参考:Ubuntu版Apache2でmod_rewriteを有効にする

$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:

$systemctl restart apache2

 

これで、もう一度確認してみる。

無事に動きました。

ちゃんとhttp://[IPアドレス]/welcomeでも上のページが表示されるのを確認しました。