CentOS 7安装nginx+php+mysql环境

0x01 安装php

1、首先得安装第三方软件库

yum install epel-release
复制代码

2、安装依赖包

yum install gcc gcc-c++ glibc libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel
复制代码

3、下载php源码

下载 php-5.6.30.tar.gz

4、编译&安装

./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug  --disable-rpath --enable-inline-optimization --with-bz2  --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
make
make install 
复制代码

5、为php提供配置文件

cp php.ini-production /usr/local/php/lib/php.ini
复制代码

6、为php-fpm提供配置文件

cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
vim etc/php-fpm.conf
复制代码

修改以下内容

pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/php/var/run/php-fpm.pid 
复制代码

7、启动php-fpm

执行以下命令:

/usr/local/php/sbin/php-fpm
复制代码

使用如下命令来验证(如果此命令输出有中几个php-fpm进程就说明启动成功了):

ps aux | grep php-fpm
复制代码

0x02 安装nginx

1、安装依赖包

yum install gcc automake autoconf libtool make gcc-c++ readline readline-devel pcre pcre-devel opemssl openssl-devel zlib zlib-devel
复制代码

2、下载源码

为利于后期开发,nginx采用 openresty

3、编译&安装

./configure --prefix=/usr/local/openresty/nginx --sbin-path=/usr/local/openresty/nginx/sbin/nginx --conf-path=/usr/local/openresty/nginx/nginx.conf --pid-path=/usr/local/openresty/nginx/nginx.pid --with-http_ssl_module --with-http_flv_module --with-http_mp4_module  --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi 
make
make install
复制代码

4、nginx和php-fpm整合

编辑文件/usr/local/openresty/nginx/nginx.conf,以下内容的“#”号去掉,结果如下:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request"''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;location / {root   html;index  index.html index.htm;}location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#include        fastcgi_params;include        fastcgi.conf;}
复制代码

重新载入nginx的配置文件

/usr/local/openresty/nginx/sbin/nginx -s reload
复制代码

5、测试php文件

/usr/local/openresty/nginx/html下创建index.php文件,输入如下内容

<?phpphpinfo();
?>
复制代码

浏览器访问http://你的服务器ip/index.php,即可以见到php信息了。

非本机访问需要开启防火墙策略

