Centos 下源码安装配置Nginx +PHP + fastcgi+mysql+MemCached

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 编译工具包是少不了的先搞起吧 yum -y install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel .

编译工具包是少不了的先搞起吧

yum -y install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel

./configure: error: the HTTP rewrite module requires the PCRE library 错误

http://sourceforge.net/projects/pcre/files/pcre/ PCRE 这个扩展包

1、先从http://wiki.nginx.org/Install 这个网站下载最近稳定的版本

我下的是 nginx-1.2.6.tar.gz

tar -xvf nginx-1.2.6.tar.gz

cd nginx-1.2.6

有兴趣的读者可以参考一下 http://wiki.nginx.org/Modules 的模块配置,写得非常的详细

 ./configure --prefix=/usr/local 我就选了一个安装目录 ,其它的让他默认选择

#make

#make install 

启动 #/usr/local/nginx/sbin/nginx 

关闭 #ps -ef|grep nginx 

# kill -9 nginx 进程号(非官方,不过你可以看看http://wiki.nginx.org/NginxCommandLine)

ubutun 可以需要 sudo apt-get install libpcre3 libpcre3-dev

sudo apt-get install openssl libssl-dev

 

安装MySQL

#groupadd mysql
#useradd -r -g mysql mysql 创建帐号,但不创建目录 
#cd /usr/local
#cd mysql
#chown -R mysql:mysql .

# yum -y install cmake
# yum -y install ncurses-devel

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \
-DMYSQL_DATADIR=/user/local/webserver/mysql/data \
-DSYSCONFDIR=/etc \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1

#scripts/mysql_install_db --user=mysql

# chown -R root .
# chown -R mysql data

#设置Mysql
#在support-files目录中有五个配置信息文件(这里很重要,一定要根据自己的内存复制对应的cnf文件,否则mysql始终起不来):
#my-small.cnf (内存<=64M)
#my-medium.cnf (内存 128M)
#my-large.cnf (内存 512M)
#my-huge.cnf (内存 1G-2G)
#my-innodb-heavy-4G.cnf (内存 4GB)
cd /usr/local/webserver/mysql
cp ./support-files/my-huge.cnf /etc/my.cnf 
vi /etc/my.cnf
#在 [mysqld] 段增加
datadir = /data/mysql
wait-timeout = 30
max_connections = 512
default-storage-engine = MyISAM
#在 [mysqld] 段修改
max_allowed_packet = 16M 


#cp support-files/my-medium.cnf /etc/my.cnf
#bin/mysqld_safe --user=mysql &

#cp support-files/mysql.server /etc/init.d/mysqld

 #chmod 755 /etc/init.d/mysql

# chkconfig mysql on

 启动并设置初始密码
 
# /etc/init.d/mysql start
# mysqladmin -uroot password '123123'
 
进行再修改密码的语句
1: UPDATE mysql.user SET Password = PASSWORD(‘newpwd’) WHERE User = ‘root’;(生新设置密码)
2: flush privileges;(刷新权限)

mysql 5.6源码安装时发生了一个警告Googlemock was not found,看了一下,是新版mysql 5.6还支持了google的c++mock框架了,提示带了-DENABLE_DOWNLOADS=1可解决这个问题(就是允许下载)。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS

接下来可以在mysql-5.6.10/source_downloads这个路径下会下载一个gmock-1.6.0.zip文件, 这个文件的安装

 

unzip gmock-1.6.0.zip
./configure
make

mysql 安装完成

 安装从php.net 下载的php-5.4.10.tar.bz2 源码

#tar -xvf php-5.4.10.tar.bz2

#cd php-5.4.10

# mkdir /usr/local/php

#./configure --prefix=/usr/local/php //什么也不设置 后面加扩长模块

添加帐号和帐号组

#groupadd www      
#useradd -g www -s /sbin/nologin -M www 
/sbin/nologin意思是用户不允许登录
不能登录ssh(-s参数指定)

 #./configure --prefix=/usr/local/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets  --with-xmlrpc --enable-zip --enable-soap --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-maintainer-zts

中间报错的 error 你可以参考一下

configure: error: xml2-config not found. Please check your libxml2 installation.
yum install libxml2-devel

configure: error: Cannot find OpenSSL’s
yum install openssl-devel

configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
yum install curl-devel

configure: error: libjpeg.(a|so) not found
yum install libjpeg-devel

configure: error: libpng.(a|so) not found.
yum install libpng-devel

configure: error: libXpm.(a|so) not found.
yum install libXpm-devel

configure: error: freetype.h not found.
yum install freetype-devel

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
yum install libc-client-devel

configure: error: mcrypt.h not found. Please reinstall libmcrypt.
yum install libmcrypt-devel

configure: error: Please reinstall libmhash – I cannot find mhash.h
yum install mhash-devel

configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
yum install mysql-devel

configure: error: Please reinstall ming distribution. libming.(a|so) not found
- temp remove the config for ‘–with-ming=/opt/ming/’

configure: error: Cannot find pspell
yum install pspell-devel

checking size of char... configure: error: cannot compute sizeof (char)

 

