posted by qubix on April 18, 2014

Πάμε τώρα να εγκαταστήσουμε το snmp σε έναν centos server, ώστε με κάποιο cacti πχ να κάνουμε monitoring εκ του μακρώθεν...
Αρχίζουμε με τα βασικά, δηλαδή να εγκαταστήσουμε τα απαραίτητα πακέτα στο σύστημα:

yum install net-snmp net-snmp-utils



αφού μπούν τα πακέτα και κάνα δυο εξαρτήσεις, πάμε να βάλουμε τον snmp daemon να ξεκινά με την κάθε εκκίνηση του συστήματος:
chkconfig snmpd on


τώρα στα ενδιαφέροντα πράγματα, το configuration. Χωρίς πολλά πολλά αυτό είναι ένα minimal configuration:

rwuser   noauth
rouser   noauth
rocommunity  mycommunity 8.8.8.8
syslocation  "datacenter"
proc  init 1 1
proc  httpd 10 1
disk  /
load  12 12 12


Όπως λοιπόν είναι προφανές:
- δεν έχουμε authentication
- βάλαμε μια community read-only η οποία είναι συγκεκριμένη ip και της δώσαμε το όνομα mycommunity
- και καλά το location είναι το "datacenter", προφανώς μπορεί να έχει κάποιο όνομα με ..νόημα!
- τσεκάρουμε την init process ώστε να ξέρουμε αν τρέχει ο server
- τσεκάρουμε την process του web server και βάζουμε όρια να τρέχουν 10 το πολύ και μία το λιγότερο processes
- τσεκάρουμε το μέγεθος του root partition, προφανώς μπορούμε να προσθέσουμε και άλλα partions/δισκους/arrays σε ανάλογες directives
- και τέλος τσεκάρουμε το load με 1minute, 5minutes, 15minutes max averages

μετά από αυτά, κάνουμε restart τον snmpd και βλέπουμε αν όλα παίζουν καλά από το remote cacti μας

προφανώς πρέπει να έχουμε ανοίξει την 161 udp port για να παίξει το οτιδήποτε!


posted by qubix on April 18, 2014

Λοιπόν, φτάνει κάποια στιμγή η ώρα που θέλουμε να δούμε τι δεν πάει καλά με τα 1241234 plugins που έχουμε βάλει και κάπου σπάει το wordpress που έχουμε φτιάξει ή ίσως για να κάνουμε debug κάποιο δικό μας plugin.

Εκτός από τα κλασσικά logs του apache (ή όποιου http server), υπάρχει ένα πολύ χρήσιμο plugin, το debug bar!To εν λόγω plugin βάζει μια μπάρα με διάφορα στοιχεία όπως php debug errors, memory usage, cache κλπ κλπ. Αν θέλουμε να δούμε και περισσότερα πράγματα υπάρχουν αρκετά plugins του..plugin όπως το Debug Bar Actions and Filters Addon που προσθέτει δύο επιλογές για να βλέπουμε τι actions/filters κλήθηκαν στην σελίδα που είμαστε και φυσικά προϋποθέτει την ύπαρξη του debug bar που προείπα.

Το κατεβάζουμε και κάνουμε install με τον κλασσικό τρόπο και φροντίζουμε στο wp-config.php να έχουμε τα

 
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); 
 

ώστε να ενεργοποιήσουμε το debug του wordpress για να βλέπουμε τα php warnings/errors, να τα κρατά σε ένα log (wp-content/debug.log) και να μην τα δείχνει ώστε να μην βλέπουμε ένα τεράστιο κατεβατό αλλά να τα κοιτάμε από το debug bar.

Happy debuggin' !

posted by qubix on March 15, 2014

Λοιπόν..μόλις βάλαμε το ωραίο μας theme και διαπιστώνουμε πως έχει κάνει register ένα menu το οποίο δεν είναι πουθενά στο admin panel και φυσικά δεν υπάρχει καμία page 'Home'..πριν πάθουμε εγκεφαλικό, ας πούμε λίγο πως ένα theme δημιουργεί ένα menu από το πουθενά.

Κάπου λοιπόν στον φάκελο του εκάστοτε theme έχει κάποιο αρχείο header.php ή κάπως έτσι.
Μέσα στο αρχείο θα βρείτε ένα κομμάτι κώδικα σαν τον παρακάτω


