四、修改配置

1、vi /usr/local/php/etc/php.ini

1)

; Directory in which the loadable extensions (modules) reside.

; http://php.net/extension-dir

; extension_dir = "./"

extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

extension = "memcache.so"

extension = "pdo_mysql.so"

extension = "imagick.so"

; On windows:

; extension_dir = "ext"

2)

; output_buffering

; Default Value: Off

; Development Value: 4096

; Production Value: 4096

output_buffering = On

3)在最后加入下面内容

[eaccelerator]

zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"

eaccelerator.shm_size="128"

eaccelerator.cache_dir="/usr/local/php/eaccelerator_cache"

eaccelerator.enable="1"

eaccelerator.optimizer="1"

eaccelerator.check_mtime="1"

eaccelerator.debug="0"

eaccelerator.filter=""

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="300"

eaccelerator.shm_prune_period="120"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

5)

配置eAccelerator加速PHP,创建缓存存放目录,要和php.ini里面一致

mkdir -p /usr/local/php/eaccelerator_cache


建立存放日志的目录

mkdir -p /usr/local/php/logs

6)创建php-fpm配置文件

vi /usr/local/php/etc/php-fpm.conf

[global]

pid = /usr/local/php/logs/php-fpm.pid

error_log = /usr/local/php/logs/php-fpm.log

log_level = notice

emergency_restart_threshold = 10

emergency_restart_interval = 1m

process_control_timeout = 5s

daemonize = yes

[www]

listen = 127.0.0.1:9000

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

user = www

group = www

listen.mode=0666

pm = static

pm.max_children = 64

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 1024

request_terminate_timeout = 0s

request_slowlog_timeout = 0s

slowlog = logs/slow.log

rlimit_files = 65535

rlimit_core = 0

chroot =

chdir =

catch_workers_output = yes

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

php_flag[display_errors] = off

最后重启apache,如果是nginx,则重启php-fpm,service php-fpm restart

 

 

配置nginx支持php
vi /usr/local/nginx/conf/nginx.conf #编辑配置文件,需做如下修改
user nginx ngxin; #首行user去掉注释,修改Nginx运行用户 组为ngxin ngxin;必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错
index index.php index.html index.htm; #添加index.php
# 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;
}
#取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径,或者把

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";            ;#这句的意思是限制nginx访问在 本虚拟主机目录下,禁止跨目录

写到 /usr/local/nginx/conf/fastcgi_params,建议使用这种方法

/etc/init.d/nginx restart #重启nginx


#############################################################################

测试
cd /usr/local/nginx/html/ #进入nginx默认网站根目录
vi info.php #编辑
<?php
phpinfo();
?>
:wq! #保存退出

在浏览器地址栏中输入 http://服务器IP地址/info.php,会看到下面的界面,配置成功


8c1001e93901213f8375392554e736d12e2e9580


服务器相关操作命令
service nginx restart #重启nginx
service mysqld restart #重启mysql

service php-fpm restart #重启php-fpm
/usr/local/php/sbin/php-fpm #启动php-fpm
/etc/rc.d/init.d/php-fpm restart #重启php-fpm
/etc/rc.d/init.d/php-fpm stop #停止php-fpm
/etc/rc.d/init.d/php-fpm start #启动php-fpm
#############################################################################
备注:
nginx默认站点目录是:/usr/local/nginx/html/
权限设置:chown -R apache.apache /usr/local/nginx/html/ 
MySQL数据库目录是:/var/lib/mysqldb

权限设置:chown -R mysql.mysql /var/lib/mysqldb


设置非www.xxx.xxx  跳转到  www.xxx.xxx

在每个 server { } 里添加如下内容

        if ($host != 'www.xxx.xxx' ) {

        rewrite ^/(.*)$ http://www.xxx.xxx/$1 permanent;

        }


设置nginx每网站日志,在每个 server { } 里添加 


        log_format  www.info.com  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  logs/info.log  www.info.com;


编译安装CoreSeek

CoreSeek可以说是一个简单的搜索引擎,但是它并没有提供完整搜索引擎中重要的爬虫功能。CoreSeek提供中文全文索引/搜索,它基于Sphinx研发并独立发布,在中文搜索和信息处理领域有不错的表现。

