设为首页 收藏本站
查看: 1047|回复: 0

lnmp环境搭建,超详细教程

[复制链接]

尚未签到

发表于 2015-8-21 10:56:50 | 显示全部楼层 |阅读模式
  || 安装所需各种依赖包
  yum –y install
  gcc gcc-c++ autoconf automake bison flex freetype freetype-devel fontconfig-devel gettext-devel libjpeg libjpeg-devel libpng libpng-devel libxml2 libxml2-devel libtool libtool-ltdl libtool-ltdl-devel libtiff-devel libXpm-devel libicu libicu-devel libidn libidn-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre pcre-devel pam-devel vim-enhanced mysql-devel
  
  | 其它需要编译源码安装的依赖包
  libivonv
  wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
  tar -xzvf libiconv-1.14.tar.gz
  ./configure
  make && make install
  
  libmcrypt
  wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/old/libmcrypt-2.5.7.tar.gz
  tar -xzvf libmcrypt-2.5.7.tar.gz
  ./configure
  make&&make install
  /sbin/ldconfig
  cd libltdl/
  ./configure --enable-ltdl-install
  make
  make install
  
  mhash
  wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
  tar –xjvf mhash-0.9.9.9.tar.bz2
  ./configure
  make
  make install
  cd ../
  ln -s /usr/local/lib/libmcrypt.[la|so|so.4|so.4.4.8] /usr/lib/libmcrypt.[la|so|so.4|so.4.4.8]
  ln -s /usr/local/lib/libmhash.[a|la|so|so.2|so.2.0.1] /usr/lib/libmhash .[a|la|so|so.2|so.2.0.1]
  /sbin/ldconfconfig
  
  mcrypt
  wget http://ncu.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
  tar –xzvf mcrypt-2.6.8.tar.gz
  ./configure
  make
  make install
  

||编译安装mysql略

  
  ||编译安装php Fast-CGI 模式
  wget http://cn2.php.net/distributions/php-5.2.17.tar.bz2
  tar -xjvf  php-5.2.17.tar.bz2
  wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
  gzip -cd php-5.2.17-fpm-0.5.14.diff.gz|patch -d php-5.2.17 -p1(此处为数字1,非L的小写)
  cd php-5.2.17/
./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-iconv-dir=/usr/ --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap=/usr --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear

  
  #make的时候加参数ZEND_EXTRA_LIBS='-liconv'是因为编译时需要iconv库, 但是configure的时候没有写到Makefile中, 还有一种方法是直接修改Makefile, 在链接库的地方(应该在100行左右)加上-liconv
  make ZEND_EXTRA_LIBS='-liconv'
  make install
  cp php.ini-dist /usr/local/php/etc/php.ini
  
  ||编译安装php扩展
  |memcache
  |安装依赖包libevent
  1.yum install libevent
  2.wget http://cloud.github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz
  tar –xzvf libevent-1.4.14b-stable.tar.gz
  cd libevent-1.4.14b-stable
  ./configure –prefix=/usr/local/libevent
  make && make install
  
  |wget http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz   
  tar –xzvf memcached-1.4.10.tar.gz
  cd memcached-1.4.10
  ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
  make
  make install
  
  |wget http://lcmp.googlecode.com/files/memcache-2.2.6.tgz
  tar –xzvf memcache-2.2.6.tgz
  cd memcache-2.2.6
  /usr/local/php/bin/phpize
  ./configure --prefix=/usr/local/memcache --with-php-config=/usr/local/php/bin/php-config --enable-memcache
  make
  make install  
  安装成功后提示如下:
  Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
  
  成功后修改php.ini文件
  vim /usr/local/php/etc/php.ini
  extension_dir=”./” èextension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613”
  extension = “memcache.so”
  
  |安装eaccelerator
  | eaccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。能使PHP程序代码执效率能提高1-10倍
  |eAccelerator 通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。
  |eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的PHP
  wget http://nchc.dl.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip
  unzip eaccelerator-0.9.6.1.zip
  cd eaccelerator-0.9.6.1
  /usr/local/php/bin/phpize
