วันพุธที่ 26 ตุลาคม พ.ศ. 2559

วันอังคารที่ 26 พฤศจิกายน พ.ศ. 2556

การแก้ปัญหาลืมรหัสผ่าน Root ของ CentOS Linux ด้วย Single Mode

1. บู๊ตเครื่องเข้าระบบใหม่
2. กดปุ่ม Esc 1 ครั้ง
กดปุ่ม ESC เพื่อเข้าหน้า Boot


3. กดปุ่ม e เพื่อเข้าหน้าคอนโซลลีนุกซ์
4. เลื่อนลงมาที่บรรทัด kernel /vmlinuz-2.6.32-279.el6.x86_64 ro /root=/dev/mapper/...

กดปุ่ม e เพื่อแก้ไขคำสั่ง
5. กดปุ่ม e อีกครั้งเพื่อเข้าไปแก้ไขข้อมูล
6. กดปุ่ม spacebar เว้นว่างหนึ่งครั้ง
แล้วพิมพ์คำว่า single เสร็จแลดกดปุ่ม <Enter>
เว้นวรรคแล้วพิมพ์คำว่า single ต่อท้ายบรรทัด kernel /vmlinuz..... single
7. กดปุ่ม b เพื่อบู๊ตเข้าระบบแบบ Single Mode
หลังจากที่พิมพ์คำว่า single เสร็จแล้วให้กดปุ่ม b เพื่อทำการบู๊ตโหมด  Single
8. เข้าระบบแบบ Single mode สังเกตุจะเข้ามาถึงหน้าคอนโซลของ Root ( root promt) ให้พิมพ์แก้รหัสผ่านของ root ด้วยคำสั่ง
    # passwd root [enter] 
    แล้วใส่รหัสผ่านที่ต้องการลงไป
เข้า Single Mode สำเร็จจะปรากฏ Root prompt 
9. เมื่อเปลี่ยนรหัสผ่านสำเร็จแล้วให้ทำการรีบู๊ตเครื่องด้วยคำสั่ง 
    # reboot




Write by A.Arnut Ruttanatirakul
ที่มา:  http://www.arnut.com/bb/node/129

เปลี่ยนโหมดการใช้งานแบบ GUI เป็น Text Mode

1. Login ด้วย Super user แล้วเข้าใช้งาน Terminal 
2. ขอเข้าใช้ระบบในฐานะ root ด้วยคำสั่ง
    # su root [enter] 
    # passwd : xxxxx [enter] < ป้อนรหัสผ่านรูท
3. แก้ไขไฟล์ inittab ด้วยคำสั่ง
    # vi /etc/inittab [enter] 
    หลังจากนั้นให้แก้ไขหมายเลข 5 เป็นเลข 3
4. สั่งรีบู๊ตระบบ 
    # reboot [enter]
ปล. กรณีต้องการเข้าหน้าต่าง X Windows ภายหลัง ให้พิมพ์คำสั่งผ่านTerminal 
    # startx [enter]

วันศุกร์ที่ 15 มีนาคม พ.ศ. 2556

Django Web Frame Work On CentOS


Install Apache, MySQL and miscellaneous tools

