您的位置:博客首页 >> Web服务器 >> CentOS 6.2 minimal编译安装VSFtpd+Nginx+MySQL+PHP+Zend+eaccelerator

CentOS 6.2 minimal编译安装VSFtpd+Nginx+MySQL+PHP+Zend+eaccelerator

日志编号:25 发表时间: 2013-08-11 09:57:27 关注次数:9701
发表:2011-12-06 13:57:27
更新:9:55 2013/8/11
安装CentOS 6.2 minimal:http://www.flashgou.com/show/8
VPS用户建议安装centos 6.0,安装好后使用yum update功能更新到最新版本就可以了(为什么安装6.0?因为6.0所需要求低,比如128M内存就可以了)
一、准备工作:

1、删除系统自带软件(centos minimal不存在,可跳过)
卸载apache:
查询:rpm -qa|grep -i httpd
停止服务:service httpd stop
卸载:rpm -e httpd --nodeps

卸载MySQL:
查询:rpm -qa|grep -i mysql
停止服务:service mysqld stop
卸载:rpm -e mysql --nodeps

卸载php:
查询:rpm -qa|grep -i php
卸载:如上
rm -rf /etc/php.ini

2、启动到字符界面及设置yum源(CentOS 6.2 minimal自带且默认字符界面):
编辑vi /etc/inittab
更改5为3,如id:3:initdefault: 

编辑yum源:vi /etc/yum.repos.d/CentOS-Base.repo
因篇幅关系,这里不做介绍。服务器需要yum的时候也不多,所以并不需要去设置。国内镜像:http://mirrors.163.com、http://mirrors.sohu.com/

3、规划文件目录:
 1)、web目录:/var/www/webroot
 2)、日志目录:/var/www/logs
 3)、缓存及临时文件(相当于tmp目录):/var/www/logs/cache
 4)、服务目录:/usr/local/webroot (包含Nginx、PHP、MySQL)
 5)、FTP目录:/var/www
 6)、库目录:/usr/local/webroot/lib

你也可以将网站目录设置到home目录。

4、安装基础包:yum -y install gcc gcc-c++ make ncurses-devel autoconf cmake crontabs
yum install wget openssl-devel libtool
其中wget看你使用情况,可以不装,openssl-devel对于不需要ssl安全连接的也可以不装,libtool一般在安装到nginx\php\mysql前会安装上去,所以这里也不用安装。make是编译所用,cmake是编译MySQL时用到,ncurses-devel也是。autoconf是编译eaccelerator时用到,crontabs为计划任务,日志分割所用。
附带介绍:检查是否安装gcc:gcc -v

二、安装VSFtpd:
对于VSFtpd,我们以yum方式安装:
1、yum -y install vsftpd.i*
2、增加用户组groupadd wwwroot
增加用户useradd -g wwwroot -M -d /var/www -s /sbin/nologin ftpflashgou
设置密码passwd ftpflashgou

3、创建文件夹:
mkdir /var/www
mkdir /var/www/logs

4、编辑vi /etc/vsftpd/vsftpd.conf文件,按i进行编辑,将anonymous_enable=yes改为no,并在其后增加:
user_config_dir=/etc/vsftpd
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
xferlog_file=/var/www/logs/vsftpd.log
ftpd_banner=welcome to flashgou vsftpd.
max_clients=4
max_per_ip=2
use_localtime=YES
按esc,再按:wq退出。
5、创建文件vi /etc/vsftpd/chroot_list,新增ftpflashgou用户

6、权限,直接输入:chown -R ftpflashgou.wwwroot /var/www 
chmod -R 755 /var/www

附知识点:
以下为引用内容:
chown改变所有者
chmod改变权限
chmod     u/g/o/a       +/-/=          r/w/x        filename            
以上“u”表示user,“g”表示group,“o”表示others,“a”表示all
 “+”表示增加权限,“-”表示去除权限,“=”表示设置权限为
“rwx”当然就是文件的三个权限,可以只写一个,也可以写多个
 依旧是上面的那个例子,给hello.c所有用户加上执行权限,那么命令就是“chmod a+x hello.c”
“-R”参数表示进行递归变更,子目录文件等

vsftpd意思是:非常安全的ftp服务。功能虽然不如其他几个linux ftp方便,但安全性是最好的。另外vsftpd的官网需要VPN才能访问。(骂一下某部门的脑残吧,难道他们不用ftp服务,或者用serv-U?)
7、开机启动:chkconfig vsftpd on
# chcon -R -u user_u -t public_content_rw_t /var/www
chcon -t public_content_rw_t /var/ftp/pub
启动:service vsftpd start
停止:service vsftpd stop
重起:service vsftpd restart

