Skip to main content
GrN.dk

Main navigation

  • Articles
  • Contact
  • Your Digital Project Manager
  • About Greg Nowak
  • Services
  • Portfolio
  • Container
    • Excel Freelancer
    • Kubuntu - tips and tricks
    • Linux Apache MySQL and PHP
    • News
    • Image Gallery
User account menu
  • Log in

Breadcrumb

  1. Home

Linux Apache MySQL and PHP

Bonus strings
Nice settings for /www the local user is gnowak:
sudo chown www-data:gnowak -R /var/www/; sudo chmod g+rw -R /var/www/
Mysql tools: sudo aptitude install mysql-admin mysql-gui-tools-common mysql-navigator mysql-query-browser
 
All in one: sudo aptitude install apache2 php7.2 libapache2-mod-php7.2 php7.2-cli php7.2-mysql php7.2-gd php7.2-zip mysql-client mysql-server phpmyadmin postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-modules libsasl2-modules-sql libsasl2-2 sasl2-bin libpam-mysql openssl libfcgi-dev phpmyadmin unzip courier-authlib courier-authlib-userdb courier-base libxml2 ucf aspell-da; sudo tasksel install lamp-server; sudo dpkg-reconfigure postfix; sudo postconf -e 'home_mailbox = Maildir/'; sudo /etc/init.d/apache2 restart

Drupal Installation with clean URL's on apache2 - last tried 2013-01-19 and it works perfectly
1) Download Drupal
2) copy it into /var/www folder
3) change permissions for /var/www/drupal-6.2/sites/default
4) clean URLs reference: http://drupal.org/node/43783. Follow the steps below.
a) sudo nano /etc/apache2/httpd.conf  - this file may not exist
add the following

Options FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all

Options Indexes FollowSymLinks
DirectoryIndex index.php
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.0/24

b)
sudo nano /etc/apache2/sites-enabled/000-default
change:
Options Indexes FollowSymLinks MultiViews
AllowOverride none
to:
Options Indexes FollowSymLinks MultiViews
AllowOverride all
c)
sudo a2enmod rewrite; sudo service apache2 restart

Drush: http://drupal.org/project/drush; http://drupal.org/project/drush_mm;
drush --uri=http://localhost/drupal
alias drush='php sites/all/modules/drush/drush.php' -> into .bashrc in home

update all modules: drush pm update --uri=http://localhost/drupaltest
update specific modules: drush pm update author_pane simplenews --uri=http://localhost/drupaltest
grn.dk modules: drush dl captcha devel imageapi lightbox2 print webform dhtml_menu imagecache nice_menus simplenews token xmlsitemap cvs_deploy image img_assist pathauto switchtheme views
1) drush install views wysiwyg dhtml_menu advanced_forum devel jquery_plugin cvs_deploy controlpanel front pathauto calendar calendar_block cck link token date drush_extras storm advanced_help webform captcha nodewords

2) Lesser list: drush dl views wysiwyg dhtml_menu advanced_forum devel jquery_plugin cvs_deploy front pathauto cck link token date advanced_help webform captcha nodewords author_pane

kewl module list: frontpage image image_assist image_attach mail_editor quote smileys subscriptions print badbehavior imagefield node_images jstools vote_up_down ctools mp3player ubercart docapi
Project management:project_admin_category timebudget storm project_forecast
project "for drup 5 only"
maybe nice: epublish node_clone
block page visibility: bpv

drush pm install simplenews --uri=http://localhost/drupaltest; drush mm enable simplenews --uri=http://localhost/drupaltest

//Disable random
drush mm disable devel devel_generate devel_node_access devel_themer --uri=http://localhost/drupaltest

CVS setup: http://users.csc.calpoly.edu/~dbutler/tutorials/winter96/cvs/

http://www.linux.ie/articles/tutorials/cvs.php
export CVSROOT=/cvs; cvs init

