可可熊D窝

Keep it simple, stupid


  • 首页

  • 关于

  • 标签182

  • 分类8

  • 归档359

  • 搜索

CentOS部署 Nginx+uWSGI+Django

发表 2013-06-19 | 分类 Linux | 评论数:
| 字数: 3.4k | 阅读 ≈ 3 分钟

django-nginx-uwsgi

创建单独的django环境:

virtualenv django

激活django环境:

[root@HJY-SERVER html]# source ../venv/django/bin/activate

新建一个工程:

(django)[root@HJY-SERVER html]# django-admin.py startproject mcard
(django)[root@HJY-SERVER html]# tree mcard/
mcard
├── manage.py
└── mcard> 
 ├── __init__.py
 ├── settings.py
 ├── urls.py
 └── wsgi.py
1 directory, 5 files
阅读全文 »

Android4.2.2源码编译并修改系统App

发表 2013-06-18 | 分类 Life | 评论数:
| 字数: 3.2k | 阅读 ≈ 3 分钟

android-logo

Android4.2.2源码编译

这不是一份详细的Android源码编译指南,这里只是除官方指南外的记录,请先阅读官方编译指南

官方的编译指南挺详细的,最好看仔细一点,比如ccache这个东西,如果你老在不同的分枝切换编译这个东西能节省不少的时间,官方推荐的操作系统是Ubuntu 10.04 64位, 不过我这里原来这里有一个下载好的12.04,看到官方说明也也支持所以就在12.04上面进行编译了。

花了几天的时间下载源码,因为老是卡死在一个地方,本来把机器开着一个晚上下载,希望第二天能下载完,结果不知道啥时候已经卡死了,所以断断续续的下载了几天,天朝的环境真是不管做什么都“多难兴邦”。

下载完所有的源码后,最好能打包一下放在别的地方,省得弄乱了需要重新下载:

tar -jcvf android.tar.bz2 android/

编译的时候如果你不做别的事情,最好根据你的CPU指定多线程编译:

make -j8

我在编译的时候由于使用虚拟机,而且同时又在做别的事情,经常会造成虚拟机死掉,有时使用Ctrl+c中断了编译过程,所以出现了下面的错误:

make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so] Error 1

在Google Group里找到了原因:
https://groups.google.com/forum/?fromgroups#!topic/android-porting/LVpm39BAqRw

解决办法:

make clean-libwebcore > 
make -j4 libwebcore> 
make -j4

修改并编译系统App方法一:

如果你需要单独编译某个App,会生成apk文件和odex文件,如果你只想生成apk文件,修改在Android.mk文件

cd packages/apps/Stk/> 
vi Android.mk

LOCAL_PACKAGE_NAME := Stk> 
LOCAL_CERTIFICATE := platform> 
#这行是新添加的:> 
WITH_DEXPREOPT := false

修改完后使用命令:mm

编译完会在out目录下会生成Stk.apk文件,把该文件push到手机上,就可以替换原有的系统程序了:

adb push Stk.apk /system/app/> 
1236 KB/s (39262 bytes in 0.031s)> 
adb shell chmod 644 /system/app/Stk.apk> 
adb reboot

折腾了几天自己编译的系统程序(system app)总是不能在手机上运行,而从别的地方下载的app就可以用上面的命令运行,早上突然意识到是不是TARGET不对,于是试了一下:

You're building on Linux> 

Lunch menu... pick a combo:> 
     1\. full-eng> 
     2\. full_x86-eng> 
     3\. vbox_x86-eng> 
     4\. full_mips-eng> 
     5\. full_grouper-userdebug> 
     6\. full_tilapia-userdebug> 
     7\. mini_armv7a_neon-userdebug> 
     8\. mini_armv7a-userdebug> 
     9\. mini_mips-userdebug> 
     10\. mini_x86-userdebug> 
     11\. full_mako-userdebug> 
     12\. full_maguro-userdebug> 
     13\. full_manta-userdebug> 
     14\. full_toroplus-userdebug> 
     15\. full_toro-userdebug> 
     16\. full_panda-userdebug> 

Which would you like? [full-eng] 8> 
or:> 
lunch mini_armv7a-userdebug

