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的擴展模塊後續...