8、设置SELinux和防火墙:
SELinux:setsebool -P allow_ftpd_full_access 1
防火墙:iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存防火墙策略:service iptables save
重起防火墙:service iptables restart

9、通过第2条中创建的用户ftpflashgou和密码就可以登陆FTP了,FTP客户端可以选择flashfxp或者Filezilla。

附本节额外知识点:
开启FTP日志,vi /etc/vsftpd/vsftpd.conf中设置xferlog_file=/var/www/logs/vsftpd.log
userdel -r kuhanzhu //删除用户
yum remove vsftpd //卸载
/etc/init.d/vsftpd restart //另一种重起vsftpd方式 
getenforce //查询SELinux开启情况
getsebool -a | grep ftp //查询SELinux对于ftp的口令(或者说参数?命令?)
netstat -an |grep 21 //查询21端口情况
Centos 6没有这个:setsebool -P ftpd_disable_trans 1  XXXXX

三、安装库
本节应该放到第1节第五条,不过wget并不是最好的方法。所以先自己到官网下载各种库及php\mysql等到本地电脑上,然后使用第2节中的ftp服务上传各种压缩文件到/var/www目录里了,如图:
点击新开窗口查看图片

安装libiconv库:
mv /var/www/libiconv-1.14.tar.gz /root/
tar xzvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/webroot/lib/libiconv
make
make install


安装zlib:
mv /var/www/zlib-1.2.5.tar.gz /root/
tar xzvf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure --prefix=/usr/local/webroot/lib/zlib //不用指定安装目录,否则安装gd会比较麻烦./configure即可如果yum安装则是yum install zlib-devel
make && make install

安装libxml2:
mv /var/www/libxml2-2.7.8.tar.gz /root/
tar xzvf libxml2-2.7.8.tar.gz
cd libxml2-2.7.8
./configure --prefix=/usr/local/webroot/lib/libxml2
make
make install

安装pcre:
mv /var/www/pcre-8.20.tar.gz /root/
tar xzvf pcre-8.20.tar.gz
cd pcre-8.20
./configure --prefix=/usr/local/webroot/lib/pcre
make
make install


安装libmcrypt:
mv /var/www/libmcrypt-2.5.8.tar.gz /root/
tar xzvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install

# --prefix=/usr/local/webroot/lib/libmcrypt 这种指定目录的方法我还没搞定过,有了解的朋友可以往我QQ邮箱写email告知:67761304

安装mhash:
mv /var/www/mhash-0.9.9.9.tar.gz /root/
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install
 
安装mcrypt:
mv /var/www/mcrypt-2.6.8.tar.gz /root/
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/lib ./configure
make
make install

本节要点:每安装完一个就要cd../返回上层目录。

四、安装Nginx:
1、基础安装
mv /var/www/nginx-1.0.14.tar.gz /root/
tar zxvf nginx-1.0.14.tar.gz
cd nginx-1.0.14
./configure\
 --user=ftp67761304\
 --group=wwwroot\
 --prefix=/usr/local/webroot/nginx\
 --conf-path=/usr/local/webroot/nginx.conf\
 --pid-path=/var/www/logs/nginx.pid\
 --error-log-path=/var/www/logs/nginx_error.log\
 --http-log-path=/var/www/logs/access.log\
 --with-http_stub_status_module\
 --with-http_gzip_static_module\
 --with-pcre=/root/pcre-8.20\
 --with-zlib=/root/zlib-1.2.5
make && make install

2、配置
vi /usr/local/webroot/nginx.conf
在#gzip on;这句下方粘贴以下内容(使用putty等可以粘贴):
以下为代码内容,请直接复制粘贴:
#fastcgi
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;

#gzip压缩
gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

root /var/www/webroot;

server块修改为:
以下为代码内容,请直接复制粘贴:
server {
        listen       80;
        server_name  flashgou.com www.flashgou.com;
        location / {
            index  index.html index.htm index.php;
        }

        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            }
            location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #注意下面这句和原先的不同的,不只是单单去掉井号那么简单
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
   #浏览器缓存
 location ~ .*\.(jpg|jpeg|png|bmp|swf)$
    {
      expires      30d;
    }
  location ~ .*\.(gif|js|css)$
    {
      expires      3d;
    }
         #location ~ /\.ht {
        #    deny  all;
        #}
    }

