CentOS 6.2 ve RedHat 6.2 e nginx PHP-FPM kurulumu

  1. su - ile root oluyoruz.
  2. php-fpm official CentOS repositorylerinde yok. bu yuzden additional repositoryleri enable ediyoruz:
  3. rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    (Bu linkler bazen calismayabilir, epel-release-6-5.noarch.rpm ya da remi-release-6.rpm‘i farklı bir kaynak üzerinden bularak rpm -Uvh komutu ile kullanabiliriz.)

  4. /etc/yum.repos.d/ altında nginx.repo adında bir repo dosyası oluşturuyoruz. Bu repo nginx’in kurulum deposu olacaktır.
  5. CentOS icin nginx.repo içerisine bunu yaziyoruz :

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1

    RedHat icin nginx.repo içerisine bunu yaziyoruz :

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
    gpgcheck=0
    enabled=1

  6. Repoyu oluşturduktan sonra aşağıdaki komutla kurulumu gerçekleştirebiliriz.
    yum --enablerepo=remi install nginx php php-fpm php-common
  7. Soyle bir sorun cikabilir:

    Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

    Bu durumda epel repository’de bir sorun var demektir. O zaman biz de epel i kaldiririz. Bunun icin:
    /etc/yum.repos.d/ deki ilgili dosyalari siliyoruz ve
    /var/cache/yum/ daki cache klasorunu siliyoruz.
    Ayni komutu tekrar calistirdigimizda yuklenmesi lazim.

  8. nginx kurulumu ardından Php 5.3.10 modüllerini kurabiliriz.
  9. APC (php-pecl-apc) : Php kodlarını önbelleklemeye yarar. Bir çeşit php hızlandırıcısı, önbellekleme sistemidir.
    CLI (php-cli) : Php için komut satırı arayüzüdür.
    PEAR (php-pear) : Php için kod deposudur diyebiliriz. Php yazılımcılarının işini kolaylaştıran öntanımlı bazı özellikler ve fonksiyonların toplandığı kod deposu.
    PDO (php-pdo) : MySQL, MsSQL, Oracle, SQLite gibi veritabanları ile büyük düzenlemelere gerek kalmadan bağlantı kurulmasına imkan veren sürücü, veri erişim katmanıdır.
    MySQL (php-mysql) : MySQL veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    PostgreSQL (php-pgsql) : PostgreSQL veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    MongoDB (php-pecl-mongo) : PHP MongoDB veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    SQLite (php-sqlite) : SQLite veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    Memcache (php-pecl-memcache) : Memcache, dinamik web yazılımlarında veritabanı sorugusunu azatlmaya ve uygulamayı hızlandırmaya yarayan bir önbellekleme (cache) sistemidir. Detaylı bilgi resmi web sitesinde mevcuttur. http://memcached.org/
    Memcached (php-pecl-memcached) : Memcache ile aynı işlevi gören farklı bir geliştirici tarafından hazırlanmış önbellekleme sistemidir. İsim benzerliği pek çok kullanıcının kafasını karıştırmaktadır. Resmi sitesinden detaylı bilgi edinebilirsiniz. http://libmemcached.org/libMemcached.html
    GD (php-gd) : GD grafik kütüphanesi gerektiren php yazılımları için gerekli modül.
    XML (php-xml) : Xml kullanan php yazılımları için gerekli modül.
    MBString (php-mbstring) : Latin alfabesi dışındaki alfabeye sahip dillerde kullanılan her bir karakterlerin kapladığı alan latin alfabesindeki dillerin kapladığı alandan daha fazladır. MBString ise latin alfabesi dışında bir alfabeye sahip dillerin php’de kullanılabilmesine imkan tanıyan bir modüldür. Örneğin birden fazla dilde yayın yapacak bir portal projeniz varsa kurulu olması gerekir.
    MCrypt (php-mcrypt) : Standart metinleri şifrelemeye olanak tanıyan bir php modülüdür. Örneğin magento gibi bir açık kaynak kodlu eticaret sistemi kuracaksanız cookie’lerin şifrelenebilmesi için bu modüle ihtiyacınız olacaktır.

    Daha fazla modül için detaylı bilgi: http://www.php.net/manual/tr/funcref.php

    Kurulum için aşağıdaki komutu çalıştırmamız yeterli. İhtiyacımız olmayanları çıkarabiliriz.

    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

  10. Nginx ve php-fpm’i başlatıyoruz.
  11. /etc/init.d/nginx start
    /etc/init.d/php-fpm start

  12. Açılış sırasında nginx ve php-fpm’i otomatik başlatmak için:
  13. chkconfig --add nginx
    chkconfig --levels 235 nginx on

    chkconfig --add php-fpm
    chkconfig --levels 235 php-fpm on

  14. Bu işlemler tamamlandıktan sonra nginx php desteği ile sistemimize kurulmuş olacaktır.
  15. nginx varsayılan kurulum dizinleri ve dosyaları şu şekildedir :

    Varsayılan nginx yayın dizini : /usr/share/nginx/html
    Varsayılan nginx config dosyası : /etc/nginx/nginx.conf
    Varsayılan virtual host dosyası : /etc/nginx/conf.d/default.conf
    Varsayılan erişim kayıtları : /var/log/nginx/access.log
    Varsayılan hata kayıtları : /var/log/nginx/error.log

    Varsayılan virtual host dosyası içerisinde nginx’in ana kurulum dizini, erişim ve hata kayıt dosyalarının konumu belirtilmediği için sorun yaşayabiliriz. Bu nedenle kurulum tamamlandıktan sonra sistemimizde bulunan varsayılan virtual host dosyasını düzenlememiz gerekmektedir.

    /etc/nginx/conf.d/ altında bulunan default.conf dosyasını aşağıdaki şekilde düzenliyoruz:

    server {
        listen        80;
        server_name  localhost;
        access_log  /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        root /usr/share/nginx/html;
    
        location / {
            index index.html index.htm index.php;
        }
    
        location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        }
    }
  16. default.conf dosyasını düzenledikten sonra terminal penceresinde service nginx restart yazarak nginx’i yeniden başlatmamız gerekiyor.
  17. Artık nginx web sunucumuza http://127.0.0.1(sanal makinede connection refuse olabilir) ya da http://localhost yazarak erişebiliriz.

    Php’yi test etmek için /usr/share/nginx/html dizini altında info.php adında bir dosya hazırlayarak içeriği <?php phpinfo(); ?> olacak sekilde kayıt ediyoruz ve ardından tarayıcımız ile http://localhost/info.php ‘yi aciyoruz.

