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

[经验分享] LNMP 部署(Linux+Nginx+Mysql+Php)

[复制链接]

尚未签到

发表于 2018-11-16 09:44:40 | 显示全部楼层 |阅读模式
  1.安装所需各种依赖包
  yum –y install
  gcc gcc-c++ autoconf automakebison flex freetype freetype-devel fontconfig-devel gettext-devel libjpeglibjpeg-devel libpng libpng-devel libxml2 libxml2-devel libtool libtool-ltdllibtool-ltdl-devel libtiff-devel libXpm-devel libicu libicu-devel libidn libidn-devellibxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-develkrb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients openldap-servers pcre pcre-devel pam-devel vim-enhanced mysql-devel php-devel libevent libevent-devel libjpeg-devel
  2.准备lnmp其他的源代码包
  wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
  wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz
  3.安装php-5.3.28源代码包所需要的函数支持包
  tar zxvf libiconv-1.13.1.tar.gz
  cd libiconv-1.13.1/
  ./configure --prefix=/usr/local
  make
  make install
  cd ../
  (libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)
  tar zxvf libmcrypt-2.5.8.tar.gz
  cd libmcrypt-2.5.8/
  ./configure --prefix=/usr/local
  make
  make install
  /sbin/ldconfig
  cd libltdl/
  ./configure --prefix=/usr/local --enable-ltdl-install
  make
  make install
  cd ../../

  (libmcrypt是加密算法扩展库。支持DES,3DES, RIJNDAEL, Twofish,>  tar zxvf mhash-0.9.9.9.tar.gz
  cd mhash-0.9.9.9/
  ./configure --prefix=/usr/local
  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
  LD_LIBRARY_PATH=/usr/local/lib ./configure --prefix=/usr/local/
  make
  make install
  cd ../
  4.编译安装MySQL5.1.73-m3
  groupadd mysql
  useradd -s /sbin/nologin -g mysql -M mysql
  mkdir -p /var/lib/mysql
  #创建数据存放目录
  chown -R mysql:mysql /var/lib/mysql
  mkdir -p /usr/local/mysql/
  tar zxvf mysql-5.1.73-m3.tar.gz
  cd mysql-5.1.73-m3
  ./configure --prefix=/usr/local/mysql --datadir=/var/lib/mysql --with-unix-socket-path=/tmp/mysql.sock --with- --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --enable-assembler --with-plugins=innobase --with-plugins=partition --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
  make &&make install        #编译安装
  #############################################################################
  --prefix=/usr/local/mysql//MySQL安装目录
  --datadir=/var/lib/mysql  //数据库存放目录
  --with-charset=utf8 //使用UTF8格式
  --with-extra-charsets=complex //安装所有的扩展字符集
  --enable-thread-safe-client //启用客户端安全线程
  --with-big-tables //启用大表
  --with-ssl //使用SSL加密
  --with-embedded-server //编译成embeddedMySQLlibrary (libmysqld.a),
  --enable-local-infile //允许从本地导入数据
  --enable-assembler //汇编x86的普通操作符,可以提高性能
  --with-plugins=innobase //数据库插件
  --with-plugins=partition //分表功能,将一个大表分割成多个小表
  cp support-files/my-medium.cnf /etc/my.cnf
  chown -R mysql:mysql /etc/my.cnf
  #准备mysql配置文件
  chown-R mysql:mysql /usr/local/mysql/
  chown -R mysql:mysql /usr/local/mysql/var/
  #把MySQL目录的权限给MySQL用户和组
  /usr/local/mysql/bin/mysql_install_db --user=mysql
  #用MySQL来初始化数据库,安装mysql和test数据库
  cp /usr/local/mysql-5.1.73/support-files/mysql.server /etc/init.d/mysqld
  chmod 755 /etc/init.d/mysqld
  chkconfig --add mysqld
  chkconfig mysqld on
  service mysqld restart
  #启动mysql服务
  /usr/local/mysql/bin/mysqld_safe --user=mysql &
  #把初始化的数据库目录给MySQL所有者
  /usr/local/mysql/bin/mysqladmin -uroot password  123
  #修改mysql登录密码为123
  /usr/local/mysql/bin/mysql -uroot -p123
  #用mysql登录
  登陆测试:
  #cd /usr/local/mysql/bin
  #mysql
  >show databases;
  # MySQL安装结束
  5.编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度)
  tar zxvf php-5.3.28.tar.gz
  gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.3.28 -p1
  #-p  1    是数字
  #解压并打补丁,让php支持fpm来方便管理php-cgi进程(使用php-fpm管理fastCGI)
  #gzip   -c  保留源文件  -d  解压
  cd php-5.3.28/
  ./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/local --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-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
  make ZEND_EXTRA_LIBS='-liconv'
  #编译过程设定变量(编译过程需要)
  make install
  cp php.ini-dist /usr/local/php/etc/php.ini
  ( 若没有php.ini-dist这个文件,则改名:php.ini-production> php.ini-recommended   ; php.ini-development> php.ini-dist  )
  cd ../
  6.准备编译安装PHP5扩展模块
  tar zxvf memcache-2.2.5.tgz
  cd memcache-2.2.5/
  /usr/local/php/bin/phpize
  ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
  make &&make install
  cd ../
  tar jxvf eaccelerator-0.9.6.1.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
  cd ../
  (eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍)
  tar zxvf PDO_MYSQL-1.0.2.tgz
  cd PDO_MYSQL-1.0.2/
  /usr/local/php/bin/phpize
  ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
  make
  make install
  cd ..
  /tar zxvf ImageMagick.tar.gz
  cd ImageMagick-6.5.1-2/
  ./configure --prefix=/usr/local
  make
  make install
  cd ../
  (ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式)
  tar zxvf imagick-2.3.0.tgz
  cd imagick-2.3.0/
  /usr/local/php/bin/phpize
  ./configure --with-php-config=/usr/local/php/bin/php-config
  make
  make install
  cd ../
  cp /usr/local/php/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  chmod 755 /etc/init.d/php-fpm
  这时候还不能使用/etc/init.d/php-fpm start启动,需修改一下php-fpm配置文件才可以,配置文件位置php安装目录 etc 目录下,默认有个参考文件.
  cp php-fpm.conf.default php-fpm.conf
  vi php-fpm.conf
  ,pm.start_servers = 20
  ,pm.min_spare_servers = 5
  ,pm.max_spare_servers = 35
  7.修改php.ini文件,让php模块生效
  #cd /usr/local/php/php-5.3.28/ext/ftp
  #/usr/local/php/bin/phpize
  vi /usr/local/php/etc/php.ini
  查找extension_dir="./"
  修改为:extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
  手工添加
  extension = "memcache.so"
  extension = "pdo_mysql.so"
  extension = "imagick.so"
  再查找output_buffering=Off
  修改为output_buffering=On
  再查找 ;cgi.fix_pathinfo=0
  修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞
  8.配置eAccelerator加速PHP:
  mkdir -p /usr/local/eaccelerator_cache
  #准备eaccelerator缓存目录
  vi /usr/local/php/etc/php.ini
  到配置文件的最末尾,粘上以下内容:
  [eaccelerator]
  zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
  eaccelerator.shm_size="64"
  eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="3600"
  eaccelerator.shm_prune_period="3600"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"
  9.准备php-cgi和nginx进程执行者用户
  groupadd nginx
  useradd -s /sbin/nologin -g nginx -M nginx
  10.创建php-fpm配置文件-php-fpm.conf
  vi  /usr/local/php/etc/php-fpm.conf
  php_flag[display_errors] =off
  #off改成on,页面上会输出错误日志.  取消注释
  unix user of processes
  nginx
  Unix group of processes
  nginx
  #去掉相应注释,为FastCGI指定用户,可使用默认的nobody,也可另行指定。 取消注释
  pm.max_children = 64
  #最大子进程数128,如果内存小于2G,则64个最佳
  rlimit_files = 65535
  # Set open file desc rlimit,同时打开的文件数,linux系统允许同时打开的文件数为1024,修改linux系统中允许同时打开的文件,ulimit-SHn65535,而且这个参数重启后还能生效,加到/etc/profile全局配置文件的最后,开机就会生效,ulimit-a查看openfiles65535
  ulimit  用户控制shell启动进程所占用的资源
  -H  设定硬性资源限制,也就是管理员设定的限制
  -S   设定软性资源限制,弹性限制
  -n   设定可同时打开的最大文件个数
  -f    设定单个文件最大大小
  -a   查看目前的限制
  pm.max_requests = 64
  #最大请求数,Howmuch requests each process should executebefore respawn.一个子进程能够回应1042个请求11. 启动php-cgi(fastcgi)进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx:
  /usr/local/php/sbin/php-fpm start
  #启动php-cgi

  /usr/local/php/sbin/php-fpm>  #重新加载配置文件
  /usr/local/php/sbin/php-fpm stop
  #关闭php-fpm,此时nginx肯定连不上php
  ##Php-fpm启动:
  /etc/init.d/php-fpm start
  11.安装Nginx所需的pcre库
  tar zxvf pcre-8.10.tar.gz
  cd pcre-8.10/
  ./configure --prefix=/usr/local
  make && make install
  cd ../
  yum install pcre* //如过你已经装了,请跳过这一步
  #为了支持rewrite功能,我们需要安装pcre
  yum install openssl*
  #安装openssl
  #需要ssl的支持,如果不需要ssl支持,请跳过这一步
  yum install zlib-devel
  # gzip 类库安装
  12.安装Nginx
  tar zxvf nginx-1.6.1.tar.gz
  cd nginx-1.6.1/
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
  make && make install
  cd ../
  为Nginx添加proxy_cache模块,对视频进行缓存
  wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
  tar zxvf ngx_cache_purge-2.0.tar.gz
  nginx和ngx_cache_purge必须在同一级目录
  cd nginx-1.6.1
  /usr/local/nginx/sbin/nginx –V
  #查看编译参数
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=../ngx_cache_purge-2.0
  make &&make install
  vi /usr/local/nginx/conf/nginx.conf
  user  nginx nginx;               #定义Nginx运行的用户和用户组
  worker_processes  2;
  error_log logs/error.log;
  pid       logs/nginx.pid;       #文件描述符数量
  worker_rlimit_nofile 65535;
  events                           #工作模式与连接数上限
  {
  use epoll;
  worker_connections 102400;
  }
  http                             #设定http服务器
  {
  include      mime.types;
  default_type  application/octet-stream;
  #charsetutf-8;
  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;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 64k;
  sendfile       on;
  tcp_nopush     on;
  keepalive_timeout 120;
  #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
  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模块设置
  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;   #压缩类型
  gzip_vary              on;
  #limit_zonecrawler$binary_remote_addr10m;        #开启限制IP连接数的时候需要使用
  server
  {
  listen      80;                                           #监听端口
  server_name 127.0.0.1;                     #主机名,或IP。如果是主机名,要能够DNS解析
  location / {
  root  html;                                           #网站主目录。/usr/local/nginx/html/
  index index.html index.htm index.php;        #默认网页顺序
  }
  error_page  500 502 503 504  /50x.html;
  location=/50x.html {
  root  html;
  }
  #limit_conn   crawler 20;
  location ~ .*\.(php|php5)?$           #正则表达式:碰到网页文件名是.php或.php5结尾
  {
  root          html;
  fastcgi_pass  127.0.0.1:9000;         #连接fastcgi,用来解析php语句
  fastcgi_index index.php;              #首页为index.php
  fastcgi_param SCRIPT_FILENAME /usr/loal/nginx/html$fastcgi_script_name;  #启动fast-cgi
  include       fastcgi.conf;         #包括fastcgi_params中参数
  }
  location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
  expires     30d;                   #图片格式缓存30天
  }
  location ~.*\.(js|css)?$
  {
  expires     1h;                     #js/css缓存2小时
  }
  }
  }
  13.配置开机启动nginx,php-fpm,ulimit
  1)Vi /etc/rc.local
  /usr/local/nginx/sbin/nginx
  /usr/local/php/sbin/php-fpm start
  /usr/local/mysql/bin/mysqld_safe  --user=mysql  &
  2)ulimit
  Vi /etc/profile
  ulimit -SHn 65535
  17.检查nginx配置文件语句错误
  /usr/local/nginx/sbin/nginx -t
  18.平滑重启nginx进程
  1)Pkill -HUP nginx
  2)kill -HUP `pgrep -uroot nginx`
  Pgrep  -uroot  nginx  取出nginx主进程PID

  3)/usr/local/nginx/sbin/nginx -s>  19.测试是否安装成功:
  在/usr/local/nginx/html/创建一个php 页面进行测试。


运维网声明 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-635657-1-1.html 上篇帖子: 七、nginx搭建discuz论坛系统 下篇帖子: nginx.conf
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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