Node.jsをさくらのレンタルサーバにインストールする方法(ソースからコンパイル)

さくらのレンタルサーバに Node.js をインストールするための OpenSSL と Node.js のインストール方法のメモ。(*「さくらのレンタルサーバ上で Node.js (npm) を使えるようにする」を拝見させていただき無事インストールできました。)

OpenSSLインストール

ソースコード取得

% mkdir $HOME/openssl
% cd $HOME/openssl
% curl -sSf https://www.openssl.org/source/openssl-1.1.1s.tar.gz -O

makeファイル作成

% tar zxf openssl-1.1.1s.tar.gz
% cd openssl-1.1.1s
% ./config --prefix=/home/xxxxx/openssl --openssldir=/home/xxxxx/local/openssl
Operating system: amd64-whatever-freebsd
Configuring OpenSSL version 1.1.1s (0x1010113fL) for BSD-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************

makeファイルからコンパイル

% make
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" include/crypto/bn_conf.h.in > include/crypto/bn_conf.h
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" include/crypto/dso_conf.h.in > include/crypto/dso_conf.h
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" include/openssl/opensslconf.h.in > include/openssl/opensslconf.h
make depend && make _all
cc  -I. -Iinclude -fPIC -pthread -Wa,--noexecstack -Qunused-arguments -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/home/sites/local/openssl\"" -DENGINESDIR="\"/home/sites/openssl/lib/engines-1.1\"" -D_THREAD_SAFE -D_REENTRANT -DNDEBUG  -MMD -MF apps/app_rand.d.tmp -MT apps/app_rand.o -c -o apps/app_rand.o apps/app_rand.c
.
.
.
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" apps/tsget.in > "apps/tsget.pl"
chmod a+x apps/tsget.pl
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" tools/c_rehash.in > "tools/c_rehash"
chmod a+x tools/c_rehash
/home/rs/perl/5.32/bin/perl "-I." -Mconfigdata "util/dofile.pl"  "-oMakefile" util/shlib_wrap.sh.in > "util/shlib_wrap.sh"
chmod a+x util/shlib_wrap.sh
% ls
ACKNOWLEDGEMENTS	Makefile		README.ENGINE		crypto			libcrypto.map		ms
AUTHORS			NEWS			README.FIPS		demos			libcrypto.pc		openssl.pc
CHANGES			NOTES.ANDROID		VMS			doc			libcrypto.so		os-dep
CONTRIBUTING		NOTES.DJGPP		apps			e_os.h			libcrypto.so.1.1	ssl
Configurations		NOTES.PERL		appveyor.yml		engines			libssl.a		test
Configure		NOTES.UNIX		build.info		external		libssl.map		tools
FAQ			NOTES.VMS		config			fuzz			libssl.pc		util
INSTALL			NOTES.WIN		config.com		include			libssl.so		wycheproof
LICENSE			README			configdata.pm		libcrypto.a		libssl.so.1.1

make install でインストール

% make install
make depend && make _build_libs
created directory `/home/xxxxx/openssl/lib'
*** Installing runtime libraries
install libcrypto.so.1.1 -> /home/xxxxx/openssl/lib/libcrypto.so.1.1
install libssl.so.1.1 -> /home/xxxxx/openssl/lib/libssl.so.1.1
*** Installing development files
created directory `/home/xxxxx/openssl/include'
created directory `/home/xxxxx/openssl/include/openssl'
install ./include/openssl/aes.h -> /home/xxxxx/openssl/include/openssl/aes.h
.
.
.
/home/xxxxx/openssl/share/doc/openssl/html/man7/X25519.html
/home/xxxxx/openssl/share/doc/openssl/html/man7/X448.html -> /home/xxxxx/openssl/share/doc/openssl/html/man7/X25519.html
/home/xxxxx/openssl/share/doc/openssl/html/man7/x509.html

Node.jsインストール

ソースコード取得

% curl -sSf https://nodejs.org/dist/v17.9.1/node-v17.9.1.tar.gz -O

makeファイル作成

% tar zxf node-v17.9.1.tar.gz
% cd node-v17.9.1
% ./configure --shared-openssl --shared-openssl-includes=/home/xxxxx/openssl/include/ --shared-openssl-libpath=/home/xxxxx/openssl/lib/
Node.js configure: Found Python 3.8.12...
INFO: configure completed successfully

インストール

% setenv LD_LIBRARY_PATH /home/xxxxx/openssl/lib
% nohup make install DESTDIR=/home/xxxxx/local PREFIX=

パスを通す

setenv PATH ${PATH}:/home/xxxxx/local/bin
setenv LD_LIBRARY_PATH /home/xxxxx/openssl/lib

設定内容反映

source .cshrc

確認

nodeバージョン

% node -v
v17.9.1

npmバージョン

% npm -v
8.11.0

動作環境情報

さくらのレンタルサーバ スタンダード
"node" v17.9.1
"npm" 8.11.0
"OpenSSL" 1.1.1s 

コメント

タイトルとURLをコピーしました