四、修改配置
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,会看到下面的界面,配置成功
服务器相关操作命令
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的
附:
用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分钟。
转载于:https://blog.51cto.com/tianshili/1726071