firewall-cmd --zone=public --add-port=80/tcp --permanent  (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload
复制代码

0x03 mysql安装

1、下载安装包

下载 mysql-5.7.16-linux-glibc2.5-x86_64.tar

2、检查库文件是否存在,如有删除。

rpm -qa | grep mysql
mysql-libs-5.1.52-1.el6_0.1.x86_64
rpm -e mysql-libs-5.1.52.x86_64 --nodeps
复制代码

3、检查mysql组和用户是否存在,如无创建。

cat /etc/group | grep mysql
mysql:x:490:
cat /etc/passwd | grep mysql
mysql:x:496:490::/home/mysql:/bin/bash
复制代码

以上为默认存在的情况,如无,执行添加命令:

groupadd mysql
useradd -r -g mysql mysql		//useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
复制代码

4、解压TAR包,更改所属的组和用户

cd /usr/local/
tar xvf mysql-5.7.12-linux-glibc2.5-x86_64.tar
ls -l
tar xvfz mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.12-linux-glibc2.5-x86_64 mysql
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
复制代码

5、安装数据库

bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
复制代码

如果改变默认安装路径,则需要

1、/etc/my.cnf、/etc/init.d/mysqld中修改basedir='/apps/mysql'datadir='/apps/mysql/data'
2、创建ln mkdir -p /usr/local/mysql/binln -s /apps/mysql/bin/mysqld /usr/local/mysql/bin/mysqld`
复制代码

6、初始化数据库

cp -a ./support-files/my-default.cnf /etc/my.cnf
cp -a ./support-files/mysql.server  /etc/init.d/mysqld
cd bin/
./mysqld_safe --user=mysql &/etc/init.d/mysqld restart
复制代码

7、设置开机启动

chkconfig --level 35 mysqld on
复制代码

8、初始化密码

mysql5.7会生成一个初始化密码,而在之前的版本首次登陆不需要登录。

cat /root/.mysql_secret 
./mysql -uroot -p
Enter password: 
mysql> SET PASSWORD = PASSWORD('********');
mysql> flush privileges;//重启生效
/etc/init.d/mysqld restart
复制代码

0x04 添加PDO扩展

一些漏洞环境(dvwa)数据库连接改用pdo,如未安装,可在此进行安装。

在PHP源码包中进入ext/pdo_mysql,按以下步骤执行。

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
复制代码

注: 我的PHP安装在:/usr/local/php/,mysql安装在:/usr/local/mysql,编译的时候注意你自己的安装目录在哪里。

修改配置文件php.ini

打开并添加

extension=pdo_mysql.so
extension=pdo.so
复制代码

重启php-fpm

转载于:https://juejin.im/post/5c4fea8bf265da61223ab656

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring+springMvc+struts的SSH框架整合

1.建立一个web项目 2.导入SSH框架所需jar包 3.配置web.xml文件 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xsi:sc…

听说这个语言认知服务又出新功能了?

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;7分钟)语言是人类智能发展的基石。鉴于语言拥有普遍性&#xff0c;几乎没有特定的技术或 AI 技术得以颠覆整个社会。微软的使命是赋能地球上的每个人和每个组织&#xff0c;帮助他们取得更多成就。立足于该使命&#…

强大的XML

2018-04-23 20:29:26 XML&#xff1a;Extensible Markup Language&#xff0c;也就是可扩展标记语言。XML和HTML格式是古老的标记通用语言SGML的衍生语言。 XML文件是可以用来作为配置文件的&#xff0c;相比于其他配置文件的规范&#xff0c;XML的好处在于通过自定义的标记&am…

rest_framework03:查询所有/新增数据/删除一个数据/封装Response/序列化与反序列化

查询所有 1.创建新clase和url&#xff0c;避免与查询一个功能逻辑混乱。 2.增加manyTrue&#xff0c; book_serBookSerializer(books,manyTrue) urls.py: path(books/,views.BooksView.as_view()) views.py class BooksView(APIView):def get(self,request):response_msg …

如何对DevOps数据库进行源代码控制

提纲&#xff1a; 包括索引在内的数据库模式需要进行源代码控制诸如查询表这类用于控制业务逻辑的数据需要进行源代码控制开发人员需要一种能够便捷地创建本地数据库的方法共享数据库的更新只能通过构建服务器完成 健壮的DevOps环境需要对系统的每个组件进行持续集成。但是&…

自定义异常最佳实践_播放,自定义和组织媒体的最佳文章

自定义异常最佳实践Computers today are used for much more than generating documents, writing and receiving email, and surfing the web. We also use them to listen to music, watch movies and TV shows, and to transfer media to and from mobile devices. 如今&…

CSS中的路径裁剪样式clip-path

前面的话 CSS借鉴了SVG裁剪的概念&#xff0c;设置了clip-path样式&#xff0c;本文将详细介绍路径裁剪clip-path 概述 clip-path属性可以防止部分元素通过定义的剪切区域来显示&#xff0c;仅通过显示的特殊区域。剪切区域是被URL定义的路径代替行内或者外部svg&#xff0c;或…

socket编程学习笔记

socket编程&#xff1a; 1、网络基础知识 两台计算机通过网络进行通信&#xff0c;首先两台计算机要有唯一的标识&#xff0c;即唯一的IP地址。其次他们要有共同的语言用来交流即协议。再者&#xff0c;每套主机要有相应的端口号。  TCP/IP协议&#xff1a;   --TCP/IP协议是…

rest_framework04:ModelSerializer/Serializer高级用法

ModelSerializer 1.减小序列化类代码 2.不需要重写update&#xff0c;create ser.py class BookModelSerializer(serializers.ModelSerializer):class Meta:modelBookfields__all__ #序列化全部字段# fields(name,price) # 序列化指定字段# exclude(name,) # 与fields 不能…

配置本地及网络yum源(详细步骤)

我们以centos6为范例演示 1、[rootCentos6 ~]# cd /etc/yum.repos.d/ [rootCentos6 yum.repos.d]# ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repoCentOS-Debuginfo.repo CentOS-Media.repo先罗列出相关文件 2、[rootCentos6 yum.repos.d]# vim CentOS-Base.rep…

macos mojave_如何修复macOS Mojave上的模糊字体(使用亚像素抗锯齿)

macos mojaveApple’s macOS Mojave disables subpixel antialiasing, also known as font smoothing, by default. On a MacBook Air or a desktop Mac hooked up to a non-Retina display, upgrading will make your fonts look worse. 苹果的macOS Mojave默认情况下禁用子像…

为什么我要写博客

原因在这啦 一、我觉得分享是一种精神&#xff0c;分享是我的乐趣所在&#xff0c;不是说我觉得我讲得一定是对的&#xff0c;我讲得可能很多是不对的&#xff0c;但是我希望我讲的东西是我人生的体验和思考&#xff0c;是给很多人反思&#xff0c;也许给你一秒钟、半秒钟&…

一个变量命名神器:支持中文转变量名

变量命名的规范&#xff0c;对于我们编程&#xff0c;大家都知道是非常重要的&#xff0c;上次给大家推荐过一个命名辅助工具《程序员还在为变量取名苦恼&#xff0c;那是因为你不知道&#xff0c;这个变量命名神器》&#xff0c;但大家一致反馈存在2个问题&#xff1a;1、网速…

rest_framework05:GenericAPIView用法/扩展类5个/子类9个/ViewSetMixin 自定义方法名字

GenericAPIView 1.视图层类使用GenericAPIView继承&#xff0c;能简化类里的方法code。 2.简化后的方法code格式基本通用&#xff0c;简单修改即可应用到其他类。 一、class开始加入 queryset Book.objectsserializer_class BookModelSerializer 二、方法里获取对象 a.查…

1.操作系统概述

2019独角兽企业重金招聘Python工程师标准>>> 操作系统的发展过程 无操作系统的计算机系统单道批处理系统&#xff08;50年代&#xff0c;系统资源利用率低&#xff09;多道批处理系统&#xff08;60年代&#xff09;分时系统&#xff08;70年代&#xff09;实时系统…

测听hl和nhl的区别_播放NHL曲棍球的最便宜方法(无电缆)

测听hl和nhl的区别If you’re like me, you watch hockey, and…basically no other sports. You also, like me, would like to skip the cable subscription. So what’s the cheapest way to watch NHL hockey online so you can cut the cord? 如果您像我一样&#xff0c;…

制作一个让客户满意的软件

我看了《构建之法》的第八章“需求分析”我对如何制作一个让客户满意的软件有了一点儿头绪&#xff0c;的但是还是有一些迷惑。我通过看书总结和百度查找有了一点儿总结&#xff1a;我们在制作软件的过程中应该及时与用户沟通交流&#xff0c;交换意见&#xff0c;并及时实现用…

rest_framework06:自动生成路由\action使用\认证

自动生成路由 # 1.导入routers模块 from rest_framework import routers# 2.实例化类 routerrouters.SimpleRouter()# 3.注册 # (前缀,继承自ModelViewSet视图类,别名) router.register(books7,views.BooksView) # 不要加斜杠# 4.加入 urlpatternsrouter.urls action使用 装…

char data[0]在struct末尾的用法

在实际的编程中&#xff0c;我们经常需要使用变长数组&#xff0c;但是C语言并不支持变长的数组。此时&#xff0c;我们可以使用结构体的方法实现C语言变长数组。 struct MyData { int nLen; char data[0];}; 在结构中&#xff0c;data是一个数组名&#xff1b;但该数组没有元素…

使用Java实现K-Means聚类算法

2019独角兽企业重金招聘Python工程师标准>>> 关于K-Means介绍很多&#xff0c;还不清楚可以查一些相关资料。 个人对其实现步骤简单总结为4步: 1.选出k值,随机出k个起始质心点。 2.分别计算每个点和k个起始质点之间的距离,就近归类。 3.最终中心点集可以划分为…