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

[经验分享] mysql+nginx+php编译过程

[复制链接]

尚未签到

发表于 2018-11-13 12:37:06 | 显示全部楼层 |阅读模式
  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的扩展模块后续...


运维网声明 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.iyunv.com/thread-634595-1-1.html 上篇帖子: keepalived(nginx)+httpd实现动静分离 下篇帖子: 关于网上流传的nginx文档的1个错误(nginx+tomcat日志记录真实IP)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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