[irakli@django ~]$ sudo yum install httpd-devel mysql mysql-server mysql-client mysql-devel apr-devel
[irakli@django ~]$ sudo yum install openssl mod_ssl crypto-utils
[irakli@django ~]$ sudo yum install libjpeg libpng gcc make autoconf telnet libxslt gettext
[irakli@django ~]$ sudo yum install bind bind-utils bind-devel
[irakli@django ~]$ sudo yum install zlib-devel
[irakli@django ~]$ sudo yum install postfix # I like postfix over sendmail
  • Make sure your /etc/httpd/conf/httpd.conf includes a line like:\
    Include conf.d/*.conf
    
  • sudo mkdir /var/www/default
  • sudo vi /etc/httpd/conf.d/00_default.virtualhost.conf in there enter:\
    NameVirtualHost *:80
    
    <VirtualHost *:80>
        DocumentRoot /var/www/default
        ServerName _default_
        ErrorLog logs/default-error_log
        CustomLog logs/default-access_log common
    </VirtualHost>
    
  • sudo vi /var/www/default/index.html\ in there enter your default message for misconfigured hosts:
    Default blank page
    

Upgrading Python

[irakli@django ~]$ python -V
Python 2.4.3
[irakli@django ~]$ cd ~/
[irakli@django ~]$ mkdir src
[irakli@django ~]$ cd src
[irakli@django src]$ wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
[irakli@django src]$ tar xzvf Python-2.6.4.tgz
[irakli@django src]$ cd Python-2.6.4
[irakli@django Python-2.6.4]$ ./configure --prefix=/opt/python2.6 --with-threads --enable-shared --with-zlib=/usr/include
[irakli@django Python-2.6.4]$ make
[irakli@django Python-2.6.4]$ sudo make install
[irakli@django Python-2.6.4]$ sudo ln -s /opt/python2.6/lib/libpython2.6.so /usr/lib
[irakli@django Python-2.6.4]$ sudo ln -s /opt/python2.6/lib/libpython2.6.so.1.0 /usr/lib
[irakli@django Python-2.6.4]$ sudo /sbin/ldconfig -v
[irakli@django Python-2.6.4]$ sudo ln -s /opt/python2.6/bin/python /usr/local/python
[irakli@django Python-2.6.4]$ python -V
Python 2.6.4 

Troubleshooting: if you still see old version of Python, you need to edit /etc/profile (as root), add the following line:

pathmunge /opt/python2.6/bin/
towards the end of the file, before the line that reads something like:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
and re-login to the system, so that new path location is picked up by the system. Then try running "python -V" again.
[irakli@django \~]\$ sudo yum search php # make sure we did not accidentally mess up "yum", which is the biggest threat when upgrading Python version. If you see no errors, you should be fine

Installing Python Extensions

[irakli@django Python-2.6.4]$ cd ..
[irakli@django src]$ wget http://bit.ly/6E0DNN
[irakli@django src]$ sudo su -
[root@django ~]# cd /home/irakli/src/
[root@django src]# chmod u+x setuptools-0.6c11-py2.6.egg 
[root@django src]# ./setuptools-0.6c11-py2.6.egg --prefix=/opt/python2.6
[root@django src]# exit
logout                                        

# (For some reason installing MySQL-python .egg binary, we downloaded, did not work. Let's show how to install it from source, if you run into a similar problem):

[irakli@django src]$ wget http://bit.ly/6j4uID
[irakli@django src]$ tar xzf MySQL-python-1.2.3c1.tar.gz 
[irakli@django src]$ cd MySQL-python-1.2.3c1
[irakli@django MySQL-python-1.2.3c1]$ python setup.py build
[irakli@django MySQL-python-1.2.3c1]$ sudo python setup.py install
[irakli@django MySQL-python-1.2.3c1]$ cd ..
[irakli@django src]$ python 
Python 2.6.4 (r264:75706, Nov 29 2009, 19:51:34) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
(you should not see any errors, type Ctrl-D to exit)

Install Django

[irakli@django src]$ wget http://www.djangoproject.com/download/1.1.1/tarball/
[irakli@django src]$ tar xzf Django-1.1.1.tar.gz 
[irakli@django src]$ cd Django-1.1.1
[irakli@django Django-1.1.1]$ python setup.py build
[irakli@django Django-1.1.1]$ sudo python setup.py install

[irakli@django Django-1.1.1]$ cd ..
[irakli@django src]$ python
Python 2.6.4 (r264:75706, Nov 29 2009, 19:51:34) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 1, 1, 'final', 0)
>>> import MySQLdb

Starting a Django Project

Note: for former PHP developers, it's important to understand that Django project not only does not have to, but also should not be in a web-accessible folder. An installatio that has Django project under a DocumentRoot is inherently insecure.
[irakli@django src]$ sudo mkdir -p /opt/web/django
[irakli@django src]$ sudo chown irakli:webmaster -R /opt/web
[irakli@django src]$ sudo chmod -R 775 /opt/web
[irakli@django web]$ cd /opt/web/django
[irakli@django django]$ /opt/python2.6/bin/django-admin.py startproject iproj
[irakli@django django]$ cd iproj

Configure Apache with mod_wsgi

[irakli@django django]$ cd ~/src
[irakli@django src]$ sudo ln -s /opt/python2.6/lib/python2.6.so /opt/python2.6/lib/python2.6/config/
[irakli@django src]$ wget http://modwsgi.googlecode.com/files/mod_wsgi-2.8.tar.gz
[irakli@django src]$ cd mod_wsgi-2.8
[irakli@django mod_wsgi-2.8]$ ./configure --with-python=/usr/local/bin/python
[irakli@django mod_wsgi-2.8]$ make
[irakli@django mod_wsgi-2.8]$ sudo make install
[irakli@django mod_wsgi-2.8]$ cd ~/src

[irakli@django src]$ vi /opt/web/django/iproj.wsgi

import os
import sys

sys.path.append('/opt/web/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'iproj.settings'
os.environ['PYTHON_EGG_CACHE'] = '/opt/web/django/iproj/.python-eggs'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


[irakli@django src]$ mkdir /opt/web/django/iproj/.python-eggs
[irakli@django src]$ sudo chmod -R 777 /opt/web/django/iproj/.python-eggs

[irakli@django src]$ mkdir /opt/web/django/iproj/logs
[irakli@django src]$ sudo chown apache:staff -R /opt/web/django/iproj/logs
[irakli@django src]$ sudo chmod -R 775 /opt/web/django/iproj/logs

[irakli@django src]$ sudo vi /etc/httpd/conf.d/yourdomain.com.conf

<VirtualHost *:80>
  ServerName yourdomain.com

  ErrorLog /opt/web/django/iproj/logs/error_log
  CustomLog /opt/web/django/iproj/logs/access_log combined

  UseCanonicalName Off

  Alias /admin_media /opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media
  Alias /static /opt/web/django/iproj/static

  WSGIScriptAlias / /opt/web/django/iproj.wsgi
  WSGIDaemonProcess iproj processes=7 threads=1 display-name=%{GROUP}

</VirtualHost>

[irakli@django conf.d]$ sudo /etc/init.d/httpd configtest
Syntax OK

Configure Firewall

  • sudo vi /etc/sysconfig/iptables-config and make sure following variables are set to "yes":\ IPTABLES_SAVE_ON_STOP="yes"\ IPTABLES_SAVE_ON_RESTART="yes"
    Open Web ports:
  • sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
  • sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT
  • Restart iptables with: 'sudo /sbin/service iptables stop' and: 'sudo /sbin/service iptables start' and make sure rules are still in. Try restarting server, too, to make sure setting picked up.
[irakli@django conf.d]$ sudo /etc/init.d/httpd restart
Open http://yourdomain.com you should see a Django welcome screen.

Add Startup Scripts

These will ensure, your servers will come back up after a server reboot.
  • sudo /sbin/chkconfig --add httpd
  • sudo /sbin/chkconfig --level 2345 httpd on
  • sudo /sbin/chkconfig --list httpd

  • sudo /sbin/chkconfig --add mysqld
  • sudo /sbin/chkconfig --level 2345 mysqld on
  • sudo /sbin/chkconfig --list mysqld

  • sudo /sbin/chkconfig --add postfix
  • sudo /sbin/chkconfig --level 2345 postfix on
  • sudo /sbin/chkconfig --list postfix
Have fun writing Django programs!

วันอังคารที่ 19 กุมภาพันธ์ พ.ศ. 2556

จัดการ VirtualBox ผ่านเว็บไซต์ด้วย phpvirtualbox


 ก่อนอื่นเราต้องมี VirtualBox ก่อน ต้องใช้รุ่น Oracle เท่านั้น ใช้ Open Source Edition ไม่ได้นะครับ :)
แปลงร่างกันก่อน
sudo -s
จากนั้นใช้คำสั่ง wget เพื่อเอา VirtualBox มาติดตั้ง เลือกรุ่นที่ต้องการให้ดูจากหน้าดาวน์โหลดของ VirtualBox ของผมใช้ Ubuntu Server 12.04 LTS รุ่น Precise Pagolin ครับ
wget http://download.virtualbox.org/virtualbox/4.2.0/virtualbox-4.2_4.2.0-80737~Ubuntu~precise_amd64.deb
จากนั้นสั่งติดตั้งด้วยคำสั่ง
dpkg -i virtualbox-4.2_4.2.0-80737~Ubuntu~precise_amd64.deb
เมื่อติดตั้งได้แล้ว ให้เพิ่มผู้ใช้ vbox และกำหนดให้อยู่ในกลุ่ม vboxusers
useradd -m vbox -G vboxusers
กำหนดรหัสผ่านให้ผู้ใช้ vbox
passwd vbox
สร้างไฟล์ /etc/default/virtualbox เพื่อเก็บ config ของ VirtualBox
vi /etc/default/virtualbox
ใส่ข้อมูลลงไปดังนี้
VBOXWEB_USER=vbox
จากนั้นกำหนดให้ Web Services ของ VirtualBox ทำงานทุกครั้งที่เปิดเครื่อง และสั่ง start service โดยใช้คำสั่ง
update-rc.d vboxweb-service defaults /etc/init.d/vboxweb-service start
ตอนนี้เราก็ได้ VirtualBox ที่เราเรียกกันว่า VirtualBox Headless กันแล้ว ทีนี้มาติดตั้ง phpvirtualbox กันครับ ติดตั้งแพคเกจที่จำเป็นต้องใช้กันก่อน
apt-get install apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common apache2 apache2-doc apache2-suexec libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapr1 php5-common php5-mysql php5-suhosin php-pear wget
ดาวน์โหลด phpvirtualbox จากเว็บไซต์โครงการ http://code.google.com/p/phpvirtualbox
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-10.zip
แตกไฟล์ zip แล้วคัดลอกไปยัง /var/www
unzip phpvirtualbox-4.1-10.zip mv phpvirtualbox-4.1-10 phpvirtualbox
แก้ไขค่า config ใน /var/www/phpvirtualbox ดังนี้
cp config.php-example config.php vi config.php
ใส่ข้อมูลในไฟล์ ดังนี้
var $username = 'vbox'; var $password = 'very-secret-password';
เมื่อตั้งค่าเสร็จให้คุณสั่ง start หรือ restart Apache
/etc/init.d/apache restart
แล้วเปิดเว็บ browser ไปยังเซิร์ฟเวอร์ของเราได้เลย ตัวอย่างเช่น http://my-virtualbox-server.com/virtualbox/ จะปรากฎหน้าจอให้เราใส่ username และ password คือ admin ที่เหลือก็เหมือนการทำงานบน GUI ปกติแล้วครับ :)

Epoptes (Master-Client) เสมือน Net support School บน Linux

Installation

Epoptes สามารถติดตั้ง Package ได้เลยใน Linux ตระกูล Debian และ Ubuntu  ส่วนรตระกูล Red Hat ต้องติดต้องส่วนเสริมก่อนดังนี้

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0350B375
series=$(lsb_release -s -c)test "$series" = squeeze && series=lucidtest "$series" = wheezy && series=oneiric
echo "deb http://ppa.launchpad.net/epoptes/ppa/ubuntu $series main" > \
     "/etc/apt/sources.list.d/epoptes-ppa-$series.list"
apt-get update

Server package installation

การติดตั้ง Server Package ต้องเป็น User Root  หรือเที่ยบเท่า Root ( ใช้ sudo บน Ubuntu หรือ su - on Debian):

==> now run the commands from the "Adding the epoptes PPA to your sources" step
sudo apt-get install epoptes

Configuration Server

ทำการแก้ไขไฟล์  /etc/default/epoptes   #( root only)

# Epoptes server will use the following group for the communications socket.
# That means that any user in that group will be able to launch the epoptes UI
# and control the clients.
SOCKET_GROUP=staff           # ยกตัวอย่าง Group ชื่อ staff


หมายเหตุ  SOCKET_GROUP คือ GROUP ที่ระบุให้ User มีสิทธ์ที่จะสามารถใช้งาน Program Epoptes ได้
การสร้าง Group ใน Ubuntu

--> sudo addgroup staff          # add group staff            
--> sudo gpasswd -a testuser staff     # set user "testuser " ในอยู่ในกลุ่มของ staff

Client package installation for standalone clients

==> now run the commands from the "Adding the epoptes PPA to your sources" stepsudo apt-get install epoptes-client

Configuration Client

ทำการแก้ไขไฟล์  /etc/default/epoptes-client         #(root only)
# The server which epoptes-client will be connecting to.
# If unset, thin client user sessions running on the server will try to connect
# to "localhost", while thin client root sessions and fat or standalone clients
# will try to connect to "server".
# LTSP automatically puts "server" in /etc/hosts for thin and fat clients,
# but you'd need to put "server" in DNS manually for standalone clients.
SERVER= 192.168.253.1                           # which is the DNS name or IP address of the server 
    # save and exit
epoptes-client -c             # Fetches the OpenSSL certificate from the server                                                sh -n /etc/default/epoptes

Manually updating the OpenSSL certificate

update the epoptes OpenSSL certificate, but if you need to, here's a command to get you started

openssl req -batch -x509 -nodes -newkey rsa:1024 -days 1826 -keyout /etc/epoptes/server.key -out /etc/epoptes/server.crt