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_FILENAMEdocument_rootfastcgi_script_name;    #fastcgi_param SCRIPT_FILENAME /scriptsfastcgi_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
zchd
+关注
目录
打赏
0
0
0
0
4
分享
相关文章
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
270 13
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
264 3
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
299 2
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
346 2
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
128 3
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
108 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
556 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
100 0