MacPortsとは
コマンドプロンプトからプログラムをパッケージ単位で簡単にインストールすることができるパッケージ管理システムです。
Current environment
- Macports 2.3.3
- MySQL5.6
- PHP5.4
- Apache2.2.26
MacPortsでインストールしたものは全て/opt/local/
以下に入ります。
Prepare
- Macportsをインストールします。
- XcodeをAppStoreからインストールします。
- ターミナルで
% xcode-select --install
を叩きます。 - portが使えるようパスを追記します。
% vi ~/.profile (or % vi ~/.bash_profleなどシェルに合わせた環境設定ファイル)
ファイルに下記を追加します。
export PATH=/opt/local/apache2/bin:/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/share/man:$MANPATH
macports自身とリストを最新状態に更新しておきます。
% sudo port selfupdate % sudo port upgrade outdated
.profileを読み込み ( パスを反映させ ) ます。
% source ~/.profile
オプション
// portのPATH確認 % which port (php, mysql, pear...) // 設定PATHの表示 % echo $PATH // 利用可能なパッケージの確認 % sudo port list | grep mysql (php, apache, pear...) // Macのデフォルトのパス設定へ、MacPortsのパスを入れ込みます(オプション)。 % sudo vi /etc/paths == /opt/local/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin == // MacデフォルトのApacheの停止 % sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
Install Command line tools
% xcode-select --install
xcode-select: note: install requested for command line developer tools
Install each Software
% sudo port install subversion mysql56 mysql56-server ImageMagic php55 +pear php55-curl php55-gd php55-imagick php55-mbstring php55-mcrypt php55-mysql php55-openssl apache2 php55-apache2handler
pearのインストール
MySQL
// mysqlと打ち込んだらmysql56を読み込むよう % sudo port select mysql mysql56
MySQLの初期化
ログに書かれている初期化コマンドを実行する
$ sudo -u _mysql /opt/local/lib/mysql56/bin/mysql_install_db // 新しいパスワードのみ設定 /opt/local/lib/mysql56/bin/mysqladmin -u root password 'new-password' /opt/local/lib/mysql56/bin/mysqladmin -u root -h Mac.local password 'new-password' // もしくはセキュアインストール(推奨) Alternatively you can run: /opt/local/lib/mysql56/bin/mysql_secure_installation
http://hrt0kmt.hatenablog.com/entry/2014/11/20/000000hrt0kmt.hatenablog.com
MySQLの設定ファイル
MySQLの設定ファイルを以下のように編集します。
$ sudo vi /opt/local/etc/mysql55/my.cnf # Use default MacPorts settings # !include /opt/local/etc/mysql56/macports-default.cnf [mysqld] port=3306 key_buffer_size=16M max_allowed_packet=16M socket = /opt/local/var/run/mysql56/mysqld.sock [client] port=3306 socket = /opt/local/var/run/mysql56/mysqld.sock
PHP
ログを見ながらphp.iniファイルを編集します。
- Data_timezoneの設定
- Socketの設定
% cp /opt/local/etc/php56/php.ini-development /opt/local/etc/php56/php.ini % vi /opt/local/etc/php56/php.ini
[Date] date.timezone = Asia/Tokyo [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8 mysql.default_socket = /opt/local/var/run/mysql56/mysqld.sock mysqli.default_socket = /opt/local/var/run/mysql56/mysqld.sock pdo_mysql.default_socket=/opt/local/var/run/mysql56/mysqld.sock
Activate PHP on Apache
If this is your first install, you need to enable php56-apache2handler in your web server. To enable php56-apache2handler, run: cd /opt/local/apache2/modules sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php55.so % sudo vi /opt/local/apache2/conf/httpd.conf Include /opt/local/apache2/conf/extra/mod_php.conf <IfModule mime_module> AddType application/x-httpd-php .php </IfModule> LoadModule php5_module modules/libphp5.so Include conf/extra/mod_php.conf NameVirtualHost *:80 AddDefaultCharset utf-8 <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> ServerName broadcasthost AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost DocumentRoot /opt/local/apache2/htdocs <Directory /opt/local/apache2/htdocs> Options FollowSymLinks AllowOverride ALL // .htaccessによる設定上書きを許可 Order allow,deny Allow from All </Directory> </Virtualhost> <VirtualHost *:80> ServerName phpmyadmin DocumentRoot /opt/local/www/phpmyadmin <Directory "/opt/local/www/phpmyadmin"> Order allow,deny Allow from all </Directory> </VirtualHost>
Start MySQL
% sudo port load mysql.server % mysql
接続できない場合はこちら
Setting hosts
% sudo vi /etc/hosts 127.0.1 test.local
Start Apache
% sudo /opt/local/apache2/bin/apachectl -k start
※ スタート時、エラーmodule php5_module is already loaded, skipping
の場合は、LoadModuleにphp5_moduleの重複した記述があるのでひとつ削除します。
参照