nginx php5.3+mysql5.1 redhat6.5 配置记录

nginx php5.3+mysql5.1 redhat6.5 配置记录

同步自:http://www.gejoin.com/2017/12/27/install-php-mysql-nginx-on-redhat6.5-linux-tips.html

一台没有联网但是有安装介质的rhel6.5-x86_64服务器。 计划安装部署上php+mysql 服务。由于有安装介质,光盘上的mysql版本5.1,php 版本5.3.3 ,没办法软件版本老就老了凑合用了。

1.首先挂载上iso光盘

# mount -o loop -t iso9660 /csys/rhel-server-6.5-x86_64-dvd.iso /mnt/vcdrom/

2.安装 php mysql

# cd /mnt/vcdrom/Packages/
# ls -rlt php* mysql*
# rpm -ivh mysql*.rpm --nodeps --force
# rpm -ivh php*.rpm --nodeps --force

3.编译安装nginx nginx 安装没什么说的,源码nginx-1.12.2编译安装。

# ./configure
# make & make install

4.安装一些php依赖包,rhel5.6介质中的包很少的,基本的php-fpm也是没有的。 可以从以下网站获取rpm包:

https://www.rpmfind.net
https://pkgs.org/download
http://rpm.pbone.net/

php-fpm-5.3.3-26.el6.x86_64.rpm
php-mbstring-5.3.3-26.el6.x86_64.rpm
php-mcrypt-5.3.3-5.el6.x86_64.rpm
libmcrypt-2.5.8-9.el6.x86_64.rpm

5.nginx.conf 配置

server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

6.php 配置 编辑/etc/php.ini

session.save_path = “/var/lib/php/session” 
session.auto_start = 1
​# chmod -R 777 /var/lib/php

7.设置服务开机启动

# chkconfig php-fpm on
# chkconfig mysqld on

8.启动服务

# service mysqld start
# service php-fpm start
# /usr/local/nginx/sbin/nginx
# mysqladmin -u root password ‘passwd’

9.验证nginx以及php服务

# echo “” > /usr/local/nginx/html/info.php

打开浏览器输入http://REMOTE/
打开浏览器输入http://REMOTE/info.php

10.安装phpMyAdmin 下载并解压phpMyAdmin-4.0.10.20-all-languages.tar.gz,建立到/usr/local/nginx/html/的软连接。 注意phpMyAdmin 支持的php版本。

Aside

ngnix and fastcgi and cicstg 开发环境搭建

一个搭建HTTP Server的项目需求,虽然方案没有最终确定,使用Ngnix做代理转发,后端使用使用开发语言无关的CGI应用进行业务逻辑处理,初步技术是可行的。但使用C语言开发WebServer 应用或许真不是什么好主意,那这样想啊,我们还用CICS这么古老的东西呢?–这里又忍不住想吐槽cics了..这个架构中的毒瘤!…. 进入正题吧,首先安装ngnix,ngnix的强大就不用叨叨了,安装也相当顺利。

  • 下载安装PCRE
# wget  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
# ./configure;make;make install;
# wget http://nginx.org/download/nginx-1.10.2.tar.gz
# ./configure;make;make install;

这样就可以启动nginx,默认安装在了/usr/local/nginx目录下.

  • 下载安装spawn-fcgi,可以从Github Lighthtpd项目中下载,也可以直接从lighttpd.net这里下载。同样可以编译出Spawn-fcgi这个可执行程序。ngnix是支持FastCgi的,但是没有这个CGI管理程序。
  • 接下来就可以写CGI程序了,可以使用一些现成开源库,当然也可以自己写。
  • 安装CICS TRANSACTION GATEWAY,!!!NOTE!!![这玩意基本上支持32系统,安装时也会各种水土不服的,你可能需要32位的jre..]安装开发中可能需要32位支持,比如:
libXp.i686 
glibc-devel.i686