wp_nav_menu( array(
    'theme_location' => 'header-menu',
    'container'      => false,
    'menu_class'     => 'menu horizontal-menu header-menu',
    'menu_id'        => 'header-menu',
    'items_wrap'     => '
%3$s') );

Ο παραπάνω κώδικας χρησιμοποιεί μια function του wordpress framework ώστε να πει πως ένα μενού, το header-menu, έχει τα παρακάτω χαρακτηριστικά που περιγράφει.
Το ερώτημα είναι πως ακριβώς και το σημαντικότερο, που ορίζει το theme πως θέλει το μενού και ποια στοιχεία έχει;
Ο κώδικας που ψάχνουμε είναι κάτι σαν το παρακάτω:


    register_nav_menus( array(
        'header-menu'  => __( 'Header Menu', 'decode' ),
        'sidebar-menu' => __( 'Sidebar Menu', 'decode' ),
        'footer-menu' => __( 'Footer Menu', 'decode' )
    ) );


Το παραπάνω είναι πιθανό να το βρείτε σε κάποιο αρχείο functions.php και όπως βλέπουμε λέει στο wordpress να αναγνωρίζει όχι ένα, αλλά τρία μενού.

Και πάλι όμως δεν έχουμε ιδέα τι γίνεται με τα στοιχεία του μενού...

Δυστυχώς κάπου τώρα θα πρέπει να υπάρχει κάτι σαν το παρακάτω:
function _page_menu_args( $args ) {
    $args['show_home'] = true;
    return $args;
}


Όπου το βρείτε λοιπόν, αρκεί να αλλάξετε το "true" σε ότι θέλετε πχ Αρχική, Σπιτάκι οτιδήποτε και θα αλλάξει και στο menu που βλέπετε!

posted by qubix on March 7, 2014

Ξαφνικά και ενώ πήγαιναν όλα καλά, το cpanel το οποίο συνδέεται με το mysql server μέσω ενός socket file, πέταξε το μήνυμα
cpanel Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Μετά τον αρχικό πανικό, διαπίστωσα πως τα site στον server έπαιζαν κανονικά, o mysql server ήταν επάνω χωρίς προβλήματα..άρα..σε κάποιο update του cpanel κάτι άλλαξε..

Τέλος πάντων, η λύση είναι στο /tmp να γίνει symlink ένα mysql.sock στο /var/lib/mysql/mysql.sock . Το ωραίο είναι πως στο /tmp υπήρχε ένα mysql.sock αρχείο το οποίο όμως δεν ήταν ούτε socket, ούτε symlink στο socket. Συνεπώς:

rm /tmp/mysql.sock ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock chown mysql.mysql /tmp/mysql.sock

posted by qubix on March 4, 2014

Λοιπόν σε αρκετά datacenters η ανοιχτή πόρτα για vnc viewing είναι η 5900. Το πρόβλημα είναι πως κάποια προγράμματα σε linux που ανοίγουν χωριστό X session σε κάθε login, υπολογίζουν την πόρτα σε 5900+number_of_display. Οπότε αν θέτε να ανοίξετε ένα vnc για κάποιον πελάτη/χρήστη ή τον εαυτό σας, τζίφος..ένα παραδειγμά τέτοιο είναι το xtightvnc.

Η λύση? Πάμε και κάνουμε edit το αρχείο

/usr/bin/vncserver

Μη φοβάστε, είναι ένα perl script...
Βρίσκουμε τη γραμμή

$vncPort = 5900 + $displayNumber;

και αλλάζουμε το 5900 σε...5899..

Οκ δεν είναι και πολύ intuitive λύση αλλά για έναν χρήστη κάνει τη δουλειά!

Φυσικά μπορούμε να χρησιμοποιήσουμε κάποιον άλλο vnc server πχ x11vnc ο οποίος ακούει στην 5900 αλλά χρησιμοποιεί ένα ήδη υπάρχον X session, περίπτωση που δεν ταιριάζει σε όλα τα σενάρια χρήσης.

posted by qubix on February 23, 2014

install on cpanel centos server svn


mkdir /usr/local/src/subversion
cd /usr/local/src/subversion
wget http://www.apache.org/dist/subversion/subversion-1.7.14.tar.bz2
tar xjvf subversion-1.7.14.tar.bz2
cd subversion-1.7.14
./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache/bin/apr-1-config --with-apr-util=/home/cpeasyapache/src/httpd-2.2/srclib/apr-util/apu-1-config

Θα δούμε το σφάλμα:


checking for sqlite3.h... no
checking sqlite library version (via pkg-config)... no
An appropriate version of sqlite could not be found.  We recommmend
3.7.6.3, but require at least 3.6.18.
Please either install a newer sqlite on this system
or
get the sqlite 3.7.6.3 amalgamation from:
    http://www.sqlite.org/sqlite-amalgamation-3.7.6.3.tar.gz
unpack the archive using tar/gunzip and copy sqlite3.c from the
resulting directory to:
/usr/local/src/subversion/subversion-1.7.14/sqlite-amalgamation/sqlite3.c
Οπότε πάμε να βάλουμε το αρχείο που λείπει!

wget http://www.sqlite.org/2013/sqlite-amalgamation-3080200.zip
mkdir sqlite-amalgamation
mv sqlite-amalgamation-3080200.zip sqlite-amalgamation/
cd sqlite-amalgamation/
unzip sqlite-amalgamation-3080200.zip
cp sqlite-amalgamation-3080200/sqlite3.c ../

Ξανά configure το svn και make , make install

./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache/bin/apr-1-config --with-apr-util=/home/cpeasyapache/src/httpd-2.2/srclib/apr-util/apu-1-config
make
make install


posted by qubix on February 2, 2014

Όσοι βλέπετε στην αναφορά κατάσταση του drupal σας πως το tmp directory δεν είναι ασφαλές και ένα link στο https://drupal.org/SA-CORE-2013-003, ενώ ήδη έχετε κάνει το απαραίτητο upgrade, μην απελπίζεστε!

Εκ του default το drupal πάει και βάζει το tmp στο /tmp. Αν τώρα το tmp directory σας είναι ένα επίπεδο πάνω από το public_html, πρέπει να αλλάξετε τη ρύθμιση (configuration->media->file system) από tmp σε ../tmp ώστε να δείχνει στο σωστό folder. Αν δεν έχετε πρόσβαση πάνω από το public_html, φτιάχτε ένα tmp directory στο public_html και αλλάξτε τη ρύθμιση σε tmp (χωρίς το / στην αρχή δλδ)

posted by qubix on January 4, 2014

Μιας που το παλιό μου κινητό galaxy gt-I5800 είχε πέσει σε αχρηστία, αποφάσισα να πειραματιστώ λίγο αλλάζοντας το παλιακό eclair 2.1 android που είχε. Αρχικά έκανα το διαθέσιμο upgrade του firmware από το KIES που το πήγε σε froyo 2.2 αλλά δεν πολυεντυποσιάστηκα. Μετά από λίγο ψάξιμο έπεσα σε ένα thread του xda:
[ROM][2.3.7] CyanogenMod 7.2 (Alpha9 - 10/03/2013)
και κατάφερα να βάλω το εν λόγω mod στο σαραβαλάκι..

Οι εντυπώσεις μου? Λοιπόν μη έχοντας ξαναδοκιμάσει κάποιο cyanogenmod, ομολογώ πως εντυπωσιάστηκα. Πολύ ωραίο περιβάλλον, άπειρες επιλογές για ρυθμίσεις, αρκετά γρήγορο και responsive ..γενικώς έμεινα ικανοποιημένος!

Οδηγίες flash του cyanogenmod 7.2 στο gt-i5800

1) Κατεβάζουμε το odin, το πρόγραμμα με το οποίο θα κάνουμε το flash
http://www.mediafire.com/download/ssr5h4vv26aasf7/Flashing_Tools.zip
2) Κατεβάζουμε το cyanogenmod 7.2 ALPHA9
https://code.google.com/p/cm7-i5800/downloads/detail?name=CM7.2.0-GT-I5800_Alpha9_ODIN.zip
3) Αποσυμπιέζουμε το flashing tools και το cm7.2 και το αρχείο CM7.2.0-GT-I5800_Alpha9_ODIN.tar το βάζουμε στον ίδιο φάκελο με το odin. Στον ίδιο φάκελο με αυτά τα δύο θα δούμε και το αρχείο apollo_0531.ops που αφορά τα χαρακτηριστικά του gt-i5800 (κωδικό όνομα apollo).
4) φροντίζουμε να έχουμε εγκαταστήσει την τελευταία έκδοση του samsung kies ώστε να έχουν εγκατασταθεί και οι τελευταίοι usb drivers για το κινητό
5) Κάνουμε factory reset στο κινητό
6) Αφού τελειώσει το factory reset, κλείνουμε το κινητό και το βάζουμε σε download mode: κλείνουμε το κινητό, περιμένουμε 20-30 δευτερόλεπτα και πατάμε διαδοχικά κρατώντας πατημένα κάθε φορά τα πλήκτρα volume down->home->power μέχρι να δούμε την οθόνη του download mode.
7) ανοίγουμε το odin ως διαχειριστης (administrator) και συνδέουμε το κινητό στον υπολογιστή με το usb καλώδιο
8) περιμένουμε μέχρι το odin να βρει το κινητό και να κάνει port map τη θύρα usb
9) επιλέγουμε αριστερά τα "auto reboot","one package","protect OPS" και αφήνουμε στην ησυχία του το "reset time"
10) δεξιά τώρα, πηγαίνουμε στο "select ops" και βάζουμε το ops file για το apollo galaxy s3 i5800 που υπάρχει στον φάκελο.
Κάτω κάτω στο "one package" πάμε και βάζουμε το αρχείο .tar που είχαμε αντιγράψει πιο πάνω στον ίδιο φάκελο με το odin
11) πατάμε start και δεν πειράζουμε καθόλου το κινητό μέχρι να δούμε στην οθόνη αριστερά τη λέξη "PASS!".
12) Περιμένουμε λίγο ακόμη και αν το κινητό έχει κολλήσει στην recovery οθόνη, πάμε στην πρώτη της επιλογή που είναι το reboot και πατάμε το home για να την επιλέξουμε
13) περιμένουμε να γίνει η επανεκκίνηση και να απολάυσουμε το modded galaxy I5800 :)