再次重新运行mm命令,push到手机上,终于可以运行了,网上看到的文章一般都没有提到lunch的作用,默认的情况下lunch会被设定为:full-eng,而这个选项是用给虚拟机的,所以生成的apk在手机上无法运行,所以要选择编译选项为arm。full_mako-userdebug指的是Nexus 4,因为我这里编译的只是上层应用所以用这个选项也可以。

我这里用的测试手机是MOTO ME525+ 已刷机 CM10.1(4.2.2) 已ROOT,如果你也有类似的需要请注意保持手机系统的版本和你编译的源码一致,并且你的手机已经ROOT。

修改并编译系统App方法二:

首先下载App源代码:

git clone https://android.googlesource.com/platform/packages/apps/Launcher -b android-4.2.2_r1

然后把下载的代码通过在Eclipse的菜单新建一个工程,在工程目录下新建文件夹libs, 用来存放out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
文件,这个文件包含了一些隐藏的系统API,我们在Eclipse里编译系统app的时候需要调用这个库。

在工程文件的属性中按以下步骤添加系统库:

Java Build Path-> Libraries - > Add Library -> User Library -> User Libraries -> New -> input User library name(like framework_android) and checkbox System library on -> Add JARs -> Select ./libs/classes.jar file> 

Select: Order and Export  -> make framework_android on the top and checked

我这里使用自己编译生成的framework_intermediates/classes.jar文件总是无法成功调用到隐藏的系统API,但是通过查看jar包,可以看到com.android.internal这样的系统API. 使用别人在网上发出来的classes.jar文件可以找到系统API,不过因为不是4.2的,所以我这里编译的时候出现了其它引用错误.

参考文章:

http://www.iteye.com/topic/937547

http://www.mkyong.com/android/attach-android-source-code-to-eclipse-ide

CentOS部署 Nginx+uWSGI+Bottle

发表 2013-06-08 | 分类 Linux | 评论数:
| 字数: 6.4k | 阅读 ≈ 6 分钟

bottle_uwsgi

安装virtualenv
看到别人布署bottle都是配合virtualenv来的,看了一下virtualenv的介绍,确实比较有用,它可以为你的应用创建一个独立的Python环境,这样如果你布署了几个Python应用,就不需要担心它们各自需要的依赖文件版本不同,甚至它们需要的Python版本也不同。

virtualenv官方建使用 pip-1.3以上版本安装,所以先安装一个pip(当然你也可以直接从源码安装):

wget http://peak.telecommunity.com/dist/ez_setup.py> 
python ez_setup.py> 
easy_install pip> 
pip install virtualenv

virtualenv会把所有依赖包安装在一个独立的环境下,所以你需要先建立一个给它专用的目录:

mkdir venv

针对你目前要布置的Python应用,建立一个新的环境目录:

virtualenv venv/bottle

激活:
[www@HJY-SERVER ~]$ source ./venv/bottle/bin/activate>
(bottle)[www@HJY-SERVER ~]$

激活后你可以看到上面的Shell提示符前面有了你当前环境名称“bottle”。

安装bottle:

(bottle)[www@HJY-SERVER ~]$ pip install bottle> 
Downloading/unpacking bottle> 
  Downloading bottle-0.11.6.tar.gz (60kB): 60kB downloaded> 
  Running setup.py egg_info for package bottle> 
Installing collected packages: bottle> 
  Running setup.py install for bottle> 
    changing mode of build/scripts-2.6/bottle.py from 664 to 775> 
    changing mode of /home/www/venv/bottle/bin/bottle.py to 775> 
Successfully installed bottle> 
Cleaning up...

安装uWSGI:

wget http://projects.unbit.it/downloads/uwsgi-1.4.9.tar.gz> 

tar zxvf uwsgi-1.4.9.tar.gz> 
cd ../uwsgi-1.4.9.tar.gz> 
make

如果遇到一大片的错误位置在pythong_plugin.c ,那么应该是缺少python-devel包,用yum安装一下:

plugins/python/python_plugin.c:1871: error: statement with no effect> 
yum install python-devel

编译完成后配置:

mkdir opt/uwsgi> 
cp uwsgi /opt/uwsgi/> 
touch /opt/uwsgi/bottle.xml> 

mkdir /home/www/html/cgi/

