草庐IT

详解Nginx+php-5.4+Mysql-5.5+Memcached+redis的架构部署

Minkon1 2023-03-28 原文
为公司搭建一个测试架构,要求跟真是环境贴近需要安装Nginx、PHP、mysql、memcached、redis!

但是只给了一台R720的服务器,没办法,只能全跑在一台上了


服务器型号:戴尔R710

内存:4G

操作系统:CentOS 6.4

CPU: E5520


各个包版本:

Nginx-1.2.1

Php-5.4.14

Mysql-5.5.29

Memcached-1.2.8

Redis-2.6.14

安装Nginx

一些依赖包

yum install -y gcc gcc-c++ makezlib zlib-devel pcre* libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers1、安装

tar zxf nginx-1.2.1.tar.gz ./configure --prefix=/usr/local/webserver/nginx/ make && make install

2、启动Nginx

#/usr/local/webserver/nginx/sbin/nginx安装Mysql-5.5

1、准备

groupadd mysql useradd -r -g mysql mysql mkdir /usr/local/webserver/mysql mkdir -pv /usr/local/webserver/mysql/data chown mysql.mysql /usr/local/webserver/mysql/ -R yum -y install gcc gcc-c++ ncurses-devel libtool openssl-devel bison-devel ncurses-devel libaio-devel tar zxf mysql-5.5.29.tar.gz cd mysql-5.5.29

2、首先安装cmakeMysql-5.5安装不同于以往版本,需要cmake编译)

tar zxf cmake-2.8.7.tar.gz cd cmake-2.8.7 ./configure make && make install

3、编译安装

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DENABLED_PROFILING=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make make install注:编译的时候如果没有utf8_general_ci,会出现COLLATION'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'


4、配置

在源码目录下support-files目录里有很多配置文件的模版

#拷贝主配置文件 cp /root/mysql-5.5.29/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf #创建启动脚本,cp后可以使用/etc/init.d/mysqld start启动 cp /root/mysql-5.5.29/support-files/mysql.server /etc/init.d/mysqld #修改权限 chmod 755 /etc/init.d/mysqld #初始化mysql sh scripts/mysql_install_db --user=mysql --basedir=/usr/local/webserver/mysql/ --datadir=/usr/local/webserver/mysql/data/ #创建链接到标准路径下(修改环境变量指定,效果一样) ln -s /usr/local/webserver/mysql/bin/* /usr/bin/ ln -s /usr/local/webserver/mysql/lib/* /usr/lib/ ln -s /usr/local/webserver/mysql/libexec/* /usr/local/libexec ln -s /usr/local/webserver/mysql/share/man/man1/* /usr/share/man/man1 ln -s /usr/local/webserver/mysql/share/man/man8/* /usr/share/man/man8注:vim /etc/my.cnf ([mysqld]里添加一行skip-name-resolve = 1跳过域名解析,加快启动速度)


5、启动mysql

/etc/init.d/mysqld start

进入mysql,以下语句设置root密码删除没用的用户

/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd use mysql; update user set password=password('newpassword') where user='root'; delete from user where not (user='root') ; delete from user where user='root' and password=''; drop database test; DROP USER ''@'%'; flush privileges;#mysql的一些安全设置

mysql_secure_installation


#mysql错误文件的位置

/usr/local/webserver/mysql/data/localhost.err


启动时的两个问题:

l启动报错:File'./mysql-bin.index' not found (Errcode: 13)

解决办法:

一般就是权限问题,mysql用户是否对数据库目录内的所有文件具有写的权限

chown mysql.mysql -R data


l启动报错:0911029:10:22 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade tocreate it.

解决办法:

 出现这种问题是因为没有指定mysql安装目录和data目录导致的,运行如下命令:

# /usr/local/mysql/scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


安装PHP

1、安装 jpeg

groupadd www useradd -r -g www www yum install bzip2-devel net-snmp-devel #wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz # tar zxvf jpegsrc.v8d.tar.gz # cd jpeg-8d # ./configure -enable-shared -enable-static # make && make install clean2、安装libmcrypt

wget http://lcmp.googlecode.com/files/libmcrypt-2.5.8.tar.gz tar fvxz libmcrypt-2.5.8.tar.gz ./configure && make && make install说明:libmcrypt默认安装在/usr/local


3、安装mhash

tar-zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && makeinstall4、安装mcrypt

tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8 export LD_LIBRARY_PATH=/usr/local/lib ./configure make && make install说明:由于在配置Mcrypt时,会找不到libmcrypt的链接库,导致无法编译,因为Libmcrypt的链接库默认在/usr/local/lib文件夹下。因些在配置mcrypt时要加入LD_LIBRARY_PATH=/usr/local/lib 导入键接库


5、开始安装PHP