coreseek主要有两个大的内容,1.中文分词LibMMSeg,2.全文索引/搜索Sphinx

安装mmseg

cd /usr/local/src 
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz 
tar zxvf coreseek-4.1-beta.tar.gz 
cd coreseek-4.1 
cd mmseg-3.2.14 
./bootstrap 
./configure --prefix=/usr/local/mmseg3 
make && make install 
cd .. 
cd csft-3.2.14 
sh buildconf.sh 
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql 
make && make install 

安装libsphinxclient 
cd api/libsphinxclient 
./configure 
make && make install 

安装PHP扩展sphinx 
wget http://pecl.php.net/get/sphinx-1.1.0.tgz 
tar zxvf shpinx-1.1.0.tgz 
如果出现以下错误:cannot find input file: src/Makefile.in则执行 
aclocal 
libtoolize

 

 

 

II、LAMP

准备工作跟前面一样。需要先安装基本库,Mysql,LAMP与LNMP主要不同的在于apache、PHP安装。

安装apr
cd /usr/local/src
tar zxvf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/usr/local/apr
make
make install
安装apr-util
tar zxvf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make
make install

#useradd apache -M -s /sbin/nologin #新建无家目录不能登录用户apache,并加入apache组

apache编译安装

cd /usr/local/src; tar -zxvf httpd-2.4.3.tar.gz; cd httpd-2.4.3

./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl --enable-ssl --enable-module=so --enable-rewrite --enable-cgid --enable-cgi #配置

(./configure --prefix=/usr/local/apache --with-mysql=/usr --enable-cgi --enable-ssl --enable-so --enable-rewrite --enable-modules=all --enable-mods-shared=all --enable-cache --enable-disk-cache --enable-mem-cache --enable-deflate=shared)


make; make install #编译 、安装
/usr/local/apache/bin/apachectl -k start #启动
vi /usr/local/apache/conf/httpd.conf #编辑配置文件
找到:#ServerName www.example.com:80
修改为:ServerName www.osyunwei.com:80
找到:DirectoryIndex index.html
修改为:DirectoryIndex index.html index.php
找到:Options Indexes FollowSymLinks
修改为:Options FollowSymLinks #不显示目录结构
找到AllowOverride None 
修改为:AllowOverride All #开启apache支持伪静态,有两处都做修改
LoadModule rewrite_module modules/mod_rewrite.so #取消前面的注释,开启apache支持伪静态
vi /etc/profile #添加apache服务系统环境变量
在最后添加下面这一行
export PATH=$PATH:/usr/local/apache/bin
cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd #把apache加入到系统启动

chmod 755 /etc/rc.d/init.d/httpd
vi /etc/init.d/httpd #编辑文件
在#!/bin/sh下面添加以下两行,这样可支持 chkconfig httpd on  
#chkconfig:2345 10 90
#descrption:Activates/Deactivates Apache Web Server

chown apache.apache -R /usr/local/apache2/htdocs #更改目录所有者
chmod 755 /usr/local/apache/htdocs -R #更改apache网站目录权限
chkconfig httpd on #设置开机启动
/etc/init.d/httpd start

问题:

/usr/local/apache/bin/httpd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决: ln -s /usr/local/lib/libpcre.so.1 /lib64/                #64位系统

            ln -s /usr/local/lib/libpcre.so.1 /lib                     #32位系统


另外:  在  /etc/hosts   最后加入      IP   服务器主机名称,否则可能启动不了  httpd服务               如,假设主机名为WebServ    IP为192.168.0.10

192.168.0.10    WebService


vi   

ServerName www.example.com:80                         #去掉前面的   # 注释   并把   www.example.com 改成相应的域名或IP

service httpd restart

PHP编译安装

cd /usr/local/src
tar -zvxf php-5.4.8.tar.gz
cd php-5.4.8
mkdir -p /usr/local/php #建立php安装目录
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv-dir=/usr/local --with-freetype --with-jpeg --with-png --with-zlib --with-libxml --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-force-cgi-redirect --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin --enable-session --with-mcrypt --enable-track-vars#配置,LNMP、LAMP中的PHP配置可以统合成一个版本,只需要在./configure配置时把两种环境需要的参数去年重复的即可,然后编译安装即可