写一个测试页面:

cat >> /home/www/html/cgi/index.py

from bottle import route, run, default_app

@route('/')
def index():
 return "hello world"

if __name__ == "__main__":
 run(host="localhost", port=8888)
else:
 application = default_app()

uwsgi启动参数配置脚本:

[root@HJY-SERVER ~]# cat /opt/uwsgi/bottle.ini> 
[uwsgi]> 
socket=/opt/uwsgi/run/bottle.sock> 
daemonize=/opt/uwsgi/run/bottle.log> 
pidfile=/opt/uwsgi/run/bottle.pid> 
gid=www> 
uid=www> 
virtualenv=/home/www/venv/bottle> 
chdir=/home/www/html/cgi> 
module=index> 
master=True> 
processes=4> 
max-requests=5000

uWSGI没有自带的启动脚本,我这里从nginx的启动脚本改了一个过来:

#!/bin/sh
#
# uwsgi        Startup script for uwsgi
#
# chkconfig: - 85 15
# processname: uwsgi
# config: /etc/uwsgi/uwsgi.conf
# config: /etc/sysconfig/uwsgi
# pidfile: /var/run/uwsgi.pid
#
### BEGIN INIT INFO
# Provides: uwsgi
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop uwsgi
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

UWSGI=/opt/uwsgi/uwsgi
CONFFILE=/opt/uwsgi/bottle.ini
#CONFFILE=/opt/uwsgi/bottle.xml


prog=uwsgi
uwsgi=${UWSGI}
conffile=${CONFFILE}
lockfile=/opt/uwsgi/run/bottle.lck
pidfile=/opt/uwsgi/run/bottle.pid
logfile=/opt/uwsgi/run/bottle.log
SLEEPMSEC=100000
RETVAL=0

start() {
    echo -n $"Starting $prog: "

    ${uwsgi} --ini ${conffile}
    #daemon --pidfile=${pidfile} ${uwsgi} -x ${conffile} -d ${logfile}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch ${lockfile}
    return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    killproc -p ${pidfile} ${prog}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

reload() {
    echo -n $"Reloading $prog: "
    killproc -p ${pidfile} ${prog} -HUP
    RETVAL=$?
    echo
}

upgrade() {
    oldbinpidfile=${pidfile}.oldbin

    configtest -q || return 6
    echo -n $"Staring new master $prog: "
    killproc -p ${pidfile} ${prog} -USR2
    RETVAL=$?
    echo
    /bin/usleep $SLEEPMSEC
    if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then
        echo -n $"Graceful shutdown of old $prog: "
        killproc -p ${oldbinpidfile} ${prog} -QUIT
        RETVAL=$?
        echo
    else
        echo $"Upgrade failed!"
        return 1
    fi
}

configtest() {
    if [ "$#" -ne 0 ] ; then
        case "$1" in
            -q)
                FLAG=$1
                ;;
            *)
                ;;
        esac
        shift
    fi
    ${uwsgi} -t -c ${conffile} $FLAG
    RETVAL=$?
    return $RETVAL
}

rh_status() {
    status -p ${pidfile} ${uwsgi}
}

# See how we were called.
case "$1" in
    start)
        rh_status >/dev/null 2>&1 && exit 0
        start
        ;;
    stop)
        stop
        ;;
    status)
        rh_status
        RETVAL=$?
        ;;
    restart)
        configtest -q || exit $RETVAL
        stop
        start
        ;;
    upgrade)
        upgrade
        ;;
    condrestart|try-restart)
        if rh_status >/dev/null 2>&1; then
            stop
            start
        fi
        ;;
    force-reload|reload)
        reload
        ;;
    configtest)
        configtest
        ;;
    *)
        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-re                                                                             load|upgrade|reload|status|help|configtest}"
        RETVAL=2
esac

exit $RETVAL

把uWSGI加入系统自启动脚本中:

[root@HJY-SERVER ~]# chkconfig --add uwsgi> 
[root@HJY-SERVER ~]# chkconfig --level 345 uwsgi on> 
[root@HJY-SERVER ~]# service uwsgi status

修改nginx.conf文件,支持不同端口的虚拟主机,一个80端口用来支持PHP,一个8051端口支持uWSGI:

user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 8051;
server_name localhost;
root /home/www/html/cgi;
location / {
include uwsgi_params;
uwsgi_pass unix:///opt/uwsgi/run/bottle.sock;
}
}
server {
listen 80;
server_name localhost;
root /home/www/html;
location ~ .*.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}

参考文章:

http://www.liuts.com/post/216/
http://jinghong.iteye.com/blog/1283984
http://www.actkr.com/?p=791#sthash.gMK8MScq.3f8JF7RD.dpbs

Comments

kongove: 最近博客很活跃呀,还改版了。

CentOS配置LNMP环境

发表 2013-06-07 | 分类 Linux | 评论数:
| 字数: 9.6k | 阅读 ≈ 9 分钟

Linux Nginx MySQL PHP

由于SELinux经常会使PHP FTP等常用的WEB服务产生一些奇怪的错误,所以我们在安装LNMP环境前先关闭SELinux:

sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/sysconfig/selinux

以下配置中, 所有编译安装的软件全部在/opt目录下, WEB服务器的目录为/home/www/html, MySQL数据目录为/opt/mysql/data

一. Nginx编译安装

安装编译环境以及依赖包:

yum install wget> 
yum install pcre-devel> 
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers make gd gd-devel

添加WEB服务器专用的用户:

/usr/sbin/groupadd www> 
/usr/sbin/useradd -g www www

编译安装Nginx:

wget http://nginx.org/download/nginx-1.4.1.tar.gz> 
mkdir /opt/nginx> 

tar zxvf nginx-1.4.1.tar.gz> 
cd nginx-1.4.1> 
./configure --user=www --group=www --prefix=/opt/nginx --with-http_ssl_module --with-pcre --with-http_image_filter_module> 

make && make install

创建Nginx服务器目录:

mkdir /home/www/html

编辑nginx.conf文件:

[root@HJY-SERVER conf]# sed '/#/d' /opt/nginx/conf/nginx.conf | sed '/^$/d'
user  www www;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /home/www/html;
            index  index.php index.html index.htm;
        }
    }
}

配置Nginx自启动, Nginx官方有rpm包格式的二进制安装包,下载一个从里面提取nginx启动脚本,这里可以借用一下:

wget http://nginx.org/packages/centos/6/x86_64/RPMS/nginx-1.4.1-1.el6.ngx.x86_64.rpm> 
rpm2cpio nginx-1.4.1-1.el6.ngx.x86_64.rpm | cpio -idmv

nginx脚本:

#!/bin/sh
# nginx        Startup script for nginx
#
# chkconfig: - 85 15
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# description: nginx is an HTTP and reverse proxy server
#
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nginx
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

NGINX=/opt/nginx/sbin/nginx
CONFFILE=/opt/nginx/conf/nginx.conf

prog=nginx
nginx=${NGINX}
conffile=${CONFFILE}
lockfile=${LOCKFILE-/opt/nginx/nginx.lck}
pidfile=${PIDFILE-/opt/nginx/logs/nginx.pid}
SLEEPMSEC=100000
RETVAL=0

start() {
    echo -n $"Starting $prog: "

    daemon --pidfile=${pidfile} ${nginx} -c ${conffile}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch ${lockfile}
    return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    killproc -p ${pidfile} ${prog}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

reload() {
    echo -n $"Reloading $prog: "
    killproc -p ${pidfile} ${prog} -HUP
    RETVAL=$?
    echo
}

upgrade() {
    oldbinpidfile=${pidfile}.oldbin

    configtest -q || return 6
    echo -n $"Staring new master $prog: "
    killproc -p ${pidfile} ${prog} -USR2
    RETVAL=$?
    echo
    /bin/usleep $SLEEPMSEC
    if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then
        echo -n $"Graceful shutdown of old $prog: "
        killproc -p ${oldbinpidfile} ${prog} -QUIT
        RETVAL=$?
        echo
    else
        echo $"Upgrade failed!"
        return 1
    fi
}

configtest() {
    if [ "$#" -ne 0 ] ; then
        case "$1" in
            -q)
                FLAG=$1
                ;;
            *)
                ;;
        esac
        shift
    fi
    ${nginx} -t -c ${conffile} $FLAG
    RETVAL=$?
    return $RETVAL
}