Drupal CVS
Checkout: cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal co -r DRUPAL-6-14 -d drupaltest drupal (http://drupal.org/node/320)
Update: cvs up -r DRUPAL-6-8 -dP (http://drupal.org/node/93966)

checkout modules from cvs: http://drupal.org/node/321
example: cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1-0-ALPHA15 -d advanced_forum contributions/modules/advanced_forum -D '2008-10-02'

kewl drupal sites: http://wiki.doomicile.de/projekte/drupal/sysadmin/best_practice

Patch: patch -p0 < name-of-patch.patch
*****************************************************************************************************
Server one step at a time:
Thanks to:http://ubuntuguide.org/wiki/Ubuntu:Gutsy#How_to_install_Apache_and_PHP5

Drupal: thanks to: http://www.lullabot.com/videocast/install-local-web-server-ubuntu
and http://groups.drupal.org/node/6266
a) sudo aptitude install apache2-mpm-prefork apache2 libapache2-mod-php5 php5-cli php5-mysql php5-gd mysql-client mysql-server phpmyadmin mysql-admin mysql-query-browser

b) sudo tasksel install lamp-server

1) Download Drupal
2) copy it into /var/www folder
3) change permissions for /var/www/drupal-6.2/sites/default
4) clean URL's (http://drupal.org/node/43783)
a) Probably only thing needed:
sudo nano /etc/apache2/httpd.conf
and add the following

Options FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all

Options Indexes FollowSymLinks
DirectoryIndex index.php
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.0/24

b)
sudo nano /etc/apache2/sites-enabled/000-default
change:
Options Indexes FollowSymLinks MultiViews
AllowOverride none
to:
Options Indexes FollowSymLinks MultiViews
AllowOverride all
c)
sudo a2enmod rewrite; sudo /etc/init.d/apache2 restart

Apache: sudo aptitude install apache2
PHP + PHPApache: sudo aptitude install php5 libapache2-mod-php5 php5-gd php5-mysql phpmyadmin
Restart Apache: sudo /etc/init.d/apache2 restart

MySQL-server: http://ubuntuguide.org/wiki/Ubuntu:Feisty/Servers#How_to_install_MYSQL_D...
sudo aptitude install mysql-server

Mail-server: https://help.ubuntu.com/community/Postfix; http://www.urbanpuddle.com/articles/2007/08/27/setup-postfix-on-ubuntu-f...

sudo aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2 libsasl2-modules libsasl2-modules-sql libsasl2-2 sasl2-bin libpam-mysql openssl php5-common php5-cgi php5-mysql libfcgi-dev phpmyadmin unzip courier-authlib courier-authlib-userdb courier-base courier-ssl libfam0 libltdl3 libmysqlclient15off ssl-cert libxml2 ucf

sudo dpkg-reconfigure postfix

sudo postconf -e 'home_mailbox = Maildir/'

**STOP go further only if you know what you are doing ;-)**

Configure Postfix to do SMTP AUTH using SASL (saslauthd):
sudo postconf -e 'smtpd_sasl_local_domain ='; sudo postconf -e 'smtpd_sasl_auth_enable = yes'; sudo postconf -e 'smtpd_sasl_security_options = noanonymous'; sudo postconf -e 'broken_sasl_auth_clients = yes'; sudo postconf -e 'smtpd_recipient_restrictions =; permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'; sudo postconf -e 'inet_interfaces = all'

Next edit /etc/postfix/sasl/smtpd.conf and add the following lines:
pwcheck_method: saslauthd
mech_list: plain login

Generate certificates to be used for TLS encryption and/or certificate Authentication:
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024; chmod 600 smtpd.key; openssl req -new -key smtpd.key -out smtpd.csr; openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt; openssl rsa -in smtpd.key -out smtpd.key.unencrypted; mv -f smtpd.key.unencrypted smtpd.key; openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650; sudo mv smtpd.key /etc/ssl/private/; sudo mv smtpd.crt /etc/ssl/certs/; sudo mv cakey.pem /etc/ssl/private/; sudo mv cacert.pem /etc/ssl/certs/

Configure Postfix to do TLS encryption for both incoming and outgoing mail:
sudo postconf -e 'smtpd_tls_auth_only = no'; sudo postconf -e 'smtp_use_tls = yes'; sudo postconf -e 'smtpd_use_tls = yes'; sudo postconf -e 'smtp_tls_note_starttls_offer = yes'; sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'; sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'; sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'; sudo postconf -e 'smtpd_tls_loglevel = 1'; sudo postconf -e 'smtpd_tls_received_header = yes'; sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'; sudo postconf -e 'tls_random_source = dev:/dev/urandom'; sudo postconf -e 'myhostname = server1.example.com'