(

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-mysql=/usr --with-mysqli=/usr/bin/mysql_config-64 --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-openssl --enable-xml  --enable-sockets  --with-mcrypt  --with-bz2 --enable-maintainer-zts

错误: configure: error: Cannot find libmysqlclient_r under /usr.

解决方法:mkdir /usr/lib/mysql;  ln -s /usr/lib64/mysql/libmysqlclient_r.so /usr/lib/mysql/ 

)


make; make install #编译安装

cp /usr/local/src/php-5.4.8/php.ini-development /usr/local/php/etc/php.ini #复制php配置文件到安装目录
rm -rf /etc/php.ini #删除系统自带的配置文件
ln -s /usr/local/php/etc/php.ini /etc/php.ini #创建配置文件软链接
vi /usr/local/php/etc/php.ini #编辑
找到:;open_basedir =
修改为:open_basedir = "/var/www/:/tmp/" #防止php***跨站,限制php只能访问/var/www/、/tmp两个目录
找到:disable_functions =
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,opendir,readdir

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC
找到:expose_php = On
修改为:expose_php = OFF #禁止显示php版本的信息
找到:display_errors = On
修改为:display_errors = OFF #关闭错误提示

配置apache支持php
vi /usr/local/apache/conf/httpd.conf #编辑apache配置文件
在LoadModule php5_module modules/libphp5.so 这一行下面添加
AddType application/x-httpd-php .php #注意:php .php这个点前面有一个空格
service httpd restart #重启apache
service mysqld restart #重启mysql
测试
/usr/local/apache2/htdocs/info.php#输入下面内容
<?php
phpinfo();
?>
:wq! #保存
在客户端浏览器输入 http://服务器IP/info.php,可以看到相关的配置信息!

网站程序上传到/usr/local/apache/htdocs目录里面,如果安装有问题,请检查目录权限
确保改目录为以下权限
chown apache.apache -R /usr/local/apache/htdocs #也可以用daemon守护进程用户和组替换
chmod -R 700 /usr/local/apache/htdocs

 

 

 

这里做一个WEB服务器(WEB的搭建上面已经配置完成),phpMyAdmin管理Mysql数据库,用户通过FTP更新网站

防火墙设置(放行WEB、FTP、DNS、ntp、ssh、本地回环、状态检测)

yum -y install iptables #yum安装防火墙,安装完后,默认已经设置了自动开启,若没有则用 chkconfig iptables on 随机自动开启

service iptables start #开启iptables

设置规则

iptables -F                 #清除预设表filter中的所有规则链的规则

iptables -X                 #清除预设表filter中使用者自定链中的规则

iptables -t filter -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT #状态ESTABLISHED为允许

iptables -t filter -A OUTPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -p tcp -m state --state INVALID -j DROP #拒绝无效连接

iptables -t filter -A OUTPUT -p tcp -m state --state INVALID -j DROP

iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #INPUT链允许WEB80端口

iptables -t filter -A OUTPUT -p tcp --sport 80 -j ACCEPT #OUTPUT链允许WEB80端口

iptables -t filter -A INPUT -p tcp --dport 10001 -j ACCEPT #允许phpmyadmin10001端口

iptables -t filter -A OUTPUT -p tcp --sport 10001 -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT #允许FTP10000命令控制端口

iptables -t filter -A OUTPUT -p tcp --sport 10000 -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 8900:8990 -j ACCEPT #允许FTP8900-8990数据传输端口,FTP用PASV模式

iptables -t filter -A OUTPUT -p tcp --sport 8900:8990 -j ACCEPT

iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT #允许服务器DNS域名解析

iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -t filter -A INPUT -p udp --sport 123 -j ACCEPT #允许服务器同步时间

iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

iptables -t filter -A INPUT -p icmp -j ACCEPT #允许ping

iptables -t filter -A OUTPUT -p icmp -j ACCEPT

iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT #允许SSH连接

iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT #允许本地回环,主要放行127.0.0.1和::1有关的通信

iptables -t filter -A OUTPUT -o lo -j ACCEPT

iptables -t filter -P INPUT DROP #定义防火墙INPUT链默认动作为拒绝 (这里可以根据你环境的需要设置,默认是ACCEPT)