–慢慢享受其中的酸爽吧%$%$%.

  • 顺利的话应该可以写代码测试一下了。以下代码片段是接受从浏览器提交的表单然后提交CTG请求,编写代码编译。
 while (FCGI_Accept() >= 0) {   
        memset(sBufIn,0,sizeof(sBufIn));
        FCGI_fread(sBufIn, sizeof(char), sizeof(sBufIn), FCGI_stdin);
        if(strlen(sBufIn)==0)
        {
            memcpy(sBufIn,sParmas,strlen(sParmas));
        }
        memset(&tHttpIn,0x00,sizeof(HttpReqT));
        rc=InitHttpIn(&tHttpIn,sBufIn);
        resultSize= URLDecode(tHttpIn.MsgIn, tHttpIn.MsgIn, sizeof(tHttpIn.MsgIn));
        rc=CallCtgSvr(&tHttpIn);
        if(rc != RC_OK)
        {
            printf("Content-type: text/plain\r\n"
                "\r\n"
                ""
                "QUERY_STRING :%s.\n"
                "REQUEST_METHOD : %s.\n"
                "CONTENT_TYPE : %s.\n"
                "CONTENT_LENGTH : %s.\n"
                "SERVER_PROTOCOL : %s.\n"
              ...
         }
         ...
     }
     // CTG 调用函数
     // CTG_openRemoteGatewayConnection();
     // CTG_ECI_Execute(gatewayToken, &eciParms);
     // Makefile libs -m64 -lctgclient -lfcgi
  • 配置nginx 端口转发处理FASTCGI.
 location ~ \.cgi$ {
        fastcgi_pass 127.0.0.1:8000;
        fastcgi_index index.cgi;
        fastcgi_param SCRIPT_FILENAME fcgi$fastcgi_script_name;
        include fastcgi_params;
    }
  • 配置nginx 端口转发处理FASTCGI.启动CGI程序。
     /usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8000 -f /usr/local/nginx/cgi-bin/ctgcls
  • 使用浏览器测试或其他HTTP 客户端程序测试
 #!/usr/bin/env python
#coding=utf8
import httplib, urllib
httpClient = None
try:
    #params = urllib.urlencode({'name': 'tom', 'age': 22})
    params = '''TEST CTG..'''
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    httpClient = httplib.HTTPConnection("192.168.101.181", 80, timeout=30)
    httpClient.request("POST", "/ctgcls.cgi", params, headers)
    response = httpClient.getresponse()
    print response.status
    print response.reason
    print response.read()
    print response.getheaders() #获取头信息
except Exception, e:
    print e
finally:
    if httpClient:
        httpClient.close() 
Aside

顽固的守卫-36进制转换

不得不吐槽,什么年代了,还要用哪些过时的东西。
哪些人说,稳定,人家都在用,有现成原型....
这无非是盲从,懒惰,终是无能,然而却掌握了话语权。
吐槽完毕,锅最终还是要有人背。
有个中间件软件系统,对命名,配置,参数做了严格限制。比如配置名长度必须4位,通讯队列名必须小于8位,甚至于端口号的大小也自己做了控制(65535以内还不够小?)。这个就是大名鼎鼎长度IBM帮我们省的。掌握话语权的自认为有能力驾驭好这个古董,程序猿早已对这玩意深恶痛绝:好在哪?稳定吗,高效吗?未必吧!恐怕只是不敢尝试新的,或是只是手中唯一的救命稻草?
为何还在吐槽...正题呢?呃,不好意思。
今天的槽点主要是:32GB内存为何还以为我只有64K。省确是件好事,然而要看省在哪方面。
程序中需要用到中间件队列名来匹配请求应答,而且不能重复。然后唯一可用的是流水号,是12位的。
而对列名最长8位!这点没办法了,闭源收费,你能耐我何!只有一个思路了-压缩流水:
当年数制转化是这样学的,模运算再倒序重排。效率暂不研究:

   int len=0;
    int i=0;
    char d=' ';
    int m=0;
    while(num)
    {
        m=num%36;
        if(m>9)
        {
            d='a'+m-10;
        }
        else
        {
            d='0'+m;
        }
        sprintf(des,"%s%c",des,d);
        num=num/36;
    }

        len=strlen(des);
        for(i=0;i<len/2;i++)
        {
            d=*(des+i);
            *(des+i)= *(des+len-i-1);
            *(des+len-i-1)=d;
        }

 

Aside

CentOS Minimal 安装和配置TIPS

---
同步[GEJOIN.COM]
---
Linux 各种发行版虽然和Unix系非常相近,但还是有许多差别的。Linux更有趣吧.最近需要学习和测试,就在OSX平台下VirtualBox重新安装CentOS 7.由于机器本身性能原因,另外个人觉得Minimal安装不仅节约资源,而且可以更好的锻炼动手能力。再次把这次安装配置记录下来。

1.安装媒体介质是CentOS-7-x86_64-DVD-1511.iso(4.3GB.)
2.选择Minimal最小化安装。不包含KDE/GOME.
3.安装完成后进行配置,首先网络,试了ifconfig..(minimal不包含net-tools),需要自行安装,选择以CDROM(ISO)为安装源。
挂载光盘镜像:

# mkdir -p /mnt/cdrom
# mount /dev/cdrom  /mnt/cdrom

2.设置源
为了使用光盘镜像安装源,配置yum.repo:
暂时将/etc/yum.repos.d目录下文件备份,新建CentOS-Iso.repo,添加下面内容:
# vi CentOS-Iso.repo

[base]
name=iso
baseurl=file:///mnt/cdrom
gpgcheck=0

3.安装设置网络
# yum install net-tools
虚拟机设置NAT和HOST-ONLY两个网卡,配置静态IP,配置文件:
# vim /etc/sysconfig/network-scripts/ifcfgX

YPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.56.100
NETMASK=255.255.255.0
NETWORK=192.168.56.0
IPV4_FAILURE_FATAL=no
NAME=enp0s3
UUID=ad60e4e1-c250-47f2-a0d2-fa1fbdbb0bd2
DEVICE=enp0s3
ONBOOT=yes

配置好后重启网络,测试内外网是否正常。
# service network restart
4.关闭防火墙,CentOS 7 不是直接设置iptables
# systemctl stop firewalld.service && sudo systemctl disable firewalld.service
5.安装一些必备的软件如wget,php等看个人需要。
6.安装pip
# wget https://bootstrap.pypa.io/get-pip.py
# python get-pip.py

7.设置时区和时间
查看当前时区 date -R
修改设置时区 tzselect
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或在profile(/etc/bashrc)添加环境变量
TZ='Asia/Shanghai'; export TZ
设置时间更新同步
# yum install -y ntpdate
# ntpdate us.pool.ntp.org
8.设置管理员sudoers
# vim /etc/sudoers 添加:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
gwang   ALL=(ALL)       ALL

9.其它
终端ssh连接后警告:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[gwang@localhost ~]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

修复:

sudo vi /etc/environment

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

10.继续..

SHELL 字符串分隔然后..

SHELL 字符串分隔然后..

废话不说,直接上代码:
方案一:

divStrArry () {
    str=$@;
    OLD_IFS="$IFS"
    IFS="/"
    arr=($str)
    IFS="$OLD_IFS"
    num=${#arr[@]}
    for i in ${arr[@]}
    do
      echo $i
    done 
}

方案二:

divStrArry () {
    str="$@";
    set -A arr $(echo $str|tr '/' ' '|tr -s ' ')
    num=${#arr[@]}
    for i in ${arr[@]}
    do
      echo "$i"
    done
}

那么有一个需求:使用shell脚本FTP 建立多级目录:包括子目录。不支持mkdir -p的。
同样直接上代码

funnc() {
    local r
    local a
    r="$@"
    while [[ "$r" != "$a" ]] ; do
        a=${r%%/*}
        echo "mkdir $a"
        echo "cd $a"
        r=${r#*/}
    done
}
ftp -inv 0.0.0.0 < < EOF
user username pass
bin
$(funnc Misc/Sub/acct/${host_date})
mput xw.TXT
bye
EOF

其它废话也不说了...

Ubuntu 卸载Fcitx输入法后无法登录桌面问题解决

Ubuntu 卸载Fcitx输入法后无法登录桌面问题解决

ubuntu linux 安装搜狗拼音输入法的方法就不说了,需要依赖Fcitx。
如果想卸载fcitx和sogou拼音输入法,那么注意了,你可能回无法进入桌面系统,
具体症状是:在图形登录界面输入密码后enter,又跳回登录界面。使用CTRL+ALT+F1.正常登录,显然密码没有问题。

logo-ubuntu
原因即是:卸载不完全,导致在登录时无法正确加载输入法,准确地说是搜狗拼音输入法的残留。
解决方法:
1.切换到字符终端界面CTRL+ALT+F1..6.
2.删除/etc/X11/Xsession.d目录下的Sogou拼音配置文件。
(这块我把具体名字忘记另外,大家可以搜索grep -nr fcitx 找找)

cd /etc/X11/Xsession.d
sudo rm -f 55Sogou*[具体名字我没记下来]
cd /etc/X11/xinit/xinput.d
sudo rm -f *Sogou*[具体名字我没记下来]
sudo rm -f /usr/bin/fcitx [如果该文件存在]

3.重新登录,看是不是已经OK。

空间不够来折腾:手机系统备份到电脑

空间不够来折腾:手机系统备份到电脑

一台手机MOTO G ,8G,装了N多App,剩余空间1G左右。motorola被联想收购后,说好的lollipop迟迟不见,CM12都出了,花儿也谢了,现在要在Moto G上安装CM 12 的android5.0,背景交代完毕。
需要备份原有官方系统以待OTA,使用CWM recovery,但是剩下空间显然不够了..
解决方案:将备份文件移出手机,待需要还原时再移回手机。

1.刷入使用第三方Recovery Clockworkmod;
2.手机上进入recovery模式,备份系统;
3.挂载/data
4.敲入命令, 进入 shell界面
adb shell

5.进入目录 ,检查CWM的备份文件

/data/media/clockworkmod/backup

该目录下是备份的文件: 如:1970-02-02.16.18.37
cwm_backup

6.将文件下载到电脑,如D盘。
adb pull /data/media/clockworkmod/backup/1970-02-02.16.18.37 D:

7.需要还原时再 adb push...

--------另外刚刚有调整了Linux 下VitrulBox 虚拟机磁盘空间,也顺便写下来,类似命令:
查看硬盘信息:

VBoxManage list hdds

如果是vmdk格式虚拟机磁盘,首先将vmdk 虚拟机磁盘格式转换为vdi,因为vmdk不可以..

VBoxManage clonehd  ././XXXX.vmdk  ././XXXX.vdi  --format vdi

然后,调整改磁盘(记下UUID)大小:

VBoxManage modifyhd  UUID --resize 409600

 

CentOS+Ubuntu+Windows 多系统Grub引导修复

CentOS+Ubuntu+Windows 多系统Grub引导修复

简单描述状况:
1.系统安装有64位的windows 7和64位的CentOS操作系统,使用Legacy BIOS 安装引导启动,没有使用UEFI。
2.CentOS6.5 grub引导菜单正常引导WINDOWS 7+CENTOS,CentOS包含/boot分区,/分区以及/home分区
3.安装ubuntu 14.04(64位) 之后,使用alongside windows空闲分区。安装完成后使用ubuntu grub 引导启动,只能引导windows 7+ubuntu,centos 无法启动.
4.在ubuntu系统下,安装grub2/grub 然后 update-grub 均无法正常搜索到centos 。
centos-debian-ubuntu
综上,只能找其他方法,有人说用centos安装盘 grub rescue ,觉得麻烦,想用ubuntu 引导。这是我的ubuntu下/boot/grub/grub.cfg ,在其中添加Centos 分区信息,一定注意分区和UUID。 成功引导3个系统!

menuentry 'CentOS6.5, with Linux 2.6.32-431.el6.x86_64' {
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,7'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 e30284d7-5cf6-4864-a875-75012d8d9b14
   else
   search --no-floppy --fs-uuid --set=e30284d7-5cf6-4864-a875-75012d8d9b14
   fi
    echo 'Loading Linux 2.6.32-431.el6.x86_64 ...'
    linux /boot/vmlinuz-2.6.32-431.el6.x86_64 root=UUID=e30284d7-5cf6-4864-a875-75012d8d9b14 ro quiet splash
    echo 'Loading initial ramdisk ...'
    initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
}

这里再提一下,在已安装windows 的gpt(mbr)的 磁盘下安装ubuntu 时 ,如果无法看到windows分区,而是一整块硬盘,那么使用liveCD进入系统,使用下面命令修复:

sudo dd if=/dev/zero of=/dev/sda bs=1 count=8 seek=512

 

 

Ubuntu12.04 下DLNA/UPnP Server安装配置

Ubuntu12.04 下DLNA/UPnP Server安装配置

PC下配置DLNA很方便,使用家庭组和Window Media Player很容易实现媒体局域网内共享。前面文章有提过这些话题,包括Android客户端和Chrome以及小米盒子上的使用。

ubuntu-logo14

这里来记录下Ubuntu12.04 下的安装配置 minidlna。
1.安装服务端

# apt-get install minidlna

2.配置文件在/etc/ 目录下的minidlna.conf.其中主要配置ABC_DLNA

配置媒体目录,可以分行添加多个目录,同时也可指定媒体类型。

# set this to the directory you want scanned.
# * if have multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to a specific content type,you
# can prepend the type, followed by a comma, to the directory:
# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music)
# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos)
# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)

media_dir=/media/MData/media
media_dir=/media/Times/Downloads
media_dir=/home/XXX/Videos

friendly_name=My DLNA Server

3.至此配置结束,重启服务或者重载

# service minidlna force-reload
# service minidlna restart

TIPS: 这里我挂载的媒体目录位于移动硬盘上,ubuntu默认无法修改移动存储设备的挂载权限,默认都是 700.这里需要手动重新挂载,才可以更改读写权限,使服务生效。
新建挂载点 /media/MData,挂载sdb3.

#mount /dev/sdb3 /media/MData -o nls=tf-8,umask=000,uid=1000,gid=1000

再推荐一款Android下的DLNA客户端APP:Slick UPnP前往Google Play下载).

Centos6.5 WIFI无线网卡BCM43142驱动安装

Centos6.5 WIFI无线网卡BCM43142驱动安装

设备型号:DELL V2420

Broadcom 网卡型号:BCM43142

lspci|grep Broadcom

07:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01)

centos_logo

1.确定自己的网卡驱动

https://lug.ustc.edu.cn/sites/opensuse-guide/wlan.php

http://www.broadcom.com/support/802.11/linux_sta.php

下载网卡驱动:hybrid-v35_64-nodebug-pcoem-6_30_223_141.tar.gz

2.解压编译网卡驱动:

解压出目录lib srcMakefile文件,执行:

make

这样会编译报错:

/home/xxx/packages/driver/src/wl/sys/wl_cfg80211_hybrid.c:2122: error: too few arguments to function ‘cfg80211_roamed’

make[2]: *** [/home/xxx/packages/driver/src/wl/sys/wl_cfg80211_hybrid.o] Error 1

make[1]: *** [_module_/home/xxx/packages/driver] Error 2

make[1]: Leaving directory `/usr/src/kernels/2.6.32-431.el6.x86_64'

make: *** [all] Error 2

注意:添加编译参数 make API=WEXT

OK!

make API=WEXT

CC /home/xxx/packages/driver/wl.mod.o

LD [M] /home/xxx/packages/driver/wl.ko.unsigned

NO SIGN [M] /home/xxx/packages/driver/wl.ko

make[1]: Leaving directory `/usr/src/kernels/2.6.32-431.el6.x86_64'

3.安装

# make install

install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless

4.加载新的驱动程序

# modprobe lib80211

# insmod wl.ko

5.重新启动网络服务

# service network restart

Shutting down interface p5p1: Device state: 3 (disconnected)

[ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

参考来源,从这里看到编译参数,谢谢!:http://weiruoyu.blog.51cto.com/951650/1193257