rh_status() {
    status -p ${pidfile} ${nginx}
}

# See how we were called.
case "$1" in
    start)
        rh_status >/dev/null 2>&1 && exit 0
        start
        ;;
    stop)
        stop
        ;;
    status)
        rh_status
        RETVAL=$?
        ;;
    restart)
        configtest -q || exit $RETVAL
        stop
        start
        ;;
    upgrade)
        upgrade
        ;;
    condrestart|try-restart)
        if rh_status >/dev/null 2>&1; then
            stop
            start
        fi
        ;;
    force-reload|reload)
        reload
        ;;
    configtest)
        configtest
        ;;
    *)
        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-re                                                                             load|upgrade|reload|status|help|configtest}"
        RETVAL=2
esac

exit $RETVAL

复制nginx脚本到init.d启动脚本目录下:

cp ./etc/rc.d/init.d/nginx /etc/rc.d/init.d/> 
chmod +x nginx > 
chkconfig --add nginx> 
chkconfig --level 345 nginx on

测试配置并启动:

service nginx configtest> 
service nginx start

到现在Nginx安装已经完成.

二. MySQL编译安装

安装依赖环境:

yum install cmake bison

下载稳定版本的MySQL 5.6:

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz

添加mysql用户:

groupadd mysql> 
useradd -r -g mysql mysql

编译安装:

cd mysql-5.6.12> 

cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/opt/mysql/data -DINSTALL_MYSQLTESTDIR=> 

make && make install

编译安装完成后进行配置:

chmod +w /opt/mysql/> 
chown -R mysql:mysql /opt/mysql/> 
<del datetime="2013-06-08T07:46:57+00:00">ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18</del>> 
ln -s /opt/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18> 
cd /opt/mysql/support-files/> 
cp mysql.server /etc/rc.d/init.d/mysqld> 
chmod +x /etc/init.d/mysqld> 

./scripts/mysql_install_db --defaults-file=/opt/mysql/my.cnf --basedir=/opt/mysql/ --datadir=/opt/mysql/data/ --user=mysqlshell> bin/mysqld_safe --user=mysql > 

vi /etc/init.d/mysqld(编辑此文件,查找并修改以下变量内容:)> 
basedir=/opt/mysql> 
datadir=/opt/mysql/data> 

chkconfig --add mysqld> 
chkconfig --level 345 mysqld on> 

service mysqld start> 

/usr/local/mysql/bin/mysqladmin password [new-password]

三. 编译安装PHP

依赖的软件包:

wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"> 
wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"> 
wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"> 

tar zxvf libmcrypt-2.5.8.tar.gz> 
cd libmcrypt-2.5.8/> 
./configure --prefix=/opt/libs> 
make> 
make install> 
cd libltdl/> 
./configure --prefix=/opt/libs --enable-ltdl-install> 
make> 
make install> 
cd ../../> 

tar zxvf mhash-0.9.9.9.tar.gz> 
cd mhash-0.9.9.9/> 
./configure --prefix=/opt/libs> 
make> 
make install> 
cd ../

把安装好的libs目录加入系统路径中:

cd /etc/ld.so.conf.d/> 
[root@HJY-SERVER ld.so.conf.d]# cat opt-libs.conf> 
/opt/libs/lib

编译安装PHP:

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz
tar zxvf mysql-5.6.12.tar.gz
cd mysql-5.6.12.tar.gz

export LIBS="-lm -ltermcap -lresolv"
export DYLD_LIBRARY_PATH="/opt/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64"

export LD_LIBRARY_PATH="/opt/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64"

./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --with-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir=/opt/libs --with-jpeg-dir=/opt/libs --with-png-dir=/opt/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/opt/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap 

make
make install

配置:

cp php.ini-development /opt/php/etc/php.ini> 
cd ../> 

mv /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf

Update 2013.6.8:

安装好后没有对PHP进行测试,今天测试了一下,结果PHP脚本不能被执行,默认在浏览器里被下载了下来,习惯了以前用Apache不用对PHP进行配置, 现在要继续未完成的配置:

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm> 
chkconfig --add php-fpm> 
chkconfig --level 345 php-fpm on