have fun!

posted by qubix on December 22, 2013

Πρόσφατα αντιμετώπισα το εξής πρόβλημα:

Σε μια εγκατάσταση wordpress 3.5 με την next gen gallery 1.9.1.2, όταν ενεργοποίησα τα permalinks, σταμάτησαν να δουλεύουν το paginations και το slideshow στις galleries που είχα φτιάξει..

Μετά από λίγο ψάξιμο είδα πως η nggallery έψαχνε να βρει τις get variables "nggpage" και "show" με την function get_query_var του wordpress. Για κάποιον άγνωστο λόγω, οι εν λόγω variables δεν υπήρχαν στη λίστα του wordpress (η get_query_var ψάχνει σε μια λίστα γνωστών variables του wordpess.

Αφού απέκλεισα να φταίνε ρυθμίσεις security ή cache, κατέληξα στο συμπέρασμα πως είτε το wordpress το ίδιο δεν καταλάβαινε τι του έλεγε η nggallery, είτε έφταιγε η nggallery η ίδια..

Τελικά αποφάσισα να κάνω λίγο modification στον κώδικα του nggfunctions.php:

Γραμμή 176 λοιπόν προσθέτουμε:

   
    if (!$show) {
        if ($_GET['show'] == 'slide') {
            $show = 'slide';
        }
    }
   

και γραμμή 260:

  
    if (!$nggpage) {
        $nggpage = (int)$_GET['nggpage'];
    }
   

έτσι λοιπόν τώρα οι variables έχουν την τιμή που χρειάζεται όταν χρειάζεται!

posted by qubix on December 18, 2013

Πρόσφατα προσπαθούσα να κάνω update το bios μιας σχετικά παλιάς μητρικής gigabyte του 2006. Το καλό της υπόθεσης (νόμιζα) ήταν πως είχε ένα flash utility μέσα από το bios το οποίο υποτίθεται πως αν βάλεις το bios file σε ένα floppy disk, το διαβάζει και κάνει το update (για usb stick ούτε λόγος..).
Μετά από κάποιες αποτυχημένες προσπάθειες μιας και ότι δισκέτα και να έβαζα κάποιο I/O error γινόταν και μιας και το pc είχε linux οπότε κάτι κουλά windoze flash bios utils δεν μπορούσα να τα δοκιμάσω..είπα να δω τι γίνεται από κονσόλα linux..

Ε λοιπόν, πιο απλό δεν γίνεται:

1) κάνουμε install το flashrom
2) τρέχουμε $flashrom --read bios.bak για να πάρουμε backup το υπάρχον bios
3) μετά τρέχουμε $flashrom --write to_arxeio_tou_bios -p internal
Από την παραπάνω γραμμή που είναι αρκετά self-explaining, το μόνο που χρειάζεται να εξηγήσουμε είναι η παράμετρος -p, με την οποία λέμε στο flashrom ποιο chip να χρησιμοποιήσει για να γράψει το bios. O λόγος είναι πως υποστηρίζει παραπάνω από μια συσκευή, δηλαδή μπορεί να γράψει το bios/firmware σε κάρτες γραφικών, controllers και φυσικά και στην ίδια την μητρική οπότε χρειάζεται να του πούμε τι να κάνει.
To internal λοιπόν, το βάζουμε για flash σε μητρικές.

Για να πάρετε μια ιδέα του τι υποστηρίζει, πάτε εδώ: supported programmers

hyperworks