iptables -t filter -P OUTPUT DROP #定义防火墙OUTPUT链默认动作为拒绝 (这里可以根据你环境的需要设置,默认是ACCEPT)

service iptables save #保存iptables规则,使规则在服务器重启后也能生效

iptables-save > /root/iptables_rule #导出iptables规则,方便恢复,恢复命令 iptables-restore > /root/iptables_rule

为了方便,也可以把以下内容覆盖到 /etc/sysconfig/iptables ,然后service iptables restart重启防火墙,效果是一样的

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

# Generated by iptables-save v1.4.7 on Sat Aug 25 17:21:44 2012
*filter
:INPUT DROP [146:27920]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8900:8990 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state INVALID -j DROP
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 10001 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 10000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 8900:8990 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sat Aug 25 17:21:44 2012

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

 

 

注册域名 绑定www.bapo.cn到服务器对外IP,如果没有也可以设置使用IP

正式站点URL http://www.bapo.cn,网站目录 /var/www/website/bapo

phpmyadmin URL http://www.bapo.cn:10001/phpmyadmin,网站目录/var/www/website/phpmyadmin/phpmyadmin

FTP根目录 /var/www/website

为不让nginx.conf的配置文件变得臃肿庞大,把各个虚拟主机的配置单独使用各自文件

vi /var/local/nginx/conf/nginx.conf #在到数第二添加一行如下内容(;号不能少),指定包含虚拟主机配置文件:

include /usr/local/nginx/conf/conf.d/*.conf;

vi /usr/local/nginx/conf/fastcgi_params #在最后添加如下内容,省去每个虚拟主机配置都要指定fastcgi_param SCRIPT_FILENAME文件。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

把Nginx主配置文件/usr/local/nginx/conf/nginx.conf中的下面一行注释掉,即在前面加一 #

#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

 

cd /var/local/nginx/conf

mkdir conf.d

vi conf.d/bapa.conf #编辑正式站点虚拟主机配置

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

server {
listen 80; #监听所有IP的80端口
server_name www.bapo.cn; #设置主机头 

charset utf-8; #指定字符集

#access_log logs/host.access.log main;

location / {
root /var/www/website/bapo_web; #指定网站目录
index index.php index.html index.htm; #设置默认文档,这里添加一个index.php,根据你的网站需求
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #指定错误类型返回的页面
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ { #关联PHP
root /var/www/website/bapo_web;
fastcgi_pass 127.0.0.1:9000; #这里需要跟PHP-FPM设置相同
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #因为fastcgi_params文件里已经有了这条参数,而下一行参数又包含了这个文件,所以注释掉/usr/local/nginx/conf/fastcgi_params
include fastcgi_params;
}


# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

这里也可以在vi vi conf.d/bapa.conf文件的命令模式 /r /usr/local/nginx/conf/nginx.conf把默认配置读取进来,然后 dd 删掉不要的内容,再改相应的内容即可

 

phpMyAdmin配置

mkdir -p /var/www/website/phpmyadmin

tar -zxvf -zxvf /usr/local/src/phpMyAdmin-3.5.2.2-all-languages.tar.gz -C  /var/www/website/phpmyadmin

mv /var/www/website/phpmyadmin/phpMyAdmin-3.5.2.2-all-languages /var/www/website/phpmyadmin/phpmyadmin

 

vi /var/www/website/phpmyadmin/phpmyadmin/libraries/config.default.php 更改以下几个参数,这里采用cookie认证

$cfg['PmaAbsoluteUri'] = 'http://www.bapo.cn:10001/phpmyadmin';

$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['blowfish_secret'] = 'xxxxx';                                      #这里设置一个短语密码

 

vi /usr/local/nginx/conf/conf.d/phpmyadmin.conf #编辑phpmyadmin站点虚拟主机配置

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        server {
        listen       10001;
        server_name  www.bapo.cn;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/website/phpmyadmin;
            index  index.php index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

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

 

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

service nginx restart #重启Nginx

 

访问测试下,用户密码均为Mysql的

a08b87d6277f9e2f06033e951f30e924b899f37c a71ea8d3fd1f4134090426e3251f95cad1c85e7f

 

附:

用phpmyadimn来连接管理多个数据库要修改配置文件,挺不爽的,并且连接远程数据库,速度不行。可以使用其他数据库管理工具,请参考,navicat 结合快捷键 非常好用开源,好用mysql 管理工具 HeidiSQL。如果非要用phpmyadmin,下面有二种方法连接,管理多个mysql服务器。

方法一,修改phpMyAdmin/libraries/config.default.php

修改配置文件前,最好先备份一下,万一改错地方了,显示不了,就郁闷了。

/**
 * allow login to any user entered server in cookie based authentication
 *
 * @global boolean $cfg['AllowArbitraryServer']
 */
