lnmp服务,涉及数据库源码编译安装、php源码编译安装、php和nginx服务关联、论坛搭建、memcache缓存和openresty缓存前移

一  Mysql安装(虚拟机需要较大内存空间,否则编译过程中将会特别卡):

1.准备mysql-boost压缩包并解压,进入到解压目录:

2.准备cmake安装包并使用rpm指令安装,在安装时候按照提示解决依赖性问题:

  需要yum install  libarchive  -y安装libarchive,按照提示安装2.8.12.2-4版本的cmake :

3.  使用cmake进行安装的配置:

4.  在使用cmake之后,根据报错信息安装需要的程序:

这里的报错信息提示需要安装gcc-c++,gcc,之后重新执行cmake,需要指定启动项信息,在指令的末尾加上启动项信息:

-DWITH_BOOST=boost/boost_1_59_0/

5.跟据后面的依赖性问题,安装ncurses-del和bison

yum install ncurses-del  -y  安装ncurses-devel :

 

yum install  bison -y安装bison :

6. 在重新编译时,需要清除旧的对象文件和缓存信息: rm -f CMakeCache.txt  ,之后就可以执行make继续编译,可以看到编译进度编译过程比较久:

make编译完成之后进行make install编译,也可以看到进度。这样编译就完成了。

7.编译完成之后进入到/usr/local/lnmp/mysql/support-files目录:

编辑my-default.cnf文件。编辑完成之后保存推出,cp my-default.cnf /etc/my.cnf将配置文件复制为/etc/my.cnf 。

8.将mysql.server文件复制为/etc/init.d/mysqld,需要有可执行权限(拥有可执行权限的文件会变成绿色):

9.切换到上级目录,新建用户组mysql和用户mysql,并将mysql目录里的所有文件的所有人和所在组都改成mysql:

10. 切换到根目录编辑文进.bash_profile:

  编辑完成之后source 刷新:

11. 初始化:

   初始化时候会生成一个密码,图中黑色部分。这个密码会在后面的mysql安全设置里面用到。

如果在初始化时候出现如下问题,将/usr/local/lnmp/mysql/data目录(也就是mysql的数据保存文件目录)里面的文件全部删除,然后重新初始化:

13. 将/usr/local/lnmp/mysql/目录下所有文件和目录所有人和所在组都改为root,将data目录所有人改为root:

14. /etc/init.d/mysql  start开启数据库服务,进行mysql安全设置:

  在这里的Enter password for user root行输入root用户密码,这里的密码不是linux系统超级用户的密码,而是前面初始化时候分配的密码,输入密码之后回车:

输入新密码,在Change the password for root行直接回车表示no,不开启密码强度检测:

禁止匿名用户连接:

禁止远程连接:

删除test库和重载特权表:

所有安全配置完成之后就可以使用密码进入数据库并查看到里面的库,这样mysql就安装完成了:

二  php安装

1.准备php压缩包php-5.6.35.tar.bz2并解压并进入解压后的目录:

   进行源码编译(在ohp的解压目录下):

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl -with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-mcrypt --with-mhash

2.解决出现的依赖性问题:

解决libxml2依赖性问题:

解决net-snmp依赖性问题:

之后重新编译:

解决所有依赖性之后编译成功:

之后进行编译三部曲的第二步和第三步:

make&&make install 。编译完成之后php就安装好了。

三   php和nginx的服务关联

1.在/usr/local/lnmp/php/etc/目录下,将php-fpm.conf.default文件复制为php-fpm.conf文件。

   在php的解压目录下,将php.ini-production文件复制为/usr/local/lnmp/php/etc/php.ini文件。

    回到/usr/local/lnmp/php/etc目录,编辑php.ini文件:设定时区为亚洲/上海

     编辑php-fpm.conf文件,在25行解除pid的注释:

2.  建立用户nginx:

3. 切换到/mnt/php-5.6.35/sapi/fpm目录下,将init.d.php-fpm复制为/etc/init.d/php-fpm并给新文件可执行权限:

4. 安装nginx:

解压安装包并进入解压目录:

编辑auto/cc/gcc文件,注释掉179行:

编辑src/core/nginx.h文件,清除14行的版本信息:

在解压目录下编译,解决依赖性问题后重新编译,编译成功之后进行make &&make install编译。

5.  nginx配置:

编辑/usr/local/lnmp/nginx/conf/nginx.conf文件:

修改连接数为65535:

编辑/etc/srcurity/limits.conf文件写入用户限制:

编辑/usr/local/lnmp/nginx/conf/nginx.conf文件:

编辑切换到根目录编辑.bash_profile文件写入nginx的路径,编辑完成之后source .bash_profile刷新:

在nginx的默认发布目录/usr/local/lnmp/nginx/html下建立.php文件index.php:

nginx -s reload重启nginx服务,/etc/init.d/php-fpm  start 开启php-fpm服务,就可以在浏览器端解析到php页面:

或者在nginx的配置文件中加入对php文件的解析index.php:

重启nginx服务,直接解析ip就可以看到php页面了:

四  论坛搭建

1.准备论坛的压缩包,yum install unzip -y安装解压命令,unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/

将压缩包解压到nginx的默认发布目录下:

2.进入nginx默认发布目录,将upload目录重命名为bbs,在浏览器里访问172.25.17.1/bbs就可以进入到论坛安装向导界面:

3.开始安装目录显示目录不可写,是因为论坛针对这些目录没有读权限:

进入nginx默认发布目录下的bbs目录,给需要的目录满权限:

这样在浏览器里刷新页面,就可以检测到目录了:

 

4.  出现以下问题是因为没有设定数据库路径:

编辑 /usr/local/lnmp/php/etc/php.ini文件写入数据读读取路径:

/etc/init.d/php-fpm reload重启php-fpm服务,刷新页面问题解决。

5.  新的问题:

这是因为数据库的data目录没有足够的读权限。解决方法是给data目录755权限:

6. 重启php-fpm服务,刷新页面,开始安装:

安装完成之后管理员登陆,进入管理界面,论坛搭建成功:

五  memcache缓存

1.准备memcache压缩包并解压: tar zxf memcache-2.2.5.tgz

2.编辑/root/.bash_profile文件,加入php的路径,之后source .bash_profile刷新:

3.进入到memcache的解压目录,先执行phpcdize,否则在./configure编译的时候会报错说没有这样的文件。然后依次执行./configure、make、make install进行编译。

4.给php添加memchache模块:

编辑php的配置文件/usr/local/lnmp/php/etc/php.ini,加入memcache.so :

重启php-fpm服务,php -m |grep memcache查看到添加的memcache:

5. 安装memcached服务并开启

6. 在memcache的解压目录下,cp memcache.php example.php /usr/local/lnmp/nginx/html/复制两个文件到nginx的默认发布目录下。

7.在/usr/local/lnmp/nginx/html目录下,编辑memcache.php文件,设定密码为123,并绑定本机的11211接口(28行),保存退出后重启php-fpm服务。

浏览器访问:

输入用户名和密码:

进入:

8. 测试

   在浏览器打开另一个页面访问172.25.17.1/example.php:

访问之后产生缓存,访问次数越多在memcache这边命中率越高,实现了缓存加速:

   在真机端执行指令ab -c 10 -n 100 http://172.25.17.1/example.php,可以看到每秒请求次数为918:

六   openresty缓存前移(本实验在之前实验的基础上,使用另一台ip为172.25.254.1的主机,其他操作不变)

OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

####################################################################################################

openresty服务搭建:

1. nginx -s stop关闭nginx服务,否则会和openresty服务端口冲突

2. 将openresty-1.13.6.1.tar.gz解压并进入解压目录,进行源码编译:

3. 编译完成之后,在/usr/local/lnmp/openresty/nginx/conf目录下编辑配置文件nginx.conf编辑完成之后保存退出,可以使用指令/usr/local/lnmp/openresty/nginx/sbin/nginx -t来查看是否配置文件存在语法问题。

4.文件编辑完成之后,以绝对路径的方式直接执行 /usr/local/lnmp/openresty/nginx/sbin/nginx打开openresty服务,此时nginx服务一定要关闭,否则会冲突。后面对openresty的开启和关闭都要通过绝对路径的方式:

5.将nginx默认发布目录下的两个文件拷贝到当前所在目录/usr/local/lnmp/openresty/nginx/html即openresty的发布目录,之后重启php-fpm服务:

6.在浏览器中访问172.25.254.1就可以看到openresty的欢迎界面:

7.这样在真机端再次解析example.php文件,每秒请求次数较之前有较大提升。系统性能得到提高:

猜你喜欢

转载自blog.csdn.net/letter_A/article/details/81430033