Nokogiriでスクレイピング
C:\>ruby -v ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
タイトルをスクレイピングして取得する。
#! ruby -Ku p "文字化けしないか確認しておく" require "open-uri" require "nokogiri" url = "http://snit.hatenadiary.jp/" charset = nil html = open(url) do |f| charset = f.charset f.read end doc = Nokogiri::HTML.parse(html, nil, charset) p doc.title
実行
C:\>ruby sample3.rb "文字化けしないか確認しておく" "snit21の日記"
最初の定義がないとそもそも日本語が文字化けする。
#! ruby -Ku
参考
http://ginzanomama.hatenablog.com/entry/2013/02/27/162828
http://morizyun.github.io/blog/ruby-nokogiri-scraping-tutorial
PHPとMySQL5.6の接続
socketファイルがバラバラで、 PHPからMySQLに接続するだけなのにずいぶんハマった。
MySQLのステータス確認
mysql> mysql \s -------------- mysql Ver 14.14 Distrib 5.6.12, for debian6.0 (x86_64) using EditLine wrapper Connection id: 1 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.6.12-log MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 14 sec Threads: 1 Questions: 5 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.357 --------------
MySQL設定ファイル
vi /etc/my.cnf [client] default-character-set=utf8 socket = /var/run/mysqld/mysqld.sock [mysqld] basedir = /opt/mysql/server-5.6 datadir = /data/mysql skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 skip-name-resolve lower_case_table_names = 1 default-storage-engine = InnoDB socket = /var/run/mysqld/mysqld.sock general_log=1 general_log_file=/var/log/mysql/general.log log_error=/var/log/mysql/error.log pid-file=/var/log/mysql/mysql.pid slow_query_log=ON slow_query_log_file=/var/log/mysql/slow-query.log long_query_time =1 innodb_buffer_pool_size=64M innodb_log_file_size=16M innodb_flush_method=O_DIRECT query_cache_size=128M query_cache_limit=2M query_cache_min_res_unit=4k query_cache_type=1 tmp_table_size=128M max_heap_table_size=128M table_open_cache=1024 max_allowed_packet=1M sort_buffer=256K read_buffer_size=256K read_rnd_buffer_size=256K join_buffer_size=256K key_buffer_size=16M max_connections=256 thread_cache=256 wait_timeout=60 [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8
phpinfo()を確認してphp.iniを修正。
Configuration File (php.ini) Path /etc/php5/fpm Loaded Configuration File /etc/php5/fpm/php.ini pdo_mysql.default_socket /var/run/mysqld/mysqld.sock mysql.default_socket /var/run/mysqld/mysqld.sock mysqli.default_socket /var/run/mysqld/mysqld.sock
php5-fpm、再起動
/etc/init.d/php5-fpm restart
lighttpdの設定(編集中)
sudo apt-get install lighttpd
vi /etc/lighttpd/lighttpd.conf #server.document-root = "/var/www" server.document-root = "/usr/share/lighttpd" # Nginxポートと重複するのでずらす server.port = 81
fastcgiの設定
vi /etc/lighttpd/conf-available/15-fastcgi-php.conf ・・・ "socket" => "/var/run/php-fpm/php-fpm.sock",
再起動
/etc/init.d/lighttpd restart
NginxからPHP-FPMをsocket通信にする。
※編集中
いろいろインストール
sudo apt-get install php5-fpm php5-cli -y
vi /usr/bin/php-fastcgi #! /bin/sh /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www-data -f /usr/bin/php5-cgi sudo chmod 755 /usr/bin/php-fastcgi
vi /etc/init.d/php-fastcgi #!/bin/bash ### BEGIN INIT INFO # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: php-fastcgi script # Description: php-fastcgi script ### END INIT INFO # env SCRIPT=/usr/bin/php-fastcgi USER=www-data RETVAL=0 PIDFILE=/var/run/php5-cgi.pid # start or stop case "$1" in start) su - $USER -c $SCRIPT pidof php5-cgi > $PIDFILE RETVAL=$? ;; stop) killall -9 php5-cgi echo '' > $PIDFILE RETVAL=$? ;; restart) killall -9 php5-cgi su - $USER -c $SCRIPT pidof php5-cgi > $PIDFILE RETVAL=$? ;; *) echo "Usage: php-fastcgi {start|stop|restart}" exit 1 ;; esac
fastcgi起動
sudo chmod 755 /etc/init.d/php-fastcgi sudo update-rc.d php-fastcgi defaults sudo service php-fastcgi start
Nginx設定ファイル
vi /etc/nginx/nginx.conf # Upstream to abstract backend connection(s) for PHP. upstream php { #this should match value of "listen" directive in php-fpm pool server unix:/var/run/php-fpm/php-fpm.sock; # server 127.0.0.1:9000; }
/var/run/php-fpm/ディレクトリが無いときは作成しておく。
php-fpm設定
vi php-fpm.conf listen = /var/run/php-fpm/php-fpm.sock;
Nginxを再起動して設定を有効にする。
参考
http://www.lonelycoder.be/nginx-php-fpm-mysql-phpmyadmin-on-ubuntu-12-04/
Ubuntu 12.04.4 にMySQL5.6をdebパッケージからインストール
ここからダウンロード。Debian Linuxから選ぶ。 http://dev.mysql.com/downloads/mysql/
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-debian6.0-x86_64.deb
インストール
sudo dpkg -i mysql-5.6.16-debian6.0-x86_64.deb sudo apt-get upgrade sudo apt-get install libaio1
ユーザ追加
sudo groupadd mysql sudo useradd -r -g mysql mysql sudo chown -R root:root /opt/mysql sudo chown -R mysql:mysql /opt/mysql/server-5.6
MySQL初期設定
sudo install -o mysql -g mysql -d /data/mysql sudo -u mysql /opt/mysql/server-5.6/scripts/mysql_install_db --user=mysql --datadir=/data/mysql
設定ファイル。MySQL5.6で文字コードの設定方法などが変わっているようなので、要確認
sudo vi /etc/my.cnf [mysqld] basedir = /opt/mysql/server-5.6 datadir = /data/mysql
パスを通す。
sudo vi /etc/profile.d/mysql.sh PATH="/opt/mysql/server-5.6/bin:$PATH" MANPATH="/opt/mysql/server-5.6/man:$MANPATH"
実行権限。実行するだけでは有効にならない。再度ログインが必要。
sudo chmod 755 /etc/profile.d/mysql.sh
実行する
mysql
セキュリティ対策。rootのパスワードの設定と不要なテーブルを削除。
mysql_secure_installation
参考 http://ledsun.hatenablog.com/entry/2013/06/26/184850 http://weblog.riywo.com/post/35522896526