修改php-fpm文件:

pid = run/php-fpm.pid> 
user = www> 
group = www

修改nginx.conf文件,在server字段处添加以下内容:

location ~ .*\.(php|php5)?$> 
            {> 

                root   /home/www/html;> 
                fastcgi_pass 127.0.0.1:9000;> 
                fastcgi_index index.php;> 
                include fastcgi.conf;> 
            }

配置完成后重起服务:

service nginx restart> 
service php-fpm restart

可以用下面的命令查看占用端口的进程名,pid,nginx和php-fpm分别占用80和9000端口:

netstat -anpo | grep tcp

参考文章:
http://blog.s135.com/nginx_php_v7/
http://www.centos.bz/2011/09/linux-compile-install-mysql-5-5-15-from-source/
http://www.boluo.org/archives/chkconfig-nginx-on.html
http://www.linuxsong.org/2010/09/cpio/

btw: wordpress中想要添加空行还不容易,p,br 标签都会被过滤掉, 找到一个简单的办法适用于最新的3.5.1版本,安装TinyMCE Advanced插件, 打开插件里面的选项,禁止自动删除< p >, < br \ >标签,不过我这里测试的只支持: < br \ > 标签.

Comments

Amankwah: 最近你在干嘛呢??

可可熊: 配个服务器么! 好奇怪吗?

CentOS 6.4安装配置-使用U盘作为安装介质

发表 2013-06-06 | 分类 Linux | 评论数:
| 字数: 1.4k | 阅读 ≈ 1 分钟

centos6
前期准备:

* IOS文件 : CentOS-6.4-x86_64-minima.iso 
* U盘 : 因为使用最小化的安装, 所以1G的U盘就够用了 
* UltraISO: 最好使用9.X的版本, 新版本制作的U盘启动支持的主板比较多 

CentOS 6系统使用U盘安装会遇到一些问题:

  • 首先是如果直接把官方下载的IOS用UltraISO写入U盘启动时会遇到错误, U盘启动后会停在下面的画面:
Press the <enter> key to begin the installation process

解决方法: 用记事本打开这个文件syslinux\syslinux.cfg,把第一行default vesamenu.c32 替换为 default linux timeout 600 label linux kernel vmlinuz append initrd=initrd.img 这样修改之后,系统启动的时候就会跳过安装菜单选项界面,直接进入到语言选择界面

  • 使用上面的方法修改ISO文件, 重新用UltraISO写入U盘, 同时需要把官方下载的原始ISO文件拷贝到U盘中一份, 如果你错误的把你修改过的ISO拷贝到U盘则会遇到错误:

    Unable to read group information from repositories. This is a problem with the generation of your install tree

  • 顺利进入安装过程后,需要注意的是在分区结束后, 要修改一下安装GRUB的位置, 不要把GRUB安装在你的U盘上.

安装完成后需要做一些基本的配置:

  • 网络
    使用下面的命令编辑网卡的配置文件:
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:24:1D:7F:39:7F
TYPE=Ethernet
UUID=040e48f1-9712-42bb-8ad4-942ec0a5a5e5
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

使用下面的命令编辑DNS的配置文件:

 vi /etc/resolv.conf


nameserver 61.134.1.5
nameserver 8.8.8.8

修改完这些配置文件后重起网络:

service network restart

重起后更新一下系统:

yum -y update

如果习惯ntsysv这样的系统启动配置工具,需要手动安装一下,mini盘里默认没有这样的软件包, 或者你可以使用chkconfig命令行程序来配置启动:

yum  -y install  ntsysv

mysql导出所有数据库:

mysqldump --opt --user=root --all-databases > mysql_all.sql

Comments

Amankwah: 怎么又开始装CentOS了?

可可熊: 当服务器用么。

Amankwah: 改行做SA了?

可可熊: 不知道SA是啥!

Amankwah: System Administrator,你这就是这个节奏啊!!

1234…72
cocobear

cocobear

爱折腾的技术宅一枚

359 日志
8 分类
182 标签
RSS
GitHub E-Mail Twitter 豆瓣
友情链接
  • 王聪
  • 老大
0%
© 2007 – 2020 cocobear | 521k | 7:54
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v6.7.0
Hosted by GitHub Pages