CentOS 6.2 server ve VMware hakkında

centosda gui yi command line dan enable etmek için:

If you installed CentOS as a server, a graphical desktop environment may not be installed. The yum command provides an option to install all of the software required for either the Gnome or KDE graphical desktop environments. The X Windows system is required for any graphical desktop you prefer. The X Windows system provides the server that manages the graphical user interface. You must have root privileges to install software and start the X server

Instructions

  1. Log in to the CentOS operating system.
  2. Type the command su - to switch to a root session.
  3. Type the command:
    yum groupinstall "X Windows System" "GNOME Desktop Environment"
    or
    yum groupinstall "X Windows System" "KDE Desktop Environment"
    to install your preferred desktop environment.
  4. Type the command startx to start the X windows system and your preferred desktop environment.

Tips & Warnings: If you already have a graphical desktop environment installed, you can just type startx as the root user.

Kaynak: http://www.ehow.com/how_8763657_start-centos-gui-command-line.html
 
 

process kill etmek icin:

Step #1: First, you need to find out process PID (process id)

Use ps command or pidof command to find out process ID (PID). Syntax:
ps aux | grep processname
pidof processname

For example if process name is lighttpd, you can use any one of the following command to obtain process ID:
# ps aux | grep lighttpd

OR use pidof command which is use to find the process ID of a running program:
# pidof lighttpd

Step #2: kill process using PID (process id)