./configure --prefix=/usr/local/eaccelerator --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config

  make
  make install
  安装成功后提示如下:
  Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
  之后,修改php.ini文件:
  vim /usr/local/php/etc/php.ini
  找到extension_dir,在下面添加
  extension = “eaccelerator.so”
  配置eaccelerator加速php:
  [eaccelerator]
  zend_extension=” /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”
  eaccelerator.shm_size=”16”   #共享内存设置,以M为单位,默认为0
  eaccelerator.cache_dir = "/tmp/eaccelerator" #缓存目录
  eaccelerator.enable = "1"       #开启或关闭eaccelerator,1==开,0==关;默认为1
  eaccelerator.optimizer = "1"  #启动或关闭内部优化器,默认为1
  eaccelerator.check_mtime = "1"    #启动或关闭PHP的文件修改检查;默认为1
  eaccelerator.debug = "0"              #启动或关闭高度日志记录
  eaccelerator.filter = ""    #判断哪些 PHP 文件必须缓存。可以指定缓存和不缓存的文件类型(如 "*.php *.phtml"等),如果参数以 "!" 开头,则匹配这些参数的文件被忽略缓存。默认值为 "";即,所有 PHP 文件都将被缓存。
  eaccelerator.shm_max = "0"  #当使用 " eaccelerator_put() " 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值,单位:字节 (10240, 10K, 1M)。"0" 为不限制。默认值为 "0"。
  eaccelerator.shm_ttl = "0"     #当 eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在最后 "shm_ttl" 秒内没有存取的脚本缓存。默认值为 "0",即:不从共享内春中删除任何缓存文件。
  eaccelerator.prune_period = "0"    #当 eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于"shm_prune_period" 秒的缓存脚本。默认值为 "0",即:不从共享内春中删除任何缓存文件。
  eaccelerator.shm_only = "0"         #允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 "0",即:使用磁盘和共享内存进行缓存
  eaccelerator.compress = "1"          #允许或禁止压缩内容缓存。默认值为 "1",即:允许压缩。
  eaccelerator.compress_level = "9"        #指定内容缓存的压缩等级。默认值为 "9",为最高等级。
  eaccelerator.keys = "disk_only"
  eaccelerator.session = "disk_only"
  eaccelerator.content = "disk_only"
  ###设置内容缓存的存放的地方,可以设置为:
  shm_and_disk 在共享缓存和硬盘(默认值)
  shm 默认存在共享内存,如果共享内存已满或大小超过 "eaccelerator.shm_max" 的值,就存到硬盘
  shm_only 只存放在共享内存
  disk_only 只存放在硬盘
  none 不缓存数据
  
  eaccelerator.allowed_admin_path = "/var/www/html/21andy.com/eaccelerator"
  ###这是控制面板的地址 安装包里有个control.php,你把它复制到网站的任意目录,可以用它查看和管理,这个必须指定,否则查看缓存内容的时候会出错
  
||配置php-fpm

  Nginx+PHP需要    PHP生成可执行文件才可以,所以要利用fastcgi技术来实现Nginx与PHP的整合,这个只要我们安装是启用FastCGI即可.这里,我们用php-fpm来管理FastCGI(php-fpm已以补丁的形式加入到PHP中).
  编辑配置文件:
  vim php-fpm.conf
  大约63行,去掉相应注释,为FastCGI指定用户,可使用默认的nobody,也可另行指定。
  
  Unix user of processes
  <value name="user">nobody</value>
  
  Unix group of processes
  <value name="group">nobody</value>
  
  
  
  |启动php-cgi进程
  Ulimit –SHn 65535
  /usr/local/php/sbin/php-fpm start
  
  ####
  |ulimit [-acdfHlmnpsStvw] [size]