$cfg['AllowArbitraryServer'] = true; //默认是false,改成true

修改前,服务器这个输入框是不存在的,变成true后就显示了,就可以连接多个不同的数据库了。但是这样修改有一个缺点,如果在多个数据库之间切换,要先退出,重新登录,这样挺烦人,看下面的这个方法。

方法二,同时管理多个mysql服务器。

1,将phpMyAdmin根目录下的config.sample.inc.php,重命名为config.inc.php

2,修改config.inc.php文件

/*
 * First server
 */
 //如果要管理,更多个mysql服务器,就修改$connect_hosts这个数组就行了
 $connect_hosts = array(
            '1'=>array(
                 "host"   => "localhost",  //服务器1
                 "user"   => "root",
                 "password" => ""
                 ),
            '2' => array(
                 "host"   => "192.168.0.11", //服务器2
                 "user"   => "wordpress",
                 "password" => "*******"
                 )
            );
for ($i=1;$i<=count($connect_hosts);$i++) {
 /* Authentication type */
 $cfg['Servers'][$i]['auth_type'] = 'cookie';
 /* Server parameters */
 $cfg['Servers'][$i]['host'] = $connect_hosts[$i]['host'];   //修改host
 $cfg['Servers'][$i]['connect_type'] = 'tcp';
 $cfg['Servers'][$i]['compress'] = false;
 /* Select mysqli if your server has it */
 $cfg['Servers'][$i]['extension'] = 'mysql';
 $cfg['Servers'][$i]['AllowNoPassword'] = true;
 $cfg['Servers'][$i]['user'] = $connect_hosts[$i]['user'];  //修改用户名
 $cfg['Servers'][$i]['password'] = $connect_hosts[$i]['password']; //密码
 /* rajk - for blobstreaming */
 $cfg['Servers'][$i]['bs_garbage_threshold'] = 50;
 $cfg['Servers'][$i]['bs_repository_threshold'] = '32M';
 $cfg['Servers'][$i]['bs_temp_blob_timeout'] = 600;
 $cfg['Servers'][$i]['bs_temp_log_threshold'] = '32M';
}

注意一点,数组下标不要从0开始,不然会提示错误的,无效的服务器索引:“0”

登录前,

phpmyadmin 修改config.inc.php 多服务器登录

登录后,

phpmyadmin 连接多个mysql服务器,登录后

有一点要注意,用localhost登录后,选择上图下拉中的192.168.0.11后,还会让你登录,都登录后,在多个服务器这间切换就不要在登录了

源码天空


 

FTP设置

adduser -d /var/www/website -g nginx -s /sbin/nologin myftp #添加FTP用户,并加入nginx组

yum -y install vsftpd ftp #安装vsFTP及FTP客户端

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak #备份vsftp配置文件 

vi /etc/vsftpd/vsftpd.conf #编辑vsftp配置,改如下几个参数

anonymous_enable=NO
local_enable=YES

chroot_local_user=YES #锁定本地用户在家目录
#如果想只允许部分用户可以切换目录,可配合以下两参数使用

#chroot_list_enable=NO                                   #不允许切换目录

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list                 #把用户写入到 chroot_list 文件里即可,一个用户一行

userlist_enable=YES      #/etc/vsftpd/user_list文件中指定的用户禁止登录vsFTP,如果设置为NO,表示只有该文件中指定的用户可以登录vsFTP

#命令控制监听端口10000
listen_port=10000

# x.x.x.x为对外映射的公网IP,若不设置有可能报   227 Entering Passive Mode (192.168.1.x,50,215)

pasv_address=x.x.x.x

#启用pasv模式,下面这几个参数都需要额外添加

pasv_enable=YES

#定义数据传输端口范围

pasv_min_port=8900 
pasv_max_port=8990