Above command tell you PID (3486) of lighttpd process. Now kill process using this PID:
# kill 3486
OR
# kill -9 3486
Where, -9 is special Kill signal, which will kill the process.
 
 

VMware – Bridged Networking – No route to host problemi:

Linux-Centos da System/Administration/Firewall a girip lazim olup kapali olan portlari aciyoruz. ornegin http icin 80, https icin 443, ssh icin 22 gibi..
 
 

Google “Chorme cannot be run as root” problemi:

/opt/google/chrome/google-chrome dosyasini aciyoruz, exec -a "$0" "$HERE/chrome" "$@" komutunun bulundugu satiri buluyoruz ve onu exec -a "$0" "$HERE/chrome" "$@" --user-data-dir ile degistiriyoruz. ve artik aciliyor..
 
 

VMware – Klasör/Dosya Paylaşımı:

sanal makinenin ismine sağ tıklayıp Settings/Options/Shared Folders – Always Enabled. Paylaşılan klasör/dosya Centos’da mnt/hgfs klasöründe.. (VMware tools installation gerekebilir, emin değilim)

windows’ta nginx kurulumu ve proxy olarak kullanımı

önce windows için burdan indiriyoruz.

conf klasöründeki nginx.conf dosyasında şu gibi değişiklikleri yapıyoruz:

server {
 listen 80;
 server_name localhost;

 location / {
 #proxy_pass http://localhost:8080;
 proxy_pass http://madvens.wordpress.com;
 }
}

cmd den nginx klasörüne girip start nginx komutu ile nginx’i çalıştırıyoruz.

artık 80. porta gelen istekleri nginx otomatik proxy_pass te belirttiğimiz yere yönlendiriyor.

not: nginx i durdurmak için: taskkill /F /IM nginx.exe

Jelastic’te mysql konfigürasyonu

http://jelastic.com/docs/connection-to-mysql

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
 <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
 <!--<property name="url" value="jdbc:mysql://localhost:3306/fcDb"/>-->
 <property name="url" value="jdbc:mysql://mysql-formCreator.jelastic.servint.net/JelasticDB"/>
 <property name="username" value="jelasticDBUser"/>
 <property name="password" value="jelasticDBUser"/>
</bean>

Eclipse Kullanarak Android’de HelloWorld Uygulaması

- Android SDK indirilmesi ve Kurulumu

öncelikle bu adresten android sdk yı indiriyoruz. inince Android SDK’nın kurulduğu klasörde bulunan SDK Manager.exe dosyasını çalıştırıyoruz. program bize uygun olanları checkli gösterecek. accept all ve install diyoruz. “Access is denied” diye bişeyler çıkıyorsa programı baştan “run as administrator” diye çalıştırıyoruz ve yine accept all ve install…

- Eclipse’de ADT Plugin Kurulumu

şimdi eclipse de bu adreste anlatıldığı gibi ADT Pluginini kuruyoruz. bakmaya üşenenler için:

  1. Start Eclipse, then select Help > Install New Software….
  2. Click Add, in the top-right corner.
  3. In the Add Repository dialog that appears, enter “ADT Plugin” for the Name and the following URL for the Location:
  4. https://dl-ssl.google.com/android/eclipse/
  5. Click OK
  6. Note: If you have trouble acquiring the plugin, try using “http” in the Location URL, instead of “https” (https is preferred for security reasons).
  7. In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
  8. In the next window, you’ll see a list of the tools to be downloaded. Click Next.
  9. Read and accept the license agreements, then click Finish.
  10. Note: If you get a security warning saying that the authenticity or validity of the software can’t be established, click OK.

  11. When the installation completes, restart Eclipse.

Son olarak SDK Locatin ayarlarınız yapmalıyız. Bunun için ana menüden Window -> Preferences yolunu takip edin. Daha sonra Android sekmesine tıklıyoruz. Sağ taraftan Browse seçeneğine tıklayarak, SDK Manager.exe’nin bulunduğu dizini seçiyoruz. Seçtikten sonra Apply yapıyoruz ve entegrasyon tamamlanmış oluyor.