我是在编译php的./configure步骤时出现这个错误的
解决办法一:把--disable-rpath去掉,不建议这样做
解决办法二:因为路径系统查找路径错误,export如下变量后再./configure:
LIBS="-lm -ltermcap -lresolv"
DYLD_LIBRARY_PATH="/var/lib/mysql:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64"
LD_LIBRARY_PATH="/var/lib/mysql:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64"
export LIBS DYLD_LIBRARY_PATH LD_LIBRARY_PATH

 

--------------------------------------------------

export LD_LIBRARY_PATH=/lib/:/usr/lib/:/usr/local/lib

编译完后,没问题再继续执行以下脚本

make ZEND_EXTRA_LIBS='-liconv'

遇到一个libtool: link: `ext/openssl/xp_ssl.lo' is not a valid libtool object 的错误

解决方法下载文档

debian_patches_disable_SSLv2_for_openssl_1_0_0.patch attached to that bug report.

Download this patch to your ~/Downloads/php-5.2.17 directory, and execute:

patch -p1 < debian_patches_disable_SSLv2_for_openssl_1_0_0.patch.patch
成功解决

#make & make install

cp php.ini-production /usr/local/php/lib/php.ini #这个位置最好是把phpinfo()看了再做决定

cp php-5.4.10/sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf

#去掉/更改 配置文件中的;
pm.max_children = 64 
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1024
user = www
group = www 

#检查语法是否正确
/usr/local/php/sbin/php-fpm -t
#出现NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful 测试成功
/usr/local/php/sbin/php-fpm &
#设置开机启动
vi /etc/rc.d/rc.local
#在行末加入
/usr/local/php/sbin/php-fpm &
Ubuntu 配置一下PHP 开机运行
步骤五:[root@localhost php-5-4.3]# cp php.ini-development /usr/local/php/etc/php.ini

cp  php-fpm.conf.default  php-fpm.conf
cd /home/jackluo/Downloads/php-5.4.14/sapi/fpm
cp  init.d.php-fpm  /etc/init.d/php-fpm
chmod +x  /etc/init.d/php-fpm
vi /etc/init.d/php-fpm

php_fpm_BIN=/usr/local/php/sbin/php-fpm

 

php_fpm_CONF=/usr/local/php/etc/php-fpm.conf

 

php_fpm_PID=/usr/local/php/var/run/php-fpm.pid

Ubuntu php-fpm开机自启动设置

[root@localhost root]# update-rc.d  -f  php-fpm  defaults

[root@localhost root]# runlevel

如果显示出当前服务等级“ runlevel  N  2”然后接着输:

[root@localhost root]# ln  -s  /etc/init.d/php-fpm  S99php-fpm

大功告成。开机php-fpm即可自启动了。

如果停止开机自启动可输入:

[root@localhost root]# update-rc.d  -f  php-fpm  remove



配置一下Nginx

 vi /usr/local/nginx/conf/nginx.conf

user www www;

 

location ~ .*\.(php|php5)?$ {
  root /var/www/html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  include fastcgi_params;
}

更多详细配置参考官方文档 http://wiki.nginx.org/Configuration

#检测配置文件

/usr/local/nginx/sbin/nginx -t

#开启Nginx

/usr/local/nginx/sbin/nginx

平滑重启Nginx

/usr/local/nginx/sbin/nginx -s reload 

添加开机启动

vi /etc/rc.d/rc.local 

最后一行加入

/usr/local/nginx/sbin/nginx &

动态添加编译PHP 模块 用 soap 为例子

先来到php-5.4.11/etc/soap 下

#/usr/local/php/bin/phpize

可能报错:

遇到问题:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make install
cd ../
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
tar -zvxf autoconf-2.62.tar.gz
cd autoconf-2.62/ ./configure && make && make install

这是再次执行sudo /usr/local/php/bin/phpize,就可以成功生成configure文件了。(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,官方说明网址为:http://php.net/manual/en/install.pecl.phpize.php

#./configure --with-php-config=/usr/local/php/bin/php-config --enable-soap

#make 

#make install

# /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/soap.so 这个文件已经生成了

# vi /usr/local/php/etc/php.ini

修改 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"

再句一名 extension = "soap.so"

重启nginx 应该就有了

killall nginx

killall php

/usr/local/php/sbin/php-fpm

/usr/local/nginx/sbin/nginx

安装MeMcached

http://www.memcached.org/ 从这儿下载

需要libevent is required.  You can get it from  http://www.monkey.org/~provos/libevent/下载

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
185 7
|
7天前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
22 8
|
6天前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
2月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
186 61
|
1月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
78 5
|
2月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
2月前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
108 3
|
2月前
|
安全 PHP 开发者
php中配置variables_order详解
`variables_order` 是 PHP 配置中的一个关键指令,它决定了不同来源的变量被导入到全局变量空间的顺序。正确配置 `variables_order` 不仅可以确保变量的正确处理和覆盖顺序,还能提高应用程序的安全性。开发者应根据具体应用的需求,合理配置 `variables_order`,确保应用的稳定和安全运行。
46 5
|
2月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
128 3

热门文章

最新文章