Restart the postfix daemon like this:
sudo /etc/init.d/postfix reload

MYSQL
#!/bin/bash
#Inspired from http://www.cyberciti.biz/faq/ubuntu-linux-mysql-nas-ftp-backup-script/

NOW=$(date +"%Y-%m-%d")

### MySQL Setup ###
MUSER="USER"
MPASS="PASS"
MHOST="HOST"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
echo $DBS
for db in $DBS
do
FILE=$NOW_mysql-$db.-$(date +"%T").sql
$MYSQLDUMP -h $MHOST -p$MPASS $db > $FILE
doneu

#mysqldump -u gnowak -h mysqlhost -p code gnowak_smf
#mysqldump -h mysqlhost -ppassword gnowak_smf > gnowak_smf.sql

Keywords: LAMP

Tags

  • Linux
Last modified
2020-05-27

Review Greg on Google

Greg Nowak Google Reviews

 

Illustrated infographic summarizing: Cloudflare Service Keys Stop in September: Find Every Caller
Cloudflare Service Keys Stop in September: Find Every Caller
2026-07-20

Cloudflare Service Keys stop working on September 30, 2026. Here is how to find every caller, move to scoped API tokens and avoid a late outage.

Illustrated infographic summarizing: Your AI Workflow Needs an Acceptance Test Before It Meets Customers
Your AI Workflow Needs an Acceptance Test Before It Meets Customers
2026-07-19

A practical way to test AI workflows using realistic scenarios, tool checks, human rubrics, regression suites, and clear release gates.

Three cover candidates for The Goats Were Load-Bearing fanned on a dark background: an ember-lit door, three slow knocks, and a founders' ledger
The Goats Were Load-Bearing: a fantasy where the bill always comes due
2026-07-19

A teaser for the upcoming darkly comic fantasy novel The Goats Were Load-Bearing — a village, a door that must stay poor, and the worst possible time to sell the herd. Readers pick the cover.

Vegan Power game: the yellow player catches falling fruit while a chicken and a cow look on
Vegan Power: The Little Game About Eating Fruit, Not Friends
2026-07-19

Vegan Power is a free browser game where you catch fruit, dodge the animals, protect seven hearts, and chase a better high score.

KotobaMon title screen: the Japanese logo コトバモン over a low-poly 3D island with monsters, cherry-blossom trees and a trainer.
KotobaMon: Shipping a 3D Browser Game With No Build Step and Self-Hosted Voice
2026-07-19

A look at fantasy.grn.dk, a browser-based 3D game that teaches Japanese with no build step, procedural art and self-hosted AI voice, and what its constraints show about shipping interactive products fast and cheap.

Illustrated infographic summarizing: WordPress Forced an Emergency Update. Did Every Site Take It?
WordPress Forced an Emergency Update. Did Every Site Take It?
2026-07-18

WordPress pushed an emergency security update, but teams still need to confirm the right patched version and core integrity on every installation.

Illustrated infographic summarizing: IndexNow: Wire corrections and deletions into the CMS
IndexNow: Wire corrections and deletions into the CMS
2026-07-17

IndexNow works best when CMS workflows report updates, redirects and removals as well as new pages. Here is how to cover the full content lifecycle.

Illustrated infographic summarizing: The EU’s August AI Deadline Reaches Bots and Synthetic Content
The EU’s August AI Deadline Reaches Bots and Synthetic Content
2026-07-16

Article 50 applies from 2 August 2026. Businesses need to map AI touchpoints, clarify ownership, and put workable transparency controls in place.

Illustrated infographic summarizing: A Voice Agent Is Only Ready When the Human Handoff Works
A Voice Agent Is Only Ready When the Human Handoff Works
2026-07-15

A practical guide to voice agents that recognise failure, pass useful context to staff, protect customer data, and improve resolution after launch.

Illustrated infographic summarizing: If the Facts Need JavaScript, AI Search May Miss the Full Page
If the Facts Need JavaScript, AI Search May Miss the Full Page
2026-07-14

A practical guide to finding and fixing JavaScript rendering gaps that can hide services, prices, contact details and metadata from AI search crawlers.

More articles
RSS feed

GrN.dk web platforms, web optimization, data analysis, data handling and logistics.