Size: 268
Comment:
|
← Revision 35 as of 2024-07-24 12:31:10 ⇥
Size: 7223
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
<<TableOfContents(2)>> |
|
Line 4: | Line 6: |
== VirtualBox installation == * Start VirtualBox * New * Name FreeBSD_10_3 * Choose type BSD * version FreeBSD 64 bit * RAM 512 MB * Create virtual disk dynamic VDI with Fixed size 8 GB * Create * Start VM * Choose ISO FreeBSD-10.3-RELEASE-amd64-dvd1.iso * Start * option 1 multi boot * Install * keymap portuguese iso-8859-1 accent keys * continue with pt.iso.acc.kbd keymap * hostname: freebsd * Distribution select: all * Partitioning: auto * Partition: entire disk * Partition scheme: GPT guid partition table * Partition editor, finish, commit * root password: ******** * Network config: em0 * configure ipv4: yes * use dhcp: yes * configure ipv6: no * search: <empty> * ipv4 dns1: 8.8.8.8 * ipv4 dns2: 8.8.4.4 * is cmos clock set to utc: yes * region: europe * country: portugal mainland * services: sshd dumpdev * add users? yes * username: vitor * several enters * add other account: no * exit, apply config and exit installer * manual configuration? no * reboot * release ISO * login as root {{{#!highlight bash df -h traceroute www.sapo.pt pkg install wget # install package management tool ? yes proceed with action: yes pkg info cc --version # https://www.freebsd.org/doc/handbook/pkgng-intro.html pkg search jdk pkg install openjdk8-8.92.14_3 #203 MB # add lines to fstab ... java -version pkg search python pkg install python27-2.7.12 # 67MB python2.7 --version pkg install mongodb-2.6.12 #203MB pkg install rabbitmq-3.6.2 # 157MB df -h # avail 3.2 GB pkg install bash pkg install xorg startx pkg install windowmaker-0.95.7_2 # 262MB echo "exec /usr/local/bin/wmaker" > ~/.xinitrc startx }}} == Get and burn ISO == {{{#!highlight bash wget http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/10.3/FreeBSD-10.3-RELEASE-amd64-dvd1.iso modprobe sg # for cdrecord cdrecord -scanbus #identify the device DVDRAM LG GP08NU6B cdrecord -dev=6,0,0 -pad -data FreeBSD-10.3-RELEASE-amd64-dvd1.iso # eject the DVD after burning eject cd / mount /dev/sr0 /mnt/cdrom #check DVD cd /mnt/cdrom/packages/FreeBSD:10:amd64/All ls ls -lah | wc -l # 1070 packages python gnome3 kde, qt, mysql, firefox, subversion, xorg, perl, gsl cd / umount /mnt/cdrom }}} == Amazon AMI == * https://aws.amazon.com/marketplace/pp/B00KSS55FY/ == Info severity logging == * add to /etc/rc.conf {{{#!highlight bash syslogd_enable="YES" }}} * touch /var/log/syslog * Add to /etc/syslog.conf {{{ *.info /var/log/syslog }}} Example program {{{#!highlight python #!/usr/bin/python import threading import time import os import syslog import datetime import sys import signal def termHandler(signal,frame): print('Signal term caught') sys.exit(0) if __name__=="__main__": f=open('/var/run/beat.pid','wa') f.write('%d'%(os.getpid())) f.close() signal.signal(signal.SIGTERM,termHandler) while True: syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) ) time.sleep(5) }}} == Custom service == /home/vitor/beat.py {{{#!highlight python #!/usr/bin/python import threading import time import os import syslog import datetime import sys import signal def termHandler(signal,frame): print('Signal term caught') sys.exit(0) if __name__=="__main__": f=open('/var/run/beat.pid','wa') f.write('%d'%(os.getpid())) f.close() signal.signal(signal.SIGTERM,termHandler) while True: syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) ) time.sleep(5) }}} In /etc/rc.conf {{{ beat_enable="YES" }}} /etc/rc.d/beat {{{#!highlight sh #!/bin/sh # PROVIDE: beat . /etc/rc.subr name=beat rcvar=beat_enable command="/usr/local/bin/python2" command_args="/home/vitor/${name}.py &" load_rc_config $name run_rc_command "$1" }}} == Give user permission to use su - == {{{#!highlight bash pw user mod userxyz -G wheel su - }}} == Bash == {{{#!highlight bash pkg install bash chsh -s /usr/local/bin/bash vitor chsh -s /usr/local/bin/bash root }}} ~/.profile {{{#!highlight bash #normal user PS1="\e[0;33m\]\D{%Y-%m-%d}T\A\[\e[m\] \e[0;32m\]\u@\H:\w\r\n\$\[\e[m\] " }}} == MongoDB == {{{#!highlight sh mkdir -p /data/db }}} /etc/rc.conf {{{ mongodb_enable="YES" }}} /etc/rc.d/mongodb {{{#!highlight sh #!/bin/sh # PROVIDE: mongodb . /etc/rc.subr name=mongodb rcvar=mongodb_enable pidfile="/var/run/mongodb.pid" command="/usr/local/bin/mongod" command_args="--pidfilepath=$pidfile --smallfiles --syslog &" load_rc_config $name run_rc_command "$1" }}} * check file /usr/local/etc/rc.d/mongod * mongod_enable="YES" in /etc/rc.conf * mkdir -p /var/db/mongodb * add --smallfiles to mongod_flags in file /usr/local/etc/rc.d/mongod == RabbitMQ service == /etc/rc.conf {{{ rabbitmqserver_enable=YES }}} /etc/rc.d/rabbitmq {{{#!highlight sh #!/bin/sh # PROVIDE: rabbitmq-server . /etc/rc.subr name=rabbitmqserver load_rc_config $name #rcvar=rabbitmqserver_enable command="/usr/local/sbin/rabbitmq-server" pidfile="/var/db/rabbitmq/mnesia/rabbit@freebsd.pid" if [ $rabbitmqserver_enable = "YES" ];then case "$1" in start) echo "Starting ${name} " $command & ;; status) if [ -f $pidfile ];then PID=$(cat $pidfile) echo "${name} running with PID $PID" else echo "${name} not running" fi ;; stop) if [ -f $pidfile ];then PID=$(cat $pidfile) echo "Killing ${name} with PID $PID" /usr/local/sbin/rabbitmqctl stop rm $pidfile else echo "${name} not running" fi ;; *) echo "Usage: /etc/rc.d/rabbitmq {start|status|stop}" exit 1 ;; esac else echo "${name} service is not enabled in /etc/rc.conf" fi exit 0 }}} * check file /usr/local/etc/rc.d/rabbitmq * rabbitmq_enable="YES" in /etc/rc.conf {{{#!highlight bash /usr/local/sbin/rabbitmq-plugins list /usr/local/sbin/rabbitmq-plugins enable rabbitmq_management #port 15672 rabbitmqctl add_user rmq rmq rabbitmqctl set_user_tags rmq administrator rabbitmqctl set_permissions -p / rmq ".*" ".*" ".*" python -m ensurepip pip install pika }}} == Vagrant box == * https://app.vagrantup.com/freebsd/boxes/FreeBSD-13.1-STABLE {{{#!highlight bash cd /tmp mkdir freebsd-test cd freebsd-test vagrant init freebsd/FreeBSD-13.1-STABLE vagrant up vagrant ssh sudo pkg install openjdk17-17.0.3+7.1 sudo pkg install nano cat Main.java #public class Main{ # public static void main(String[] args){ # System.out.println("Main hello world !"); # } #} javac Main.java java Main vagrant suspend }}} |
Contents
FreeBSD
FreeBSD is an advanced computer operating system used to power modern servers, desktops, and embedded platforms. http://www.freebsd.org
VirtualBox installation
Start VirtualBox
- New
- Name FreeBSD_10_3
- Choose type BSD
- version FreeBSD 64 bit
- RAM 512 MB
- Create virtual disk dynamic VDI with Fixed size 8 GB
- Create
- Start VM
- Choose ISO FreeBSD-10.3-RELEASE-amd64-dvd1.iso
- Start
- option 1 multi boot
- Install
- keymap portuguese iso-8859-1 accent keys
- continue with pt.iso.acc.kbd keymap
- hostname: freebsd
- Distribution select: all
- Partitioning: auto
- Partition: entire disk
- Partition scheme: GPT guid partition table
- Partition editor, finish, commit
- root password: ********
- Network config: em0
- configure ipv4: yes
- use dhcp: yes
- configure ipv6: no
search: <empty>
- ipv4 dns1: 8.8.8.8
- ipv4 dns2: 8.8.4.4
- is cmos clock set to utc: yes
- region: europe
- country: portugal mainland
- services: sshd dumpdev
- add users? yes
- username: vitor
- several enters
- add other account: no
- exit, apply config and exit installer
- manual configuration? no
- reboot
- release ISO
- login as root
1 df -h
2 traceroute www.sapo.pt
3 pkg install wget
4 # install package management tool ? yes
5 proceed with action: yes
6 pkg info
7 cc --version
8 # https://www.freebsd.org/doc/handbook/pkgng-intro.html
9 pkg search jdk
10 pkg install openjdk8-8.92.14_3 #203 MB
11 # add lines to fstab ...
12 java -version
13 pkg search python
14 pkg install python27-2.7.12 # 67MB
15 python2.7 --version
16 pkg install mongodb-2.6.12 #203MB
17 pkg install rabbitmq-3.6.2 # 157MB
18 df -h # avail 3.2 GB
19 pkg install bash
20 pkg install xorg
21 startx
22 pkg install windowmaker-0.95.7_2 # 262MB
23 echo "exec /usr/local/bin/wmaker" > ~/.xinitrc
24 startx
Get and burn ISO
1 wget http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/10.3/FreeBSD-10.3-RELEASE-amd64-dvd1.iso
2 modprobe sg # for cdrecord
3 cdrecord -scanbus #identify the device DVDRAM LG GP08NU6B
4 cdrecord -dev=6,0,0 -pad -data FreeBSD-10.3-RELEASE-amd64-dvd1.iso
5 # eject the DVD after burning
6 eject
7 cd /
8 mount /dev/sr0 /mnt/cdrom #check DVD
9 cd /mnt/cdrom/packages/FreeBSD:10:amd64/All
10 ls
11 ls -lah | wc -l # 1070 packages python gnome3 kde, qt, mysql, firefox, subversion, xorg, perl, gsl
12 cd /
13 umount /mnt/cdrom
Amazon AMI
Info severity logging
- add to /etc/rc.conf
1 syslogd_enable="YES"
- touch /var/log/syslog
- Add to /etc/syslog.conf
*.info /var/log/syslog
Example program
1 #!/usr/bin/python
2 import threading
3 import time
4 import os
5 import syslog
6 import datetime
7 import sys
8 import signal
9
10 def termHandler(signal,frame):
11 print('Signal term caught')
12 sys.exit(0)
13
14 if __name__=="__main__":
15 f=open('/var/run/beat.pid','wa')
16 f.write('%d'%(os.getpid()))
17 f.close()
18 signal.signal(signal.SIGTERM,termHandler)
19
20 while True:
21 syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) )
22 time.sleep(5)
Custom service
/home/vitor/beat.py
1 #!/usr/bin/python
2 import threading
3 import time
4 import os
5 import syslog
6 import datetime
7 import sys
8 import signal
9
10 def termHandler(signal,frame):
11 print('Signal term caught')
12 sys.exit(0)
13
14 if __name__=="__main__":
15 f=open('/var/run/beat.pid','wa')
16 f.write('%d'%(os.getpid()))
17 f.close()
18 signal.signal(signal.SIGTERM,termHandler)
19
20 while True:
21 syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) )
22 time.sleep(5)
In /etc/rc.conf
beat_enable="YES"
/etc/rc.d/beat
Give user permission to use su -
Bash
~/.profile
MongoDB
1 mkdir -p /data/db
/etc/rc.conf
mongodb_enable="YES"
/etc/rc.d/mongodb
- check file /usr/local/etc/rc.d/mongod
- mongod_enable="YES" in /etc/rc.conf
- mkdir -p /var/db/mongodb
- add --smallfiles to mongod_flags in file /usr/local/etc/rc.d/mongod
RabbitMQ service
/etc/rc.conf
rabbitmqserver_enable=YES
/etc/rc.d/rabbitmq
1 #!/bin/sh
2 # PROVIDE: rabbitmq-server
3
4 . /etc/rc.subr
5
6 name=rabbitmqserver
7 load_rc_config $name
8
9 #rcvar=rabbitmqserver_enable
10 command="/usr/local/sbin/rabbitmq-server"
11 pidfile="/var/db/rabbitmq/mnesia/rabbit@freebsd.pid"
12
13 if [ $rabbitmqserver_enable = "YES" ];then
14 case "$1" in
15 start)
16 echo "Starting ${name} "
17 $command &
18 ;;
19 status)
20 if [ -f $pidfile ];then
21 PID=$(cat $pidfile)
22 echo "${name} running with PID $PID"
23 else
24 echo "${name} not running"
25 fi
26 ;;
27 stop)
28 if [ -f $pidfile ];then
29 PID=$(cat $pidfile)
30 echo "Killing ${name} with PID $PID"
31 /usr/local/sbin/rabbitmqctl stop
32 rm $pidfile
33 else
34 echo "${name} not running"
35 fi
36 ;;
37 *)
38 echo "Usage: /etc/rc.d/rabbitmq {start|status|stop}"
39 exit 1
40 ;;
41 esac
42 else
43 echo "${name} service is not enabled in /etc/rc.conf"
44 fi
45
46 exit 0
- check file /usr/local/etc/rc.d/rabbitmq
- rabbitmq_enable="YES" in /etc/rc.conf
Vagrant box
1 cd /tmp
2 mkdir freebsd-test
3 cd freebsd-test
4 vagrant init freebsd/FreeBSD-13.1-STABLE
5 vagrant up
6 vagrant ssh
7 sudo pkg install openjdk17-17.0.3+7.1
8 sudo pkg install nano
9 cat Main.java
10 #public class Main{
11 # public static void main(String[] args){
12 # System.out.println("Main hello world !");
13 # }
14 #}
15 javac Main.java
16 java Main
17 vagrant suspend