#以下这段暂时请不要加上
location /nginx_status {
            stub_status on;
            access_log   off;
            allow 127.0.0.1;
            deny all;
        }
5、本条请先略过,后面会讲:
测试:/usr/local/webroot/nginx/sbin/nginx -t
启动:/usr/local/webroot/nginx/sbin/nginx
停止:kill -quit '/usr/local/nginx/logs/nginx.pid' 如kill -quit 6449
重起:/usr/local/webroot/nginx/sbin/nginx -s reload
强制停止所有进程:pkill -9 nginx

开机启动:vi /etc/rc.d/rc.local
/usr/local/webroot/nginx/sbin/nginx

6、日志分割(可以先跳过本节。更详细的请看其他文章):
vi /usr/local/webroot/nginx/sbin/cut_nginx_log.sh
logs_path="/var/www/logs/"
mv ${logs_path}access.log ${logs_path}$access_log_$(date -d "yesterday" +"%Y%m%d").txt
启动任务:/sbin/service crond start
加入开机自动启动:
chkconfig --level 35 crond on
crontab -e输入:
00 00 * * *. /bin/bash /usr/local/webroot/nginx/sbin/cut_nginx_log.sh

五、MySQL安装
1、请看cmake帮助:输入ccmake .或cmake . -LH 。关于cmake可以查看本站另一些文章。
2、mv /var/www/mysql-5.5.21.tar.gz /root
tar zxvf mysql-5.5.21.tar.gz
以下为代码内容,请直接复制粘贴:

cmake .\
 -DCMAKE_BUILD_TYPE=RelWithDebInfo\
 -DCMAKE_INSTALL_PREFIX=/usr/local/webroot/mysql/\
 -DSYSCONFDIR=/usr/local/webroot/\
 -DMYSQL_UNIX_ADDR=/var/www/logs/mysql.sock\
 -DMYSQL_DATADIR=/usr/local/webroot/mysql/data/\
 -DCOMMUNITY_BUILD=ON\
 -DENABLED_PROFILING=ON\
 -DWITH_INNOBASE_STORAGE_ENGINE=1\
 -DENABLED_LOCAL_INFILE=1\
 -DMYSQL_TCP_PORT=3306\
 -DWITH_EXTRA_CHARSETS=complex\
 -DWITH_EMBEDDED_SERVER=1\
 -DWITHOUT_PARTITION_STORAGE_ENGINE=1\
 -DWITH_READLINE=OFF\
 -DWITH_SSL=no\
 -DWITH_DEBUG=OFF\
 -DMYSQL_USER=ftpflashgou

make && make install
如果编译失败,可以删除文件来重新编译:rm -f CMakeCache.txt

3、复制相关脚本
cp /root/mysql-5.5.21/support-files/my-medium.cnf /usr/local/webroot/my.cnf //移动

4、创建数据库(初始化):
chmod 755 /root/mysql-5.5.21/scripts/mysql_install_db
/root/mysql-5.5.18/scripts/mysql_install_db --user=ftpflashgou --basedir=/usr/local/webroot/mysql --ldata=/usr/local/webroot/mysql/data

5、权限(经实验,不需要):chown -R ftpflashgou.wwwroot /usr/local/webroot/mysql
chmod -R 755 /usr/local/webroot/mysql

6、加入内容(经实验,不需要):
vi /usr/local/webroot/my.cnf

basedir =/usr/local/webroot/mysql
datadir =/usr/local/webroot/mysql/data
log-error =/usr/local/webroot/mysql/mysql_error.log
pid-file =/usr/local/webroot/mysql/mysql.pid

7、启动数据库(请先跳过本节):
/usr/local/webroot/mysql/bin/mysqld_safe --user=ftpflashgou >nul&
/usr/local/webroot/mysql/bin/mysqld_safe --user=ftpflashgou 2>&1 > /dev/null &
关闭:/usr/local/webroot/mysql/bin/mysqladmin -u root -p shutdown
检查是否成功启动netstat -an |grep 3306
每次操作带个--user=ftpflashgou有点麻烦,可以vi /usr/local/webroot/mysql/bin/mysqld_safe修改那个mysql用户,可见,编译时指定的DMYSQL_USER=ftpflashgou没起作用,简单讲,就是MySQL开发者没做好安装用户体验工作。个性化麻烦

8、创建用户:
/usr/local/webroot/mysql/bin/mysql -u root -p 输入后会提示密码,直接按回车

GRANT ALL PRIVILEGES ON *.* TO 'kuhanzhu'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'kuhanzhu'@'127.0.0.1' IDENTIFIED BY '123456';
这样就安装好了。关于MySQL用户,可以参考更多资料。

