CURLOPT_RESOLVE

動的ドメイン解決したかったが、5.6でも7.0betaでも使えない。

PHP Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
PHP Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

 

追加されてない?と思ったが、

http://stackoverflow.com/questions/24351152/how-to-manually-resolve-hosts-in-https-connections-in-php

https://bugs.php.net/bug.php?id=63488&edit=3

 

ChangeLogはある。

http://www.php.net/ChangeLog-5.php#5.5.0

 

ソースを見ると、libcurlのバージョンに

#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */
REGISTER_CURL_CONSTANT(CURLAUTH_ONLY);
REGISTER_CURL_CONSTANT(CURLOPT_RESOLVE);
#endif

 

yuminstallだと、7.19までしか入らない

libcurl-7.19.7-46.el6-x86_64

 

libcurlを更新

wget http://www.execve.net/curl/curl-7.46.0.tar.bz2

tar xf curl-7.46.0.tar.bz2

cd curl-7.46.0

./configure –enable-libcurl-option

make

make install

 

phpをリビルド

cd /usr/local/src/php-5.6.12

./configure 前と同じオプション

make

make install

wget pure-ftpd-1.0.32

※1.0.42は、configure で、autoconfでエラー

※yum install (1.0.30)でも動作

 

cd pure-ftpd-1.0.32

./configure –with-pam –with-pgsql=/var/lib/pgsql

make

make install

cp xxx /etc/init.d/pure-ftpd-src

cp xxx /etc/pure-ftpd/pure-ftpd-src.conf

PGSQLConfigFile               /etc/pure-ftpd/pureftpd-pgsql.conf

PAMAuthentication             no

UnixAuthentication            no

CreateHomeDir               yes

 

/etc/pure-ftpd/pureftpd-pgsql.conf

諸々

SELECT “Password” FROM users WHERE “User”=’\L’

ダブルクォーテーションが必要

yum -y install tcp_wrappers-devel.x86_64

yum install libcap-devel

 

wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz

tar xvzf vsftpd-3.0.3.tar.gz

cd vsftpd-3.0.3

 

vi vsf_findlibs.sh

vi builddefs.h

make

make install

 

vi /etc/init.d/vsftpd-3.0.3

 

postreqsql のインストール

yum install postgresql-server

# pam_pgsql をbuildするため

yum install postgresql-client

yum install postgresql-contrib

yum install postgresql-devel

 

pam_pgsqlのインストール

cd /usr/local/src/

wget https://github.com/pam-pgsql/pam-pgsql/archive/release-0.7.3.2.zip

unzip release-0.7.3.2.zip

cd pam-pgsql-release-0.7.3.2/

./autogen.sh

./configure –libdir=/lib64

#pamのlibが入っている

make

make install

# /usr/local/lib/security/pam_pgsql.so

 

vsftpd on postgresql

# su – postgres
-bash-4.1$ createuser vsftpd
新しいロールをスーパーユーザとしますか? (y/n)y
パスワード:

-bash-4.1$ psql -U postgres
ユーザ postgres のパスワード:

postgres=# alter user vsftpd with password ‘vsftpd’;
ALTER ROLE

-bash-4.1$ createdb vsftpd -U vsftpd
パスワード:

-bash-4.1$ psql -U vsftpd
ユーザ vsftpd のパスワード:

