今更感はありますが、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でも上のページが表示されるのを確認しました。