系统环境:rhel4.7、centos5.5
1、马上看看所需软件
mysql-5.0.92.tar.gz |
呼拉拉,一大堆软件,马上看看怎么安装这一大堆软件!
2、安装mysql
tar xvfz mysql-5.0.92.tar.gz cd mysql-5.0.92 ./configure --prefix=/usr/local/mysql --localstatedir=/home/var --with-charset=utf8 --with-extra-charsets=all --with-berkeley-db --with-innodb --without-readline --enable-assembler --with-pthread --enable-thread-safe-client --with-client-ldflags=-all-static make make install |
如何不打算在本机器上运行mysql,可以跳过下面这一步
配置mysql
vi /etc/my.cnf
[client]
character-set-server = utf8 port = 3306 socket = /tmp/mysql.sock [mysqld] character-set-server = utf8 replicate-ignore-db = mysql replicate-ignore-db = test replicate-ignore-db = information_schema user = mysql port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/webserver/mysql datadir = /home/var log-error = /home/var/mysql_error.log pid-file =/home/var/mysql.pid open_files_limit = 10240 back_log = 600 max_connections = 5000 max_connect_errors = 6000 table_cache = 614 external-locking = FALSE max_allowed_packet = 32M sort_buffer_size = 1M join_buffer_size = 1M thread_cache_size = 300 #thread_concurrency = 8 query_cache_size = 512M query_cache_limit = 2M query_cache_min_res_unit = 2k default-storage-engine = MyISAM thread_stack = 192K transaction_isolation = READ-COMMITTED tmp_table_size = 246M max_heap_table_size = 246M long_query_time = 3 log-slave-updates log-bin = /home/var//binlog/binlog binlog_cache_size = 4M binlog_format = MIXED max_binlog_cache_size = 8M max_binlog_size = 1G relay-log-index = /home/var/relaylog/relaylog relay-log-info-file = /home/var/relaylog/relaylog relay-log = /home/var/relaylog/relaylog expire_logs_days = 30 key_buffer_size = 256M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover interactive_timeout = 120 wait_timeout = 120 skip-name-resolve #master-connect-retry = 10 slave-skip-errors = 1032,1062,126,1114,1146,1048,1396 #master-host = 192.168.1.2 #master-user = username #master-password = password #master-port = 3306 server-id = 1 innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 512M innodb_data_file_path = ibdata1:256M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 innodb_file_per_table = 0 #log-slow-queries = /home/var/slow.log #long_query_time = 10 [mysqldump] quick max_allowed_packet = 32M |
初始化数据库及配置启动方法
/usr/local/mysql/bin/mysql_install_db --user=mysql |
3、安装libiconv、libxml2、gd等PHP库
tar zxvf libiconv-1.13.tar.gz tar zxvf libxml2-2.6.31.tar.gz mkdir -pv /usr/local/jpeg6/{,bin,lib,include,man/man1,man1} tar zvxf freetype-2.3.5.tar.gz tar zvxf zlib-1.2.3.tar.gz tar zxvf libpng-1.2.40.tar.gz tar xzvf gd-2.0.35.tar.gz tar -zxvf libmcrypt-2.5.7.tar.gz ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la |
这样就安装完成php常用的库了
4、接着安装php、php-frm
tar zxvf php-5.2.17.tar.gz gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1 cd php-5.2.17 ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv=/usr/local/libiconv/ --with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd/ --with-jpeg-dir=/usr/local/jpeg6/ --with-zlib-dir=/usr/local/zlib --with-png-dir=/usr/local/lib --with-freetype-dir=/usr/local/freetype --with-mysql=/usr/local/mysql --with-mcrypt=/usr/local/lib/libmcrypt --enable-mbstring --with-openssl --enable-ftp --with-curl --enable-fastcgi --enable-xml --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-force-cgi-redirect --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl make make install cp php.ini-dist /usr/local/php/lib/php.ini |
PHP的配置一会再说,先把nginx安装完成
5、nginx及php扩展插件
tar zxvf pcre-8.01.tar.gz
groupadd www useradd -g www -d /home/www -s /sbin/nologin www tar zxvf nginx-0.9.5.tar.gz tar zxvf memcache-2.2.5.tgz tar jxvf eaccelerator-0.9.5.3.tar.bz2 mkdir /tmp/eaccelerator |
6、安装完那一大堆软件之后,要开始配置了,下面这些才是关键
第一步:配置php.ini
vi /usr/local/php/lib/php.ini |
找到
extension_dir ="" |
修改成
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" |
再找到
output_buffering=off |
修改成
output_buffering = On |
再次查找
; cgi.fix_pathinfo=0 |
把注释去掉
cgi.fix_pathinfo=0 |
最后跳到php.ini文件的末尾,加入以下内容:
[eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" 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" eaccelerator.compress="0" eaccelerator.compress_level="9" eaccelerator.keys = "disk_only" eaccelerator.sessions = "disk_only" eaccelerator.content = "disk_only" |
至此,php.ini文件修改完毕!
第二步:配置nginx的FCGI
vi /usr/local/nginx/conf/fcgi.conf |
写入以下内容:
fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param QUERY_STRING $query_string; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REMOTE_ADDR $remote_addr; # PHP only, required if PHP was built with --enable-force-cgi-redirect |
第三步:配置php-fpm文件
mv /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf.bak |
重新写入以下内容
<?xml version="1.0" ?> All relative paths in this config are relative to php's install prefix <section name="global_options"> Pid file Error log file Log level When this amount of php processes exited with SIGSEGV or SIGBUS ... ... in a less than this interval of time, a graceful restart will be initiated. Time limit on waiting child's reaction on signals from master Set to 'no' to debug fpm </section> <workers> <section name="pool"> Name of pool. Used in logs and stats. Address to accept fastcgi requests on. <value name="listen_options"> Set listen(2) backlog Set permissions for unix socket, if one used. Additional php.ini defines, specific to this pool of workers. Unix user of processes Unix group of processes Process manager settings Sets style of controling worker process count. Sets the limit on the number of simultaneous requests that will be served. Settings group for 'apache-like' pm style Sets the number of server processes created on startup. Sets the desired minimum number of idle server processes. Sets the desired maximum number of idle server processes. </value> </value> The timeout (in seconds) for serving a single request after which the worker process will be terminated The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file The log file for slow requests Set open file desc rlimit Set max core size rlimit Chroot to this directory at the start, absolute path Chdir to this directory at the start, absolute path Redirect workers' stdout and stderr into main error log. How much requests each process should execute before respawn. Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. Pass environment variables like LD_LIBRARY_PATH </section> </workers> </configuration> |
第四步:配置nginx.conf文件
vi /usr/local/nginx/conf/nginx.conf |
写入以下内容
user www www; worker_processes 8; #error_log /usr/local/nginx/logs/error.log; #pid logs/nginx.pid; worker_rlimit_nofile 204800; events { http { #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #access_log logs/access.log main; sendfile on; ignore_invalid_headers on; gzip on; server_names_hash_bucket_size 256; open_file_cache max=204800 inactive=20s; location ~ .*\.(js|css)?$ { location ~ .*\.(log|txt)$ location ~ .*\.(php)?$ |
7、启动服务
/usr/local/php/sbin/php-fpm start |
看看有没启动成功
[root@localhost ~]# netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 3937/snmpd tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3954/php-cgi tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2662/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18066/nginx tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 17955/vsftpd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4137/sendmail: acce tcp 0 0 :::5989 :::* LISTEN 2714/cimserver tcp 0 0 :::22 :::* LISTEN 2574/sshd udp 0 0 0.0.0.0:161 0.0.0.0:* 3937/snmpd |
看见php-cgi和nginx端口在正常监听!