1、mysql 5.5.16编译安装
安装所需要系统库相关文件
yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*
创建mysql安装目录和数据存放目录
mkdir -p /usr/local/mysql
mkdir -p /data/mysql/
创建用户和用户组与赋予数据存放目录权限
useradd mysql -s /sbin/nologin
chown mysql.mysql -R /data/mysql/
安装cmake
下载cmake http://download.chinaunix.net/download.php?id=31928&ResourceID=1605
tar zxf cmake-2.8.5.tar.gz
cd cmake-2.8.5
./configure
make && make install
安装mysql 5.5.16
tar fzx mysql-5.5.16.tar.gz
cd mysql-5.5.16
/usr/local/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=all
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=data/mysql
make && make install
复制配置文件
mv /etc/my.cnf /etc/my.cnf-`date +%F`
mkdir -p /usr/local/mysql/etc
cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
cd /usr/local/mysql/
mkdir log run tmp data
chown mysql.mysql -R *
vim /usr/local/mysql/etc/my.cnf
innodb_log_files_in_group=2
innodb_data_home_dir = /opt/data/mysql/
innodb_data_file_path = ibdata1:2000M;ibdata2:2000M;ibdata3:20M:autoextend
innodb_log_group_home_dir = /opt/data/mysql/
# 4G RAM
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit=0
innodb_thread_concurrency=8
innodb_flush_method=O_DIRECT
# perform
tmp_table_size = 512M
max_heap_table_size=128M
初始化数据库(执行前 需要chmod 755 scripts/mysql_install_db 赋给文件执行权限)
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql
#basedir mysql安装路径 datadir 数据库文件储存路径
设置mysqld的开机启动:
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig mysqld on
chkconfig --list mysqld
设置环境变量
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
PATH=/usr/local/mysql/bin:$PATH
启动mysql服务
/etc/init.d/mysqld start
启动完成之后用ps -ef |grep mysql 命令查看是否启动
2、mysql安全设置
设置root帐户的密码
mysqladmin -u root password '123456'
删除本机匿名连接的空密码帐号
本机登录mysql
mysql -uroot -p
然后输入上面设置的密码,登录后在mysql的命令行中执行:
use mysql;
//update user set password='123456' where host = '127.0.0.1';
delete from user where user="";
delete from user where password="";
flush privileges;
quit
3、安装nginx
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
cd /home
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
tar fzx pcre-8.32.tar.gz
cd pcre-8.32
./configure --prefix=/usr/local/pcre
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
安装ssl(有些没有)
cd /home
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz
useradd nginx -s /sbin/nologin
./configure
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/log/run/nginx.pid \
--lock-path=/var/log/lock/subsys/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-mail \
--with-mail_ssl_module \
--with-pcre=/home/pcre-8.32 \
--with-zlib=/home/zlib-1.2.8 \
--with-openssl=/home/openssl-1.0.1c
或,
./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-pcre=/home/pcre-8.32
--with-zlib=/home/zlib-1.2.8
make && make install
启动nginx
nginx
etstat -ano|grep 80
4、php安装
wget http://cn.php.net/get/php-5.4.8.tar.gz/from/this/mirror
wget http://pecl.php.net/get/memcache-2.2.7.tgz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
wget https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
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"
wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick.tar.gz
wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
wget http://pecl.php.net/get/imagick-3.1.0RC2.tgz
yum install ncurses-devel libxml2-devel bzip2-devel libcurl-devel
curl-devel libjpeg-devel libpng-devel freetype-devel net-snmp-devel -y
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/ (假定mysql已经安装。不加这个的话后面编译的时候可能会出错)
编译一些php需要用到的支持库
tar fzx libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/
make && make install
cd ..
tar fzx libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
cd libltdl/
# pwd
/home/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make && make install
cd ../../
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make
make install
cd ../
开始编译php
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql/ --with-iconv-dir=/usr/local --enable-fpm \
--disable-phar --with-fpm-user=nginx --with-fpm-group=nginx --with-pcre-regex \
--with-zlib --with-bz2 --enable-calendar --with-curl --enable-dba --with-libxml-dir --with-xmlrpc --enable-exif \
--enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir \
--enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt --with-openssl \
--enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip \
--enable-bcmath --with-snmp --disable-ipv6
########################################
--enable-fastcgi启动fast-cgi "
---enable-fpm"是激活对FastCGI模式的fpm支持,
"--enable-discard-path" 打开这个选项,用户就不能透过浏览器读取类似.htaccess 的系统安全相关的文件。
"--enable-force-cgi-redirect" 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。
例如用户读 http://my.host/cgi-bin/php/secret/doc.html
遇到比较了解 PHP 系统的黑客级用户可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关信息。
若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。
--with-config-file-path在指定php主配置文件的路径
--with-mysql和--with-mysqli在指定你的mysql的位置和它的相关工具
--with-iconv-dir,--with-freetype-dir,-with-jpeg-dir,--with-png-dir,--withgd,--with-zlib,--with-libxml-dir
这些都是在启用对某种文件的支持
--with-curl和--with-curlwrappers是用于支持curl函数,此函数允许你用不同的协议连接和沟通不同的服务器
--with-openssl,--with-mhash,--with-mcrypt这都是和加密有关的参数,启用它们是为了让php可以更好的支持各种加密。
"--enable-bcmath" 高精度数学运算组件。
"--enable-shmop" 和 "--enable-sysvsem" 使得你的PHP系统可以处理相关的IPC函数 。IPC是一个Unix标准通讯机制,
它提供了使得在同一台主机不同进程之间可以互相通讯的方法。
"--enable-inline-optimization" 栈堆指针和优化线程。
"--enable-pcntl" 多线程优化。
make ZEND_EXTRA_LIBS='-liconv' 手工指定将iconv加到php额外库中,一般来说这些库的增加php可以自动完成,
只是iconv貌似不太合群,需要手工操作。
# make // 如果报错“make: *** [sapi/cli/php] Error 1” 使用命令“make ZEND_EXTRA_LIBS='-liconv' ”进行编译
make ZEND_EXTRA_LIBS='-liconv‘
make test
make install
提供php主配置文件:
cp php.ini-production /usr/local/php/etc/php.ini
为php-fpm提供启动脚本,添加至服务列表并开机启动:
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
启用fastcgi:
fastcgi比较重要,这里介绍一下:fastcgi是http server和动态脚本语言间通信的接口,nginx支持fastcgi;
同时fastcgi也被许多脚本语言支持,包括php。传统的cgi接口性能很差,每次http server遇到动态程序时,都需要重启脚本解释器来执行解析,
然后将结果返回给http server。fastcgi采用C/S架构,将http server和脚本解析器分开,同时在脚本解析器上启动一个或多个脚本解析守护进程,
当httt server遇到动态程序时,可以直接交付给fastcgi进程执行,然后将得到的结果返回给浏览器,
这样http server只处理静态请求或将动态服务器的结果返回给客户端,从而提高性能。
nginx通过fastcgi来调用php,而php-fpm是fastcgi的进程管理器。fastcgi的主要作用就是将动态语言和http server分离开来,
所以nginx和php/php-fpm经常配置在不同服务器上,各司其职,从而提高性能。
nginx通过fastcgi来调用php,而php-fpm是fastcgi的进程管理器。fastcgi的主要作用就是将动态语言和http server分离开来,
所以nginx和php/php-fpm经常配置在不同服务器上,各司其职,从而提高性能。
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vi php-fpm.conf //一般配置的依据如下
内存小于4G服务器(值可逐级递减):
修改如下参数:
pm=dynamic
pm.max_children=40
pm.start_servers=10
pm.min_spare_servers=10
pm.max_spare_servers=40
******************************
内存大于4G服务器(值可逐级递增):
修改如下参数:
pm=static
pm.max_children=100
编译安装php的一些扩展模块
tar zxvf memcache-*.tgz
cd memcache-*/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
cd ../
tar xzvf libevent*
cd libevent*
./configure --prefix=/usr/local
make
make install
cd ..
tar xvzf memcached-*.gz
cd memcached-*
./configure --with-libevent=/usr/local --prefix=/usr/local/memcached
make
make install
cd ../
tar zxvf ImageMagick.tar.gz
cd ImageMagick-*/
./configure
make
make install
cd ../
tar zxvf imagick-*.tgz
cd imagick-*/
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
cd ../
安装php加速器(支持php5.4)
Accelerator加速引擎是基于mmcache开发的PHP加速优化软件。通过编译和缓存来增加PHP脚本的性能,
使得PHP脚本在编译的状态下降低服务器负载,对服务器的开销几乎完全消除。它还对脚本起优化作用,能加快其执行效率,
提高PHP应用执行速度最高达10倍。
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make && make install
vi /usr/local/php/etc/php.ini
增加这些:
extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
extension = "memcache.so"
extension = "imagick.so"
修改这些:
cgi.fix_pathinfo=0
disable_functions = exec,system,phpinfo,eval,passthru,chroot,scandir,chgrp,chown,shell_exec,
proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,fsocket,fsockopen,openlog,syslog,
readlink,symlink,popepassthru,stream_socket_server(有关禁用函数的说明,参看上一篇日志:一些比较危险的php函数)
配置ngin支持php:
vim /usr/local/nginx/nginx.conf
location / {
root html;
index index.html index.htm index.php; //添加index.php
}
//启用下面的配置
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;
}
启动php-fpm,重启nginx
service php-fpm start
kill -TERM 主进程号 或 kill -QUIT 主进程号
/usr/nginx/sbin/nginx -t 判断nginx的配置文件是否正确
nginx (nginx -c ...nginx.conf)
关于php的扩展模块后续...