- HelloWorld!

Kurulum işlemini tamamladıktan sonra “Hello World” uygulamasını yazmaya başlayabiliriz. burdan sonrası bu linkte :) “Run the Application” bölümünü tamamladıktan sonra “Upgrade the UI to an XML Layout” bölümüne geçilmese de program artık çalışıyor..

- Uygulamayı Gerçek Bir Cihazda Çalıştırmak

şimdi geldi uygulamayı gerçek bir cihazda çalıştırmaya.. bunun çeşitli yolları var. bence en kolayı Astro File Manager gibi bir porgramı telefona android marketten indirmek. sd karta apk dosyasını taşıdıktan sonra bu program vasıtasıyla kolayca install edebiliyoruz. tavsiye ederim..

Git with Eclipse (EGit)

http://www.vogella.de/articles/EGit/article.html

bu sitedeki adımları takip ettim. Fakat eclipseteki kodları github a push etmek isterken “Reason: ssh://git@github.com:22 Passphrase for ...” gibi bi hata çıkıyor. çünkü, bendeki eclipse versiyonu indigo ve galiba incubationlarda böyle bir bug varmış. bu linkte de görüldüğü gibi, eclipse in older versionlarından birini yüklemek gerekiyor. peki Where can I find older releases of EGit? :)
bendeki güncel versiyonu uninstall edip, http://download.eclipse.org/egit/updates-1.0 bunu install ettim, oldu. yani github a eclipseteki projeyi push edebildim.

Alternatively, şöyle de birşeyler var:

Simple fix that skips the passphrase and uses only Eclipse

  1. Use ssh-keygen from Git Bash, or Eclipse, to generate an RSA key, but do so without setting a passphrase.
  2. Open and copy the public key from ~/.ssh/id_rsa.pub and add it to GitHub via the SSH Public Keys section in Account Settings.
  3. Restart Eclipse. (Note: Not doing this was tripping me up for a while.)
  4. Try the Push Upstream steps again from the EGit User Guide.

The obvious pitfall here is that a passphrase cannot be associated with the RSA key. If skipping the passphrase is out of the question the following solution a little more up your alley.

Tomcat – java.lang.OutOfMemoryError: PermGen space

Tomcat production server sometime will hit the following java.lang.OutOfMemoryError: PermGen space error.

java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)

It’s usually happened when the Tomcat start and stop few times. It’s just funny, however you can fine tune it with some minor changes in the Tomcat configuration setting. By default, Tomcat assigned very little memory for the running process, you should increase the memory by make change in catalina.sh or catalina.bat file.

How to fix it?

1) Find where is Cataline.sh located. We need to make some changes in “catalina.sh” file.
P.S Cataline.sh is located at \tomcat folder\bin\catalina.sh

2) Assign following line to JAVA_OPTS variable and add it into catalina.sh file.

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

Partial example of the catalina.sh file

# JSSE_HOME (Optional) May point at your Java Secure Sockets Extension
# (JSSE) installation, whose JAR files will be added to the
# system class path used to start Tomcat.
#
# CATALINA_PID (Optional) Path of the file which should contains the pid
# of catalina startup java process, when start (fork) is used
#
# $Id: catalina.sh 609438 2008-01-06 22:14:28Z markt $
# -----------------------------------------------------------------------------

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m
-Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

# OS specific support. $var _must_ be set to either true or false.
cygwin=false
os400=false
darwin=false
case "`uname`" in
CYGWIN*) cygwin=true;;
OS400*) os400=true;;
Darwin*) darwin=true;;
esac

# resolve links - $0 may be a softlink
PRG="$0"

3) Done. Restart Tomcat.
You should change the “Xms” and “PermSize” value base on your server capability.

Windowsta Java + MongoDB

Windowsta Mongodb kurulumu:

öncelikle bu adresten mongodb yi indiriyoruz. unzip ettikten sonra bin klasöründeki mongod.exe yi (database sever için)  ve mongo.exe yi (administrative shell için) çalıştırıyoruz.