参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes 5,简单实例:
  
  
  
  ||编译安装 Nginx
  wget http://nginx.org/download/nginx-1.0.10.tar.gz
  tar –xzvf nginx-1.0.10.tar.gz
  cd nginx-1.0.10
  ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  make
  make install
  
  |nginx.conf 配置
  #user  nobody;
  worker_processes  1;
  
  #error_log  logs/error.log;
  #error_log  logs/error.log  notice;
  #error_log  logs/error.log  info;
  
  #pid        logs/nginx.pid;
  
  worker_rlimit_nofile 65535;
  events {
  use epoll;
  worker_connections  1024;
  }
  
  
  http {
  include       mime.types;
  default_type  application/octet-stream;
  
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  
  #access_log  logs/access.log  main;
  #charset   utf8;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32K;
  large_client_header_buffers 4 32K;
  client_max_body_size 8M;
  sendfile        on;
  tcp_nopush     on;
  tcp_nodelay           on;
  #keepalive_timeout  0;
  keepalive_timeout  65;
  
  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_min_length 1K;
  gzip_buffers   4 16K;
  gzip_http_version   1.0;
  gzip_comp_level    9;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary              on;
  
  server {
  listen       80;
  server_name  localhost;
  #charset koi8-r;
  access_log  logs/localhost.access.log  main;
  root html;
  index index.html index.htm index.php;
  #配置nginx支持PHP
  location ~ .*\.(php|php5)?$
  {
  #fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
  }
  #缓存图片
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
  expires 30d;
  }
  #缓存js/css相关信息
  location ~ .*\.(js|css)?$
  {
  expires 1h;
  }
  #error_page  404              /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
  root   html;
  }
  }
  }
  
  |Fastcgi.conf 配置 (该文件内容基本不要修改)
  fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  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_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  GATEWAY_INTERFACE  CGI/1.1;
  fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
  
  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;
  
  |启动nginx
  /usr/local/nginx/sbin/nginx
  
  |配置Nginx+php-fpm开机启动
  vim /etc/rc.local
  在末尾添加:
  ulimit -SHn 65535
  /usr/local/php/sbin/php-fpm start
  /usr/local/nginx/sbin/nginx
  保存退出
  
  ||在不停止Nginx服务的情况下平滑变更Nginx配置
  在修改过配置文件nginx.conf后可用如下命令检查配置文件是否正确
  /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主进程号:
  ps aux|grep "nginx: master process"|grep -v "grep"|awk '{print $2}'
  或者
  cat /usr/local/nginx/logs/nginx.pid
  找到主进程号后可通过如下命令使配置文件生效:
  kill –HUP 主进程号
  或者可以这样
  kill –HUP  ` ps aux|grep "nginx: master process"|grep -v "grep"|awk '{print $2}'`
  kill –HUP  ` cat /usr/local/nginx/logs/nginx.pid `
  
  ############
  nginx可接受的信号如下:
  TERM, INT Terminate the server immediately
QUIT Stop the server
HUP Configuration changes, start new workers, graceful stop of old workers
USR1 Reopen log files
USR2 Upgrade the server executable
WINCH Graceful Stop (parent process advise the children to exit)
kill -HUP pid 重新应用配置文件
kill -USR1 pid 重新刷新log


||日志轮询

  cat log_rotation.sh
  #!/bin/bash
  LOG_DIR=”/usr/local/nginx/logs”
  DATA_DIR=`date +%Y%m%d`
  /bin/mkdir –p $LOG_DIR/$DATA_DIR > /dev/null 2>&1
  /bin/mv $LOG_DIR/access.log $LOG_DIR/$DATA_DIR/access.log
  kill –USR1 `cat /usr/local/nginx/logs/nginx.pid`
  
  设定log_rotation.sh在每天的00:00:00运行:
  crontab –e
  59 23 * * * /bin/bash log_rotation.sh
  
  转自:http://blog.chinaunix.net/uid-23354495-id-3063696.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-102117-1-1.html 上篇帖子: VPS及LNMP(一) 下篇帖子: 马老师 LNMP生产环境Web架构 笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表