本文共 9295 字,大约阅读时间需要 30 分钟。
物理环境: 操作系统:centos 5.5 32位 mysql数据库:mysql-5.1.58.tar.gz nginx软件包:nginx-0.7.65.tar.gz PHP软件包:php-5.3.8.tar.gz
1 安装mysql数据库 tar -zxvf mysql-5.1.58.tar.gz cd mysql-5.1.58 ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl--with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg make make install 创建MySQL数据库服务器的配置文件 cp support-files/my-medium.cnf /etc/my.cnf cd /usr/local/mysql/ 初始化mysql数据库 bin/mysql_install_db --user=mysql 修改文件及其目录的权限,使其目录或文件的宿主为root,宿组为mysql,(data的宿主为mysql) chown -R root . chown -R mysql data chgrp -R mysql . 启动mysql数据库 /usr/local/mysql/bin/mysqld_safe --user=mysql & netstat -tnl|grep 3306 设置mysql启动脚本文件 cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld /etc/init.d/mysqld restart /usr/local/mysql/bin/mysql -uroot -p2 安装nginx服务安装openssl-0.9.8i.tar.gz软件包 ./config --prefix=/usr/local/openssl make &&make install安装pcre-8.12.tar.gz软件包(可以安装光盘里面pcre和pcre-devel) ./configure --prefix=/usr/local/pcre make &&make install安装nginx软件包 /usr/sbin/groupadd nginx /usr/sbin/useradd -g nginx nginx -s /sbin/nologin ./configure --user=nginx --group=nginx --with-http_stub_status_module --with-openssl=/usr/local/openssl/ --with-pcre=/opt/pcre-8.12/ 该目录指定的是解压pcre后生成的目录 --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module make && make install测试nginx 服务是否安装成功 /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful启动nginx 服务 /usr/local/nginx/sbin/nginx 查看nginx 是否开启(即查看nginx的端口是否处于LISTEN) netstat -antl |grep "LISTEN"3 安装PHP服务yum安装php模块所需用的库文件 yum install libmcrypt-devel libmhash mhash-devel gettext gettext-devel
tar -zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure --prefix=/usr/local/libmcrypt make && make install
tar -zxvf libiconv-1.13.1.tar.gz cd libiconv-1.13.1 ./configure --prefix=/usr/local/libiconv make && make install
tar -zxvf freetype-2.4.0.tar.gz cd freetype-2.4.0. ./configure --prefix=/usr/local/freetype make && make install tar -zxvf jpegsrc.v6b.tar.gz cd jpeg-6b ./configure --prefix=/usr/local/jpeg/ make make install
在执行make install的时候错误提示信息usr/bin/install: 无法创建一般文件“/usr/local/jpeg/bin/cjpeg” mkdir /usr/local/jpeg 系统提示那个目录无法创建,就手动创建一个,提示那个目录就手工创建一个,直到成功执行make instll命令 tar -zxvf libxml2-2.6.32.tar.gz cd libxml2-2.6.32 ./configure --prefix=/usr/local/libxm12 make && make install tar -zxvf curl-7.21.0.tar.gz cd curl-7.21.0 ./configure --prefix=/usr/local/curl make && make install tar -zxvf gd-2.0.35.tar.gz cd gd-2.0.35 ./configure --prefix=/usr/local/gd make make install tar -zxvf php-5.3.8.tar.gz cd php-5.3.8 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-gd=/usr/local/gd --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-jpeg-dir=/usr/local/jpeg6/ --with-zlib-dir --enable-mbstring=all --with-pdo-mysql --with-freetype-dir=/usr/local/freetype --with-mcrypt --enable-sockets --enable-mbstring --enable-fpm make make时候报下面错误/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status 原因:是在编辑php时添加的“–with-mcrypt”选项造成 解决方法: 1)如果不需要mcrypt,那么编辑php时去掉该选项,然后再make、make install。 2)如果需要mcrypt,那么需要安装libltdl libltdl在libmcrypt软件包中就有,具体过程: cd /software/libmcrypt-2.5.8/libltdl ./configure -enable-ltdl-install make && make install make install添加PHP配置文件 cp php.ini-production /usr/local/php/etc/php.ini vi /usr/local/php/etc/php.ini 添加date.timezone = Asia/Shanghai 更改short_open_tag = Off 为short_open_tag = On (开启短格式支持) 更改expose_php = on 为expose_php = off (在curl中隐藏php版本号)添加php-fpm配置文件 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf vim /usr/local/php/etc/php-fpm.conf 取消以下;分号表示注释 ;pid = run/php-fpm.pid ;pm.start_servers = 20 ;pm.min_spare_servers = 5 ;pm.max_spare_servers = 35设置php-fpm启动文件 cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig --level 3 php-fpm on chmod +x /etc/init.d/php-fpm /etc/init.d/php-fpm start Starting php-fpm done整合php和nginx vim /usr/local/nginx/conf/nginx.conf user nginx nginx; #使用的用户和用户组 worker_processes 4; #指定工作衍生进程数,一般等于CPU的总核数或者总核数的两倍,例如两个四核CPU,则总核数为8 #worker_cpu_affinity 0001 0010 0100 1000; error_log /data/logs/nginx_error.log crit; #指定错误日志存放的路径,错误日志记录级别可选项为:debug | info | notice | warn | error |crit pid logs/nginx.pid; #指定pid存放的路径 worker_rlimit_nofile 51200; #用于绑定worker进程和CPU events { #用来指定Nginx工作模式和及其连接上限 use epoll; #使用的网络I/O模型,Linux系统推荐采用epoll模型,FressBSD系统推荐采用kqueue模型 worker_connections 51200; #Nginx每个进程允许的连接数 multi_accept on; } http { include mime.types; #实现主配置文件对所包含文件的设定,可以减少主配置文件的复杂度 default_type application/octet-stream; # HTTP核心模块指令,默认为二进制流 #charse gb2312; #设置字符集,如果一个网站有多种字符集,请不要随便设置,让程序员在HTML代码中设置 server_names_hash_bucket_size 128; client_header_buffer_size 16k; large_client_header_buffers 4 256k; server_tokens off; sendfile on; #开启高效稳健传输 tcp_nopush off; #防止网络拥塞 tcp_nodelay on; #防止网络拥塞 keepalive_timeout 60; #客户端连接保持会话的超时时间 client_header_timeout 30; #设置客户端请求头读取超时时间 client_body_timeout 30; #设置客户端请求读取主体读取超时时间 send_timeout 30; #指定响应客户端的超时时间 client_max_body_size 30M; #设置客户端能够长传的文件大小 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 on; #开启gzip压缩 gzip_min_length 1000; #允许压缩页面的最小字节数 gzip_buffers 4 16k; #申请4个单位为16K的内存做为压缩结果流输出 #gzip_http_version 1.0; #用于识别HTTP版本,默认1.1 gzip_comp_level 9; #用来指定GZIP的压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但处理数据最慢,也消耗CPU。 gzip_types text/plain text/javascript application/x-javascript text/css application/xml text/xml application/xml+rss; 指定压缩类型 gzip_vary on; #前端的缓存服务器经过GZIP压缩 fastcgi_intercept_errors on; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #指定Nginx日志输出的格式,main为此日志输出的格式的名称 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_time"'; #error_page 500 502 503 504 /50x.html; #error_page 402 403 404 500 502 503 504 http://www.test.com/application/controllers/error.php; error_page 402 403 502 503 504 /error; server { listen 80; server_name index index.html index.htm index.php; root /data/www; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }在/usr/local/nginx/conf/目录中创建fcgi.conf文件 vim /usr/local/nginx/conf/fcgi.conf fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;测试nginx配置文件 /usr/local/nginx/sbin/nginx -t the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful
优化Linux内核参数
vim /etc/sysctl.conf net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlog = 32768 net.core.somaxconn = 32768 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_tw_recycle = 1 #net.ipv4.tcp_tw_len = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_max_orphans = 3276800 #net.ipv4.tcp_fin_timeout = 30 #net.ipv4.tcp_keepalive_time = 120 net.ipv4.ip_local_port_range = 1024 65535使配置立即生效: /sbin/sysctl -p4 安装eaccelerator 优化php tar -jxvf eaccelerator-0.9.6.tar.bz2 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在PHP主配置文件里面添加下面参数 vim /usr/local/php/etc/php.ini extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/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="1" eaccelerator.compress_level="9"建立文件夹 mkdir /tmp/eaccelerator chmod 0777 /tmp/eaccelerator重启php-fpm服务 service php-fpm restart建立网站根目录 mkdir -p /data/www 新建下面测试内容 <? php phpinfo(); ?>
测试LNMP整合是否成功
转载地址:http://kfctx.baihongyu.com/