Pages

Saturday, February 25, 2017

FreeBSD (FAMP) + Wordpress Installation RunBook

FreeBSD + Apache (apache24) + MySQL + PHP5 (php-fpm) + Wordpress

Procedures in this KB are based on articles

FreeBSD OS Configuration

/etc/rc.conf

hostname="fbsd01.dpasek.com"
ifconfig_vmx0="inet 192.168.58.1 netmask 255.255.255.0"
defaultrouter="192.168.58.254"

sshd_enable="YES"
ntpd_enable="YES"
ntpdate_enable="YES"

#VMware Tools
vmware_guest_vmblock_enable="YES"
vmware_guest_vmhgfs_enable="YES"
vmware_guest_vmmemctl_enable="YES"
vmware_guest_vmxnet_enable="YES"
vmware_guestd_enable="YES"

apache24_enable="YES"
mysql_enable="YES"
php_fpm_enable="YES"

Restart the network configuration:
/etc/rc.d/netif restart
/etc/rc.d/routing restart

Software installation
pkg update
pkg install open-vm-tools-nox11
pkg install git
pkg install apache24 mysql56-server php56 php56-extensions php56-zlib mod_php56 php56-mysql php56-mysqli php56-curl php56-mbstring
# php info http://www.blackies.net/info.php

OS Tuning

Edit .profile
PS1="[${LOGNAME}@$(hostname)]$ ";        export PS1


Prepare .gitconfig

For more info See. http://intkb.blogspot.cz/2016/01/github.html

// *********** github config
git config --global user.name "davidpasek"
git config --global user.email "david.pasek@gmail.com"
// *********** Clone existing github repository
git clone https://github.com/davidpasek/math4kids

MySQL Start service and DB Configuration
service mysql-server start
mysql_secure_installation

# Login to database as administrator 
mysql -u root -p
# Show databases 
show databases;
# Create databases - kayak
CREATE DATABASE kayak CHARACTER SET utf8 COLLATE utf8_bin;
# Create DB username - kayak with password kayak
grant all privileges on kayak.* to 'kayak'@'localhost' identified by "kayak";

Apache Configuration
service apache24 stop

/usr/local/etc/apache24/httpd.conf

ServerAdmin david.pasek@gmail.com
ServerName c4c.dpasek.com:80

<Directory />
    AllowOverride none
    # Require all denied
    # Allow from all
    Require all granted
</Directory>

DocumentRoot "/usr/local/www/apache24/data"

# Virtual hosts
Include etc/apache24/extra/httpd-vhosts.conf

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

/usr/local/etc/apache24/Includes/php.conf
<IfModule dir_module>
        DirectoryIndex index.php index.html

        <FilesMatch "\.php$">
                Sethandler application/x-httpd-php
        </FilesMatch>
        <FilesMatch "\.phps$">
                Sethandler application/x-httpd-php-source>
        </FilesMatch>
</IfModule>

/usr/local/etc/apache24/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin david.pasek@gmail.com
    DocumentRoot "/usr/home/cdave/web/math4kids/"
    ServerName m4k.dpasek.com
    ServerAlias m4k.dpasek.com
    Options Indexes FollowSymLinks Includes
    ErrorLog "/var/log/m4k.dpasek.com-error.log"
    CustomLog "/var/log/m4k.dpasek.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin david.pasek@gmail.com
    DocumentRoot "/usr/home/cdave/web/flexbook-examples/"
    ServerName flexbook.dpasek.com
    ServerAlias flexbook.dpasek.com
    Options Indexes FollowSymLinks Includes
    ErrorLog "/var/log/flexbook.dpasek.com-error.log"
    CustomLog "/var/log/flexbook.dpasek.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin david.pasek@gmail.com
    DocumentRoot "/usr/home/cdave/web/kayak/"
    ServerName kayak.dpasek.com
    ServerAlias kayak.dpasek.com
    Options Indexes FollowSymLinks Includes
    ErrorLog "/var/log/kayak.dpasek.com-error.log"
    CustomLog "/var/log/kayak.dpasek.com-access_log" common
</VirtualHost>

PHP Configuration

/usr/local/etc/php-fpm.conf
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www

listen.mode = 0660

# Create /usr/local/etc/php.ini
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Edit /usr/local/etc/php.ini
cgi.fix_pathinfo=0

session.save_path = "/tmp"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php

Final Apache restart and avalidation
# apache restart
service apache24 restart
# show current apache settings
apachectl -S


WordPress

# Change owner for directory where WordPress files exist 
chown -R www:www kayak


Guidelines pro presun WordPressu (Lukas Frei) 
(1)
zkopírovat wordpress složku

(2)
importovat databázi
  • export originální databáze do souboru
  • najít a vyměnit v souboru všechny instance domény
  • ve wp-config.php jsou informace o databázi, změnit prefix podle originální db
  • importovat tabulky originální db do čisté db
(3)
nastavit web server
  • zapnout php a rewrite moduly
  • změnit vlastníka wordpress složky na uživatele web serveru
  • vygenerovat .htaccess (ve wordpress adminovi - nastavení -> trvalé odkazy)