三蔵開発メモ

Web開発やインフラ関連のメモを共有します

CentOS6.7でApache+FuelPHP+MongoDB環境を構築したメモ

結構つまづくところがあったので、備忘録的にメモします。

各種モジュールインストール

$sudo yum install gcc -y
$sudo yum install openssl-devel -y

※mongoのphpモジュールを入れるときコンパイルするので必要になります。

mongodbのリポジトリ追加

$sudo vi /etc/yum.repos.d/mongodb.repo
**以下を入力**
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

mongodbインストール

$sudo yum install -y mongodb-org
$sudo service mongod start
$sudo chkconfig mongod on

apacheインストール

$sudo yum install httpd -y

phpインストール

$sudo yum install php php-pear php-devel php-pdo php-dom php-mbstring -y

mongoPHPライブラリインストール

$sudo pecl install mongo

※ここでつまづきやすい。gccとopenssl-develをちゃんと入れる。何か聞かれてもデフォルトでOK

php.ini設定

$sudo vi /etc/php.ini
**以下を入力or変更**
extension=mongo.so
[中略]
date.timezone= Asia/Tokyo
[中略]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On

apache vhosts設定

$sudo vi /etc/httpd/conf.d/vhosts.conf
**以下を入力**
<VirtualHost *:80>
    DocumentRoot /var/www/html/fuelphp/public
    ErrorLog logs/fuelphp_error.log
    CustomLog logs/fuelphp_access.log combined
    SetEnv FUEL_ENV development
    <Directory /var/www/html/fuelphp/public>
        DirectoryIndex index.php
        AllOwoverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

※「SetEnv FUEL_ENV」の所は環境ごとにわける。development,production等。公式のドキュメント参照

Fuelphp設置

公式サイトからダウンロードし、展開。 フォルダ名を「fuelphp」に変更。 「fuelphp」フォルダを/var/www/html/下に設置 「public/.htaccess」の以下の行をコメントアウト

#Options +FollowSymLinks -Indexes

「fuel/app/config/config.php」の該当箇所を以下のように変更。

/**
 * Localization & internationalization settings
 */
'language'           => 'ja', // Default language
// 'language_fallback'  => 'en', // Fallback language when file isn't available for default language
'locale'             => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set
[中略]
/**
 * DateTime settings
 *
 * server_gmt_offset    in seconds the server offset from gmt timestamp when time() is used
 * default_timezone     optional, if you want to change the server's default timezone
*/
// 'server_gmt_offset'  => 0,
'default_timezone'   => 'Asia/Tokyo',

設置確認

http://localhost/
にアクセスして、welcome画面が表示されれば完了。

MapKitでMKMapViewを表示し、任意の場所にピンを立てる。

MapKitの使い方で少々苦労したのでメモ

まず、「Linked Frameworks and Libraries」というところに「MapKit.framework」を追加。
xcodeの「Build Settings」などが選択できるページの「General」タブの下部にある)

MainViewController.m

#import <MapKit/MapKit.h>

@interface MainViewController ()<MKMapViewDelegate>

@property (storng, nonatomic)MKMapView *mapView

@end

@implementation MainViewController

- (id)init
{
    self = [super init];
    if (self) {
        
    }
    return self;
}

-(void)viewDidLoad
{
   //Map表示(画面いっぱい)
   //大きさを指定して初期化
    self.mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
    self.mapView.delegate = self;
    [self.view addSubview:self.mapView];

    //緯度と経度を設定(これは東京タワー)
    double latitude = 35.65858;
    double longitude = 139.745433;
    //Mapの表示を指定
    MKCoordinateRegion region = self.mapView.region;
    region.span.latitudeDelta = 0.05;    //緯度の倍率
    region.span.longitudeDelta = 0.05; //経度の倍率
    region.center = CLLocationCoordinate2DMake(latitude, longitude); //表示位置の緯度と経度
    [self.mapView setRegion:region animated:YES];
    
    //Pin表示
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
    annotation.coordinate = CLLocationCoordinate2DMake(latitude, longitude); //ピンをたてる位置を指定
    [self.mapView addAnnotation:annotation];
}

@end

MKMapViewを理解する上で大事なのが、
MKCoordinateRegionとMKPointAnnotation。
ほかのUIパーツのようにパーツそのもののプロパティに色々設定するのではなく、
mapviewはただ表示だけさせる。
regionというオブジェクトでどの位置に表示させて、倍率等をどうするか指定。
pinはannotationというオブジェクトで位置などを指定。
それぞれをmapviewにセットする。

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS7対応】増補改訂版

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS7対応】増補改訂版