DragonFlyBSD 4.0.5 is waiting for me to test it 🙂 . I love it for several factors :
- Size; its iso file is light in size (only 200MB + in bz2 form)
- Learning curve; no need to learn much as I’m familiar with FreeBSD 🙂
As I already try PHP7 in FreeBSD before :
I want to test it in DragonFly BSD with nginx as web server. This time  I use virtualbox and I try Hammer File system (make sure to have minimum 50 GB in disk size to usse Hammer File System in DragonFly BSD).
With 60 GB in disk size and 2GB memory allocated to this virtual machine I’ll try PHP 7.
Installation step is no different like before.
DHCP for sure 🙂
Reboot it and change boot order to get start with next steps :
Login via ssh
$ ssh [email protected] -p 2222
The authenticity of host ‘[127.0.1.1]:2222 ([127.0.1.1]:2222)’ can’t be established.
ECDSA key fingerprint is bd:e0:2a:f5:44:86:8d:5a:cd:2a:56:26:6a:f1:08:ce.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[127.0.1.1]:2222’ (ECDSA) to the list of known hosts.
Permission denied (publickey).
Ups, I forgot to configure ssh server first after as post installation step in DragonFly BSD.
Retry login
$ ssh [email protected] -p 2222
[email protected]’s password:
Last login: Fri Jun 12 11:29:12 2015
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
DragonFly v4.0.5-RELEASE (X86_64_GENERIC) #29: Sun Mar 22 17:42:50 PDT 2015
Welcome to DragonFly!
Need to see the calendar for this month? Simply type “cal”. To see the
whole year, type “cal -y”.
— Dru <[email protected]>
>
Looking around for hammer
# ps ax | grep hammer
-1 ?? B0L 0:00.00 (hammer-S3)
-1 ?? B0L 0:00.00 (hammer-S2)
-1 ?? B0L 0:00.01 (hammer-S1)
-1 ?? B0L 0:00.01 (hammer-S0)
-1 ?? B0L 0:00.01 (hammer-M)
# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/serno/VBb247cd88-d6dc6e95.s1a /boot ufs rw 1 1
/dev/serno/VBb247cd88-d6dc6e95.s1b none swap sw 0 0
/dev/serno/VBb247cd88-d6dc6e95.s1d / hammer rw 1 1
/pfs/var /var null rw 0 0
/pfs/tmp /tmp null rw 0 0
/pfs/usr /usr null rw 0 0
/pfs/home /home null rw 0 0
/pfs/usr.obj /usr/obj null rw 0 0
/pfs/var.crash /var/crash null rw 0 0
/pfs/var.tmp /var/tmp null rw 0 0
proc /proc procfs rw 0 0
Well. Everything is on the right place 🙂
Lets get start install PHP 7 on DragonFly BSD :
# pkg update
Updating Avalon repository catalogue…
pkg: http://mirror-master.dragonflybsd.org/dports/dragonfly:4.0:x86:64/LATEST/meta.txz: No address record
pkg: repository Avalon has no meta file, using default settings
pkg: http://mirror-master.dragonflybsd.org/dports/dragonfly:4.0:x86:64/LATEST/packagesite.txz: No address record
pkg: Unable to update repository Avalon
Ups, looks like Avalon is not available at the moment.
My bad, I find out that nameserver is not work. Add Google public dns server.
# cat /etc/resolv.conf
nameserver 127.0.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4
Retry pkg update :
# pkg update
Updating Avalon repository catalogue…
Fetching meta.txz: 100% 264 B 0.3kB/s 00:01
Fetching packagesite.txz: 100% 4 MiB 138.8kB/s 00:34
Processing entries: 100%
Avalon repository update completed. 22075 packages processed
Install supported packages
# pkg install -y git autoconf bison libxml2 libxslt jpeg png libxpm freetype2 t1lib gmp libmcrypt mysql56-client aspell recode
# mkdir ~/tmp
# cd ~/tmp
This step taken from wiki.
Clone PHP 7 from git
# git clone https://git.php.net/repository/php-src.git
Cloning into ‘php-src’…
remote: Counting objects: 624731, done.
remote: Compressing objects: 100% (132747/132747), done.
Receiving objects: 99% (622842/624731), 154.49 MiB | 156.00 KiB/s
remote: Total 624731 (delta 499933), reused 614596 (delta 490658)
Receiving objects: 100% (624731/624731), 154.80 MiB | 113.00 KiB/s, done.
Resolving deltas: 100% (499933/499933), done.
Checking connectivity… done.
Checking out files: 100% (17441/17441), done.
Build  and compile PHP 7
#Â cd php-src
# ./buildconf
buildconf: checking installation…
buildconf: autoconf version 2.69 (ok)
rebuilding aclocal.m4
rebuilding configure
rebuilding main/php_config.h.in
# ./configure \ --prefix=$HOME/tmp/usr \ --with-config-file-path=$HOME/tmp/usr/etc \ --enable-mbstring \ --enable-zip \ --enable-bcmath \ --enable-pcntl \ --enable-ftp \ --enable-exif \ --enable-calendar \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-curl \ --with-mcrypt \ --with-iconv \ --with-gmp \ --with-pspell \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-zlib-dir=/usr \ --with-xpm-dir=/usr \ --with-freetype-dir=/usr \ --with-t1lib=/usr \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-openssl \ --with-mysql=/usr \ --with-pdo-mysql=/usr \ --with-gettext=/usr \ --with-zlib=/usr \ --with-bz2=/usr \ --with-recode=/usr \ --with-mysqli=/usr/bin/mysql_config
I got error this time :
mysql_config not found
configure: error: Please reinstall the mysql distribution
# whereis mysql_config
mysql_config: /usr/local/bin/mysql_config /usr/local/man/man1/mysql_config.1.gz
Change config option of mysql_config from –with-mysqli=/usr/bin/mysql_config to –with-mysqli=/usr/local/bin/mysql_config
Retry again and got another error :
configure: error: PDO_MYSQL configure failed, MySQL 4.1 needed. Please check config.log for more information.
I don’t get this error in previous install.
Since I don’t use PDO then I remove the option from config.
Retry again and got this error:
configure: error: I cannot link librecode (-L/usr/local/lib -lrecode). Is it installed?
Well, force recode to static also not work. I remove it too from config option.
After a few try I got this options work :
# ./configure –prefix=$HOME/tmp/usr –with-config-file-path=$HOME/tmp/usr/etc –enable-mbstring –enable-zip –enable-bcmath –enable-pcntl –enable-ftp –enable-exif –enable-calendar –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-wddx –with-curl –with-mcrypt –with-iconv –with-gmp –with-pspell –with-gd –with-jpeg-dir=/usr –with-png-dir=/usr –with-zlib-dir=/usr –with-xpm-dir=/usr –with-freetype-dir=/usr –enable-gd-native-ttf –enable-gd-jis-conv –with-openssl –with-gettext=/usr –with-zlib=/usr –with-bz2=/usr –with-mysqli=/usr/local/bin/mysql_config
…………….
………………..
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+——————————————————————–+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+——————————————————————–+
Thank you for using PHP.
config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: main/php_config.h is unchanged
config.status: executing default commands
# make
# make install
Installing shared extensions: /root/tmp/usr/lib/php/extensions/no-debug-non-zts-20141001/
Installing PHP CLI binary: /root/tmp/usr/bin/
Installing PHP CLI man page: /root/tmp/usr/php/man/man1/
Installing PHP CGI binary: /root/tmp/usr/bin/
Installing PHP CGI man page: /root/tmp/usr/php/man/man1/
Installing build environment: /root/tmp/usr/lib/php/build/
Installing header files: /root/tmp/usr/include/php/
Installing helper programs: /root/tmp/usr/bin/
program: phpize
program: php-config
Installing man pages: /root/tmp/usr/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /root/tmp/usr/lib/php/
Well, I don’t use PEAR so last options change to :
# ./configure –prefix=$HOME/tmp/usr –with-config-file-path=$HOME/tmp/usr/etc –enable-mbstring –enable-zip –enable-bcmath –enable-pcntl –enable-ftp –enable-exif –enable-calendar –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-wddx –with-curl –with-mcrypt –with-iconv –with-gmp –with-pspell –with-gd –with-jpeg-dir=/usr –with-png-dir=/usr –with-zlib-dir=/usr –with-xpm-dir=/usr –with-freetype-dir=/usr –enable-gd-native-ttf –enable-gd-jis-conv –with-openssl –with-gettext=/usr –with-zlib=/usr –with-bz2=/usr –with-mysqli=/usr/local/bin/mysql_config –without-pear
# make
# make install
# make install
Installing shared extensions: /root/tmp/usr/lib/php/extensions/no-debug-non-zts-20141001/
Installing PHP CLI binary: /root/tmp/usr/bin/
Installing PHP CLI man page: /root/tmp/usr/php/man/man1/
Installing PHP CGI binary: /root/tmp/usr/bin/
Installing PHP CGI man page: /root/tmp/usr/php/man/man1/
Installing build environment: /root/tmp/usr/lib/php/build/
Installing header files: /root/tmp/usr/include/php/
Installing helper programs: /root/tmp/usr/bin/
program: phpize
program: php-config
Installing man pages: /root/tmp/usr/php/man/man1/
page: phpize.1
page: php-config.1
/root/tmp/php-src/build/shtool install -c ext/phar/phar.phar /root/tmp/usr/bin
ln -s -f phar.phar /root/tmp/usr/bin/phar
Installing PDO headers: /root/tmp/usr/include/php/ext/pdo/
Test
# /root/tmp/usr/bin/php -v
PHP 7.0.0-dev (cli) (built: Jun 12 2015 14:16:06)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
# /root/tmp/usr/bin/php-cgi -v
PHP 7.0.0-dev (cgi-fcgi) (built: Jun 12 2015 14:16:21)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
Create php.ini
# mkdir $HOME/tmp/usr/etc
# ee $HOME/tmp/usr/etc/php.ini
Enter these lines :
max_execution_time=600 memory_limit=128M error_reporting=0 display_errors=0 log_errors=0 user_ini.filename= realpath_cache_size=2M cgi.check_shebang_line=0 zend_extension=opcache.so opcache.enable_cli=1 opcache.save_comments=0 opcache.fast_shutdown=1 opcache.validate_timestamps=1 opcache.revalidate_freq=60 opcache.use_cwd=1 opcache.max_accelerated_files=100000 opcache.max_wasted_percentage=5 opcache.memory_consumption=128 opcache.consistency_checks=0
Recheck for Zend Opcache
# /root/tmp/usr/bin/php-cgi -v
PHP 7.0.0-dev (cgi-fcgi) (built: Jun 12 2015 14:16:21)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
Great, now install nginx :
# pkg install nginx
Updating Avalon repository catalogue…
Avalon repository is up-to-date.
All repositories are up-to-date.
The following 2 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
nginx: 1.8.0_1,2
pcre: 8.37_1
The process will require 6 MiB more space.
1 MiB to be downloaded.
Proceed with this action? [y/N]: y
Fetching nginx-1.8.0_1,2.txz: 100% 269 KiB 55.0kB/s 00:05
Fetching pcre-8.37_1.txz: 100% 1 MiB 90.0kB/s 00:12
Checking integrity… done (0 conflicting)
[1/2] Installing pcre-8.37_1…
[1/2] Extracting pcre-8.37_1: 100%
[2/2] Installing nginx-1.8.0_1,2…
===> Creating users and/or groups.
Using existing group ‘www’.
Using existing user ‘www’.
[2/2] Extracting nginx-1.8.0_1,2: 100%
I’ll continue soon.