#这个是用于检测pasv的安全检查,YES为关闭安全检查,这样可允许同一IP打开多个FTP连接
pasv_promiscuous=YES

#本地用户传输速率400KB/s,单位为byte(字节) 
local_max_rate=400000000

#下面的是性能方面的控制:

max_clients=300

max_per_ip=5

local_max_rate=500000

最后保存退出

#######################

anonymous_enable=NO

# chroot_list_file用户不限制在家目录,其他全部限制在家目录,默认是全部不限制在家目录

local_enable=YES

allow_writeable_chroot=YES

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/chroot_list


write_enable=YES

local_umask=011

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

listen=YES


pam_service_name=vsftpd

# 仅允许user_list 登录FTP

userlist_enable=YES

userlist_deny=NO


tcp_wrappers=YES

#listen_address=

listen_port=10000

pasv_enable=YES

pasv_address=xx.xx.xx.xx

pasv_min_port=13000

pasv_max_port=13100

pasv_promiscuous=YES

local_max_rate=800000000

#######################

说明:   vsftpd只允许指定的用户登录/拒绝指定的用户登录

在vsftpd中设置  local_enable=Yes  之后。如果本地用户过多。就会导致多个本地用户可能通过ftp登录服务器。


如果需要设置只允许user1及user2登录该如何操作呢???

1、设置  userlist_enable=YES

2、设置  userlist_deny=NO

3、编辑/etc/vsftpd/user_list文件。。注释其它内容,并增加user1,user2。。一行一个用户

4、重启vsftpd

解释:

当设置 userlist_enable=YES 时,如果 userlist_deny为YES 则  /etc/vsftpd/user_list 里的用户是不允许登录的(拒绝指定的用户登录可用此参数);当设置userlist_deny=NO为时。则只允许  /etc/vsftpd/user_list  里的用户登录。


Vsftp 虚拟目录 参照 http://hi.baidu.com/hanxiao2100/item/00359bd237d170e1785daaef


service vsftpd restart #重启svftp服务

 

给FTP创建一个上传的帐号myadmin,加入nginx组、指定其Home目录、禁止登录系统

useradd myftp -g nginx -d /var/www -s /sbin/nologin

passwd myftp        ;#设置密码

chown -R myftp:nginx /var/www     ;#改变WEB目录所属者和所属组

 

Selinux设置(放行FTP、http)

先确定Selinux开启

cat /etc/selinux/config #查看Selinux设置,以下为显示内容

+++++++++++++++++++++++++++++++++++++++++++++++

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

++++++++++++++++++++++++++++++++++++++++++++++++

enforcing:强制模式

permissive:兼容模式

disabled:关闭 #如果想关闭,则改成 SELINUX=disabled 然后init 6重启系统即可,

sestatus # 我们也可以查看Selinux的状态

getsebool -a #查看Selinux策略

下面正式设置Selinux 放行ftp、http

getsebool -a | grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
我们把需要的项打开

setsebool -P allow_ftpd_full_access=1 #-P可以在服务器重启后仍生效

setsebool -P ftp_home_dir 1

setsebool -P ftpd_use_passive_mode=1

setsebool -P httpd_enable_ftp_server=1

setsebool -P allow_ftpd_anon_write=1


http主要打开

setsebool -P httpd_enable_cgi 1

setsebool -P httpd_can_network_connect=1

setsebool -P allow_httpd_sys_script_anon_write=1

setsebool -P allow_httpd_anon_write=1

 

为安全起见,我们拒绝root  SSH登录,建立一个普通的帐号来SSH登录,然后通过此用户su到root帐号
useradd webbapo

password webbapo                   #输入两次相同的密码,输入密码时无提示

 

vi  /etc/ssh/sshd_config      #在最后添加如下内容

DenyUsers root myftp         #拒绝root、myftp用户登录SSH

保存退出

service sshd restart

 

到此配置结束


Nginx中FastCGI参数的优化
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。  添加在  nginx.conf配置文件的 http { }中

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;   fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_cache TEST;

fastcgi_cache_valid 200 302 1h;

fastcgi_cache_valid 301 1d;

fastcgi_cache_valid any 1m;    

 


下面是对上述代码的含义进行介绍。
第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。


fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。


fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。


fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。


fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。


fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid、fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。