ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2011年7月16日土曜日

macにapache、mysql、phpをインストールしてWeb開発

macでWeb開発をするときにいつもやってることメモ。

いわゆるMAMPとかを使わずに、apache、mysql、phpをインストールしてローカルで開発する手順です。自分用。
ドメインをhostsに設定して切り替えて開発します。

・ MacPortsを最新版にアップデートしておく
$ sudo port -d selfupdate
$ sudo port -d sync
・ apacheを入れる
$ sudo port install apache2
・ MySQLを入れる
$ sudo port install mysql5 mysql5-server
・ phpを入れる。オプションでpearとか有効にしておく
$ sudo port -d install php5 +apache2 +curl +mysql5 +pear +mbstring
・apache moduleのphp5を有効に。
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" /opt/local/apache2/modules/libphp5.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]


・MysqlのDBをセットアップ
$ sudo -u mysql mysql_install_db5
・サーバの起動
$ sudo /opt/local/share/mysql5/mysql/mysql.server restart
・Mysqlのパスワードを設定(以下はrootアカウントを設定する場合)
$ /opt/local/lib/mysql5/bin/mysqladmin -u root password '*********'
・Mysqlにログインしてみる
$ /opt/local/lib/mysql5/bin/mysql -u root -p


・apacheのconfigを修正
$ sudo vim /opt/local/apache2/conf/httpd.conf
httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-php .php .html .htm
</IfModule mime_module>

# これをやらないと.htaccessが有効にならない
<Directory "/opt/local/apache2/htdocs">
    AllowOverride All
</Directory>

# Virtual hosts
Include conf/extra/httpd-vhosts.conf


・apacheのVirtualHostを設定
$ sudo cp /opt/local/apache2/conf/extra/httpd-vhosts.conf /opt/local/apache2/conf/extra/httpd-vhosts.conf_bak
$ sudo vim /opt/local/apache2/conf/extra/httpd-vhosts.conf
httpd-vhosts.conf(※hogehoge.comを適当に読み替え)
#
# Virtual Hosts
#
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "/opt/local/apache2/htdocs/phpmyadmin"
    ServerName phpmyadmin
    ErrorLog "/opt/local/apache2/logs/error_log"
    CustomLog "/opt/local/apache2/logs/error_log" common

    <Directory "/opt/local/apache2/htdocs/phpmyadmin">
        Order deny,allow
        Allow from All 
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/opt/local/apache2/htdocs/hogehoge.com"
    ServerName hogehoge.com
    ServerAlias www.hogehoge.com
    ErrorLog "/opt/local/apache2/logs/hogehoge.com/error_log"
    CustomLog "/opt/local/apache2/logs/hogehoge.com/access_log" common

    <Directory "/opt/local/apache2/htdocs/hogehoge.com">
        Order deny,allow
        Allow from All 
    </Directory>
</VirtualHost>
・ログ用ディレクトリを作る
$ sudo mkdir /opt/local/apache2/logs/hogehoge.com
$ sudo chmod 777 /opt/local/apache2/logs/hogehoge.com
・apache再起動など
$ sudo /opt/local/apache2/bin/apachectl start
$ sudo /opt/local/apache2/bin/apachectl stop
$ sudo /opt/local/apache2/bin/apachectl restart


・MySQL用の設定を変更
$ sudo vim /opt/local/etc/mysql5/my.cnf
my.cnf
[mysqld]
max_allowed_packet=256M

・MySQL再起動など
$ sudo /opt/local/share/mysql5/mysql/mysql.server restart
(※必要ならばDB流しこみ)
$ sudo /opt/local/lib/mysql5/bin/mysql -uroot -p****** dbname < ~/hogehoge.sql


・pear関連
$ sudo pear install Cache_Lite
など。

・PHP Extension関連
$ sudo port install php5-mbstring
$ sudo port install php5-curl
$ sudo port install php5-mysql
$ sudo port install php5-iconv
($ sudo port install php5-imagick)

・hostsを編集
$ sudo vim /etc/hosts
/etc/hosts
127.0.0.1   localhost
127.0.0.1   phpmyadmin
127.0.0.1   hogehoge.com

・phpmyadminを設定
$ chmod 777 /opt/local/apache2/htdocs/
phpmyadminを落としてくる(今回は phpMyAdmin-3.4.3.1-all-languages )
$ mv ~/Downloads/phpMyAdmin-3.4.3.1-all-languages /opt/local/apache2/htdocs/.
$ cd /opt/local/apache2/htdocs/
$ ln -s phpMyAdmin-3.4.3.1-all-languages phpmyadmin


・phpの設定ファイルを修正
$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
$ sudo vim /opt/local/etc/php5/php.ini
php.ini
pdo_mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket =/opt/local/var/run/mysql5/mysqld.sock
short_open_tag = On

2010年7月2日金曜日

Mysqlのデータをmysqldumpでダンプして定期的にバックアップをとる

{$db_name}, {$password}, {$host_ip}, {$backup_dir}は各自の環境にて読み替えで。

いちおう元に戻すコマンドもメモ。

-mysql database dump command
$ mysqldump {$db_name} -u{$user_name} -p{$password} -h{$host_ip} --opt > db_`date +%Y%m%d%H%M%S`.dump

-mysql database restore command
$ mysql -u{$user_name} -p{$password} -h{$host_ip} {$to_insert_db_name} < db_**********.dump


これをcronに書いて定期的にbackupを取る。
あと定期的にダンプしたデータも消す。

# Backup DB
0 5 * * * /usr/bin/mysqldump {$db_name} -u{$user_name} -p{$password} -h {$host_ip} --opt > {$backup_dir}/db_`date +\%Y\%m\%d\%H\%M\%S`.dump
0 6 * * * /usr/bin/find {$backup_dir} -maxdepth 1 -type f -mtime +7 | /usr/bin/xargs /bin/rm


あとcronをチェックするときはログを見るとよい。
$ tail -f /var/log/cron