vsftpd=# CREATE TABLE “accounts”(
vsftpd(# “i_id” SERIAL,
vsftpd(# “s_username” VARCHAR(30) NOT NULL,
vsftpd(# “s_password” VARCHAR(50),
vsftpd(# “b_expired” BOOLEAN DEFAULT false,
vsftpd(# CONSTRAINT “accounts_s_username_key” UNIQUE(“s_username”)
vsftpd(# );
NOTICE: CREATE TABLEはシリアル列”accounts.i_id”用に暗黙的なシーケンス”accounts_i_id_seq”を作成します。
NOTICE: CREATE TABLE / UNIQUEはテーブル”accounts”に暗黙的なインデックス”accounts_s_username_key”を作成します
CREATE TABLE

vsftpd=# insert into accounts(s_username, s_password) values(‘xxxx’,md5(‘yyyyy’));

 

vsftpd設定

vi /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd

anonymous_enable=NO

virtual_use_local_privs=YES
guest_enable=YES
local_root=/home/nilesflow/vsftpd_root/$USER
hide_ids=YES
guest_username=nilesflow
user_sub_token=$USER

chroot_local_user=YES

dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=YES

 

vsftpd pam設定

vi /etc/pam.d/vsftpd

auth required pam_pgsql.so config_file=/etc/pam_pgsql_vsftpd.conf
account required pam_pgsql.so config_file=/etc/pam_pgsql_vsftpd.conf

 

vsftpd pam postgresql 設定

vi /etc/pam_pgsql_vsftpd.conf

debug
pw_type = md5
connect = hostaddr=127.0.0.1 port=5432 dbname=xxxxx user=xxxxx password=xxxxx connect_timeout=15
auth_query = select s_password from accounts where s_username = %u
acct_query = select b_expired as acc_expired, 0 as acc_new_pwreq, (s_password ISNULL OR s_password = ”) as user_password from accounts where s_username = %u

 

ディレクトリ作成

mkdir /home/nilesflow/vsftpd_root/nilesflow

 

local_rootでディレクトリ自動作成できないのが。。。

 

ディレクトリ作成できないのは、直接 secutil.c をいじればできるが(以下適当)

retval = str_mkdir(p_ext_dir_str, 0775);
chmod(str_getbuf(p_ext_dir_str), 0775);
retval = chown(str_getbuf(p_ext_dir_str), 0, 0);

./configure

make

make install

 

./configure で以下が出た

PAM enabled but headers or library not found

以下で回避

yum install pam-devel

http://qiita.com/takoba/items/0b50f6f33d7c44a85bef

 

cp system/startup/rc.monit /etc/init.d/monit

chmod a+x /etc/init.d/monit

MONIT=/usr/local/bin/monit

 

cp monitrc /etc/.

jsdoc3、yuidoc, esdocを試した三田

jsdoc3がシンプル。UIが貧弱

yuidocは、UIはいいけど、@method の追加とかが手間

esdocはエラーになったので、ちゃんと確認していない。

 

ひとまず、jsdocのままとしている

UIテンプレートで変えられると思い、探したけど、意外となかった。

 

生成されたHTML

http://dev.furoom.net/jsdoc3/jsdoc3/index.html

 

以下を参考に

http://usejsdoc.org/

http://www38.atwiki.jp/aias-jsstyleguide2/pages/14.html

 

つけとくものは、以下

 

ファイル

@fileoverview

 

モジュール

@exports or @module

 

クラス

@constructor

@extends

→リンクにならない・・。

 

@interface

@implements

あたりも

 

メソッド

@public

@protected

@private

@abstract ※googleに無し

@override

@param

@return

@callback {RedisClient~onSubscribe} ※googleに無し

 

定数

@const

 

ちょっと試したもの

@see

@link

@fires ※googleに無し

 

@fileoverviewと@exportsは別のコメントブロックにしないと正しく表示されない

@callback の後は、クラス名を入れないと正しく表示されない

@linkは、反映されない。ul li の書き方は試してない。

@seeも、リンクは貼られない。。

 

https://github.com/nilesflow/prototype-node.js-jsdoc

foreverをサービスとして起動

CentOS6.6、CentOS7.1

 

init.dの起動スクリプト+logrotate設定

https://github.com/nilesflow/centosetc

 

ログは、/var/log/foreverd.log

Node.jsログは、指定の場所に。

start の2重起動防止。

注意点は、foreverのHOMEディレクトリ。

HOME=xxxxxx

daemonの場合、ログインユーザでないため、/var/forever/.forever

ログインユーザの場合、/home/xxxxx/.forever

となる。

 

コマンドラインからの場合は、以下で参照可能。

HOME=xxxxxx forever list

※通常ユーザの場合、不要。

 

起動ユーザは、ログインユーザとdaemonに対応

forever-service はログ出力が制御できなかった。

initd-forever は、少し不足

 

以下のスクリプトを流用させてもらった

http://multix.jp/daemon-nodejs/