by default mongodb dataları C:\data\db klasöründe tutuyor. eğer başka yerde tutmak isterseniz mongod.exe yi --dbpath komutu ile çalıştırıyoruz. (örneğin: dataları d:\mongodb\data\db klasöründe tutmak için,  mongod.exe --dbpath d:\mongodb\data\db  gibi)

eğer bi aksilik olmazsa “waiting for connections on port 27017″ diyecek.

artık mongo.exe yi çalıştırıp administrative shell imize geçebiliriz.

(bu arada diğer seçenekleri görmek için mongod --help veya mongo --help)

biraz takılmak isterseniz, burada  örnekler var..

Javada Mongodb kullanımı:

bu adresten mongo jarını indiriyoruz ve bu jarı classpath e include ediyoruz. artık kullanmaya başlayabiliriz.

bu kod ile test edebilirsiniz:

package com.wordpress.madvens.mongo;

import com.mongodb.Mongo;

public class Test {
   public static void main(String[] args) throws Exception {
       Mongo m = new Mongo();
       System.out.println(m.getDatabaseNames());
    }
}

daha fazla öğrenmek için: https://github.com/mongodb/mongo-java-driver/blob/master/examples/QuickTour.java

online Java API dökümantasyonu için: http://api.mongodb.org/java/current/

online MongoDB API dökümantasyonu için: http://api.mongodb.org/java/current/

son olarak faydalı bir link : http://www.mkyong.com/tutorials/java-mongodb-tutorials/

Installing Jadclipse

Today I am going to show you how to install and use Jadclipse. Jadclipse is eclipse plug-in that integrates Jad (Java decompiler) with Eclipse.

  • First you require Jad for decompiling java files. You can find a list of mirrors on this site where you can get JAD for various platforms. Download it and unzip into any folder on your hard drive.
  • Next download the Jadclipse plug-in jar file from here and place the jar file in your eclipse plugins folder
  • Restart your eclipse. If eclipse didn’t recognize the plug-in then launch eclipse with -clean flag.
eclipse -clean
  • Configure the path to the Jad executable in eclipse under Window > Preferences… > Java > JadClipse > Path to Decompiler.

  • Set the full path of the jad executable, e.g. C:\Program Files\Jad\jad.exe
  • Go to Window > Preferences… > General > Editors > File Associations and make sure that the JadClipse Class File Viewer has the default file association for *.class  files.

Now everything is done. If you want to view the source for any class then simply ctrl+click on that class then the source for that class will be showed in your eclipse editor.

Java IO ile ilgili bişeyler

kodda OutputStreamWriter hakkında iki örnek var:

public static void main(String args[]) throws IOException {

  ByteArrayOutputStream out = new ByteArrayOutputStream();
  OutputStreamWriter ow = new OutputStreamWriter(out);

  ow.write("Constructor argument is ByteArrayOutStream object");
  ow.flush();
  System.out.println(out.toString());

  FileOutputStream flt = new FileOutputStream(new File("D:/madvens.txt"));
  ow = new OutputStreamWriter(flt);
  ow.append("welcome to http://madvens.wordpress.com");

  System.out.println("\nAppended sequence of characters will generate in a file madvens.txt");
  ow.flush();
}

Java IO Class Overview Table

Byte Based Character Based
Input Output Input Output
Basic InputStream OutputStream Reader
InputStreamReader
Writer
OutputStreamWriter
Arrays ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
Files FileInputStream
RandomAccessFile
FileOutputStream
RandomAccessFile
FileReader FileWriter
Pipes PipedInputStream PipedOutputStream PipedReader PipedWriter
Buffering BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
Filtering FilterInputStream FilterOutputStream FilterReader FilterWriter
Parsing PushbackInputStream
StreamTokenizer
PushbackReader
LineNumberReader
Strings StringReader StringWriter
Data DataInputStream DataOutputStream
Data – Formatted PrintStream PrintWriter
Objects ObjectInputStream ObjectOutputStream
Utilities SequenceInputStream