本节要点:参数-DWITH_EXTRA_CHARSETS=complex只有3个值:all、complex、none,并没gbk之类可选。创建数据、启动失败的话,ls /etc看下有没my.cnf存在,vi /etc/my.cnf,修改各文件路径到var/www/logs吧,以及user改为ftpflashgou,跟文件、目录权限一点关系都没有,全是/etc/my.cnf偷跑惹得祸。/etc/my.cnf这个文件很诡异,在同样的环境中(比如虚拟机),一次次编译安装MySQL,有时候没有这个文件,有时候又有。你创建不了数据库,想改它的内容,麻烦,直接rm -rf /etc/my.cnf,又居然能够创建数据库,不影响MySQL运行了……

六、安装PHP
本篇PHP不含GD,GD安装部分请参考:http://www.flashgou.com/show/159
1、FTP上传
mv /var/www/php-5.3.10.tar.gz /root/
解压:tar xzvf php-5.3.10.tar.gz
2、编译安装
cd php-5.3.10
./configure\
 --prefix=/usr/local/webroot/php\
 --with-config-file-path=/usr/local/webroot/\
 --with-mysql=/usr/local/webroot/mysql\
 --enable-mbstring\
 --with-libxml-dir=/usr/local/webroot/lib/libxml2\
 --with-iconv-dir=/usr/local/webroot/lib/libiconv\
 --enable-fpm\
 --with-zlib-dir=/usr/local/webroot/lib/zlib\
 --with-mcrypt

make&&make install
复制
cp php.ini-production /usr/local/webroot/php.ini
cp /usr/local/webroot/php/etc/php-fpm.conf.default /usr/local/webroot/php/etc/php-fpm.conf

vi /usr/local/webroot/php/etc/php-fpm.conf  根据提示去掉几个(php 5.3.10不需要处理,不过相关参数还是需要自己去调整);
;pm.start_servers = 20
;pm.min_spare_servers = 5
;pm.max_spare_servers = 35
;pm.max_requests = 500


安装eaccelerator:
mv /var/www/eaccelerator-0.9.6.1.tar.bz2 /root
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/local/webroot/php/bin/phpize

./configure \
 --enable-eaccelerator=shared \
 --with-php-config=/usr/local/webroot/php/bin/php-config
make
make install

安装zend:

mv /var/www/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz /root
tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
mv ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendGuardLoader.so /usr/local/webroot/php/lib/php/extensions

vi /usr/local/webroot/php.ini 按shift+g添加入下内容
zend_extension="/usr/local/webroot/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/var/www/logs/cache"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension=/usr/local/webroot/php/lib/php/extensions/ZendGuardLoader.so
按esc后输入:wq保存退出。(注意:zend模块必须放eaccelerator后面,否则访问zend加密过的文件会报错,访问phpmyadmin也会报错——关phpmyadmin啥事啊,真是疑惑。)

七、iptables设置:

编辑:vi /etc/sysconfig/iptables,似的内容如下:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

保存策略:service iptables save
重起:service iptables restart
其中3306等端口并不需要开放,除非你要远程连接MySQL

八、启动管理
一切准备就绪,现在就来管理启动和重起等事宜:
启动php-fpm:/usr/local/webroot/php/sbin/php-fpm &
启动nginx://usr/local/webroot/nginx/sbin/nginx
重启nginx:/usr/local/webroot/nginx/sbin/nginx -s reload
启动vsftpd:service vsftpd start

启动数据库
/usr/local/webroot/mysql/bin/mysqld_safe --user=ftpflashgou >nul&
/usr/local/webroot/mysql/bin/mysqld_safe --user=ftpflashgou 2>&1 > /dev/null &
关闭:/usr/local/webroot/mysql/bin/mysqladmin -u root -p shutdown

加入开机启动:
chkconfig vsftpd on
vi /etc/rc.d/rc.local
/usr/local/webroot/nginx/sbin/nginx
/usr/local/webroot/php/sbin/php-fpm &
/usr/local/webroot/mysql/bin/mysqld_safe --user=ftpflashgou >nul&

本文完。你还可以继续浏览这篇文章:Lnmp设置优化

不欢迎转载,转载请注明来自:http://www.flashgou.com/show/25
本站不提供讨论功能。
本站所有非新闻类文章均为原创,且禁止转载。
本站为了获得更多流量赚取广告费,难免会有以次充好的文章,望见谅,勿鄙视。