tar zxf php-5.4.14.tar.gz ./configure --prefix=/usr/local/webserver/php \ --with-libxml-dir=/usr/include/libxml2 \ --with-config-file-path=/usr/local/webserver/php/etc/ \ --with-mysql=/usr/local/webserver/mysql \ --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config \ --with-gd \ --enable-gd-native-ttf \ --with-zlib \ --with-mcrypt \ --with-pdo-mysql=/usr/local/webserver/mysql \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-wddx \ --enable-zip \ --with-xmlrpc \ --enable-fpm \ --enable-mbstring \ --with-zlib-dir \ --with-bz2 \ --with-curl \ --enable-exif \ --enable-ftp \ --with-jpeg-dir=/usr/lib64 \ --with-png-dir=/usr/lib64 \ --with-freetype-dir=/usr/lib64 \ --with-iconv \ --enable-xml \ --enable-bcmath \ --enable-sysvsem \ --enable-inline-optimization \ --with-curlwrappers \ --enable-mbregex \ --with-openssl \ --enable-pcntl \ --with-gettext \ --enable-session make make installNginx+PHP整合,在安装时必须启用--enable-fpm


6、修改配置

cp php.ini-production /usr/local/webserver/php/etc/php.ini rm -rf /etc/php.ini ln -s /usr/local/webserver/php/etc/php.ini /etc/php.ini cp /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf

# vi /usr/local/php/etc/php-fpm.conf
user = www
group = www
#取消前面的分号
pid = run/php-fpm.pid

7、修改 /usr/local/etc/php-fpm.conf 文件

pid = run/php-fpm.pid 却掉注释


Nginx支持PHP需要在定义server主机的时候添加

location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件,输入以下内容:

fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; 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_FILENAME $document_root$fastcgi_script_name; 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 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; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;

启动:#/usr/local/sbin/php-fpm

安装redis

1、获取安装文件

#wget http://download.redis.io/redis-stable.tar.gz

2、编译安装

tar xzvf redis-stable.tar.gz cd redis-stable make make install

3、配置

mkdir -p /etc/redis cp redis.conf /etc/redis修改配置文件

#vi /etc/redis/redis.conf
仅修改: daemonize yes


4、启动

/usr/local/bin/redis-server /etc/redis/redis.conf查看启动

ps -ef | grep redis安RedisPHP扩展

1、获取

wget --no-check-certificate http://github.com/owlient/phpredis/tarball/master

2、安装

tar zxf owlient-phpredis-2.1.1-1-g90ecd17.tar && cd owlient-phpredis-90ecd17/ /usr/local/webserver/php/bin/phpize ./configure --with-php-config=/usr/local/webserver/php/bin/php-config make && make install3、配置

vim /usr/local/webserver/php/etc/php.ini

添加 extension = "redis.so"

安装memcached

1、下载libevent1.4.11memcached稳定版本(libevent 是安装 memcached 的唯一前提条件。它是 memcached 所依赖的异步事件通知库)

2、安装libevent1.4.11

wget -c http://cloud.github.com/downloads/libevent/libevent/libevent-1.4.11-stable.tar.gz

./configure -prefix=/usr/local/libevent make && make install3、安装memcached

./configure -prefix=/usr/local/memcached --with-libevent=/usr/local/libevent make && make install export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libevent/lib注:安装memcached时需要指定libevent的安装位置,最后一条命令是libeventlib目录加入LD_LIBRARY_PATH

检查,/usr/local/memcached,有2个目录,安装成功!

4memcached运行参数

/usr/local/memcached/bin/memcached -d -m 128 -u root -l 192.168.0.97 -c 256 -P /tmp/memcached.pid

5、运行一下报错原因及处理方法:
/usr/local/memcached/bin/memcached: error while loading shared libraries:libevent-1.4.so.2: cannot open shared object file: No such file or directory这样的错误,原因是,memcached默认是到/usr/lib/里找libevent-1.4.so.2,而我们安装的是在/usr/local/lib里面

执行:

ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

安装MemcachePHP扩展

1、解压编译安装

cd memcache-2.2.5 /usr/local/webserver/php/bin/phpize #安装PHP扩展都需要执行此脚本 ./configure -enable-memcache -with-php-config=/usr/local/webserver/php/bin/php-config -with-zlib-dir make && make install

安装完成会有类似下面的提示:

Installing shared extensions:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/


2、修改PHP的配置文件

#vim /usr/local/webserver/php/etc/php.ini 做一下修改

extension_dir = “/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/“ extension = "memcache.so" #(如果有分号,把分号去掉!)

l如果启动memcached时提示未找到eaccelerator.so

需要安装eAccelerator加速器

下载安装eAccelerator

#wget https://github.com/eaccelerator/eaccelerator/tarball/master


最新的版本是eaccelerator-42067ac.tar.gz


#tar zxvf eaccelerator-42067ac.tar.gz


需要phpize安装php扩展,如果不明白phpize可以看这个:http://blog.csdn.net/21aspnet/article/details/8193482


需要注意的是需要写php的安装路径对应的phpize下面的php-config也是


# /usr/local/webserver/php/bin/phpize


#./configure --enable-eaccelerator=shared  --with-php-config=/usr/local/webserver/php/bin/php-config


#make  


需要注意的是要安装高版本的,低了编译不过去。


#makeinstall

需要记住生成的提示信息,要与php配置文件php.iniextension_dir处填写的一致


/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/


有关详解Nginx+php-5.4+Mysql-5.5+Memcached+redis的架构部署的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  3. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  4. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  5. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  6. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  7. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  8. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  9. ruby-on-rails - 当我通过 rvm 使用 rails3 时,如何在 ubuntu 上安装 mysql2 gem? - 2

    我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。

  10. ruby-on-rails - Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境 - 2

    我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp

随机推荐