编译安装nginx-php-mysql

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: nginx安装前准备安装编译环境 yum -y install gcc gcc-c++ wget yum -y install zlib zlib-devel openssl openssl-devel pcre ...
nginx
安装前准备
安装编译环境 
yum -y install gcc gcc-c++ wget yum -y install zlib zlib-devel openssl openssl -devel pcre pcre-devel
yum -y install automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed

# 创建 nginx 用户useradd nginx -s /sbin/nologin -M

#下载安装包
wget http: //nginx.org/download/nginx-1.10.3.tar.gz
#解压 tar -zxf nginx- 1.10 . 3 . tar .gz cd nginx- 1.10 . 3

#配置安装参数
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/sbin/nginx \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module

#安装 make
make install
ln -s /usr/local/nginx /etc/nginx
# 使用 nginx -V 可以查看编译是的参数[root@crazy-acong ~]# /etc/nginx/sbin/nginx -Vnginx version: nginx/ 1.10 . 3 built by gcc 4.4 . 7 20120313 (Red Hat 4.4 . 7 - 11 ) (GCC) built with OpenSSL 1.0 .1e-fips 11 Feb 2013 TLS SNI support enabled# 检查配置文件语法,可以防止因配置错误导致网站重启或重新加载配置等对用户的影响[root@crazy-acong nginx- 1.10 . 3 ]# nginx -tnginx: the configuration file /etc/nginx/ conf/nginx.conf syntax is ok nginx: configuration file /etc/nginx/ conf/nginx.conf test is successful
启动nginx
/usr/local/sbin/nginx

用ps aux来查看nginx是否启动
ps aux|grep nginx

然后配置服务
vim /usr/lib/systemd/system/nginx.service

按i输入以下内容
[Unit]
Description=nginx - high performance web server 
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/sbin/nginx -t -c /etc/nginx/conf/nginx.conf
ExecStart=/usr/local/sbin/nginx -c /etc/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=trusys

[Install]
WantedBy=multi-user.target

编辑好后保存
然后开启开机启动
systemctl enable nginx.service

用命令关掉nginx
pkill -9 nginx

后面可以用systemctl来操作nginx.service
systemctl start nginx.service

然后php装好后更改配置  编辑/etc/nginx/nginx.conf

安装php
下载对应的版本

yum -y install libxml2 yum -y install libxml2-devel
yum -y install openssl yum -y install openssl-devel yum -y install curl yum -y install curl-devel yum -y install libjpeg yum -y install libjpeg-devel yum -y install libpng yum -y install libpng-devel yum -y install freetype yum -y install freetype-devel yum -y install pcre yum -y install pcre-devel yum -y install libxslt yum -y install libxslt-devel yum -y install bzip2 yum -y install bzip2 -devel


./configure \
--prefix=/usr/local/php \
--with-curl \
--with-freetype- dir \
--with-gd \
--with-gettext \
--with-iconv- dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml- dir \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png- dir \
--with-jpeg- dir \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-bz2 \
--with-mhash \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
-enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable- zip \
--enable-opcache #5.5 以上版本

  实际上这里的配置项比上述还多,可以使用  ./configure --help  命令查看所有选项,这里注意在php7中--with-mysql原生支持已经不存在了,操作都变成mysqli或者pdo了;以上这些选项在正常的php开发中完全够用了,后期如果需要,可以选择手动开启相应的模块
  然后执行编译:
make
  编译时间可能会有点长,编译完成之后,执行安装:
make install
  php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件:
cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
  然后设置php.ini,使用:  vim /usr/local/php/lib/php.ini  打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0
  
  设置完毕保存并退出
  另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意
 如果此时随便在一个位置添加,那么接下来启动php-fpm的时候,会报目录找不到的错误,所以不要在php-fpm.conf中添加用户和组,这个时候翻到php-fpm.conf最后一行会发现如下内容(如果编译时添加--prefix选项以下位置会自动补全,默认是下面是空的,要注意):
  
  这里引入了php-fpm.d目录下所有的conf配置文件,但是NONE需要修改为我们的实际目录:/usr/local
  
  默认情况下etc/php-fpm.d/下有一个名为www.conf.defalut的配置用户的文件,执行下面命令复制一个新文件并且打开:
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.confvim /usr/local/php/etc/php-fpm.d/www.conf
  默认user和group的设置为nobody,将其改为www-data
  
  修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:
/usr/local/bin/php-fpm
 修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:
/usr/local/bin/php-fpm
  启动完毕之后,php-fpm服务默认使用9000端口,使用  netstat -tln |  grep   9000  可以查看端口使用情况:
  
  9000端口正常使用,说明php-fpm服务启动成功
  然后执行  vim /usr/local/nginx/conf/nginx.conf  编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:
  
  然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:
  
  这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
  修改完上面的,回到nginx.conf第一行,默认是#user nobody;  这里要去掉注释改为user nginx;或者user nginx nginx;表示nginx服务器的权限为nginx
  修改完这些保存并退出,然后重启nginx:
/usr/local/nginx/nginx -s stop/usr/local/nginx/nginx
安装mysql
http://mirrors.sohu.com/ 这也可以下载
  yum  -y  install   perl -Module-Install.noarch
:http://www.mysql.com/downloads/,页面最上面是企业版,一般个人或者企业使用社区版就足够了,页面拉到最下方可以看到下载入口:
  
  点击链接进入,然后选择第一项进入:
  
  这里默认是5.7.11的版本,我们选择5.6的下载链接进入:
  
  进入后,默认版本就是5.6.19,对于版本这里选择Linux - Generic,也就是通用的二进制版本
  
  然后上面都是RPM的包,我们拉到页面最下方根据操作系统位数选择.tar.gz的包,这里选择64位的mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
  

 释放归档文件:  tar  -xvzf mysql- 5.6 . 29 -linux-glibc2. 5 -x86_64. tar .gz   
  建立mysql目录并移动至安装目录:
mkdir /usr/local/mysql mv mysql- 5.6 . 29 -linux-glibc2. 5 -x86_64/* /usr/local/mysql/cd /usr/local/mysql/ 要注意,因为系统可能默认存在/etc/my.cnf
所以一般需要执行 
cp  support-files/my-small.cnf /etc/my.cnf
 覆盖原有的my.cnf,并且在里面[mysqld]下面添加basedir为我们要安装的mysql目录
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
接下来创建mysql用户和用户组:
groupadd mysqluseradd -r -g mysql -s /sbin/nologin -M mysql
  修改当前目录权限为mysql权限:
chown -R mysql:mysql .
  执行安装:  ./scripts/mysql_install_db --user=mysql  
上一步安装失败,提示FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper的话,那么原因是缺少perl-module,那么执行命令:  yum  -y  install   perl -Module-Install.noarch  安装perl-module模块,需要下载安装98个包,这个要耐心等待一会,等待perl-module安装成功之后,再继续执行上一步安装
然后建立mariadb的日志目录,否则下一步会报错,使用命令:  mkdir  /var/log/mysql  
  然后执行mysql安全启动脚本:  bin/mysqld_safe --user=mysql &  执行后,再按一下回车回到命令行,没报错则启动成功
  最后将mysql添加到系统服务:
1、将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
chmod +x /etc/init.d/mysqld
3、添加服务
chkconfig --add mysqld
4、显示服务列表
chkconfig --list
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level 345 mysql on
service mysqld start #就可以启动mysql

ln -s /usr/local/mysql/ bin/mysql  /usr/local/sbin
mysql -uroot -p
进入mysql交互界面,如果这里出现mysql.sock错误的提示,继续编辑/etc/my.cnf文件,修改其中的socket属性为:/tmp/mysql.sock即可,或者注释默认即可,保存并退出;另一种方法推荐在/tmp下做软链接,将my.cnf配置文件中配置的socket位置链到提示错误的mysql.sock位置,命令是:  ln  -s /var/lib/mysql/mysql.sock /tmp/mysql.sock  ;解决之后再次进入mysql交互界面就可以了
  
  输入  quit  可以退出交互界面,mysql初始密码为空,可以使用mysqladmin为mysql服务器设置一个密码:
bin/mysqladmin -u root password 'Aa7410852'
  
   mysql -uroot -p  回车后继续输入密码即可登录mysql
  如果后续需要修改密码,因为mysql数据库密码是存放在mysql的一个数据库中的user表中,那么可以通过SQL语句实现,首先登录mysql数据库在mysql提示符中进行如下操作即可修改密码:
mysql> USE mysql;mysql> UPDATE user SET Password=PASSWORD( 'newpass' ) WHERE User = 'root' ;mysql> FLUSH PRIVILEGES;
  通过以上3步即可修改为你想要的密码,并且下次立即生效,现在数据库在本地就可以正常使用了,
  后来可以把mysql添加至环境变量中,便于直接输入mysql进入,不用加路径了,这个是可选的,根据自己的需要即可
  现在还要注意一个问题,虽然通过命令行可以进入了,但是我们从其他主机编写的程序是无法连接到这台服务器的,在生产环境中这样肯定是不行的,所以我们要对所有主机开放授权,这样才可以正常访问,首先我们登录mysql,然后执行下面命令可以给所有主机开放root用户的授权:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' IDENTIFIED BY 'setpassword' WITH GRANT OPTION;mysql> FLUSH PRIVILEGES;
  第一行指令的%代表所有主机来源,setpassword可以设置和本地mysql不同的密码,当然一般情况下相同即可,执行完上面的指令后mysql就可以从外网立即连接了,到这里mysql基本的安装配置就完成了
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
开发框架 应用服务中间件 PHP
Mac Nginx 关联 php 详细配置以及常见错误
Mac Nginx 关联 php 详细配置以及常见错误
141 1
|
8月前
|
运维 监控 应用服务中间件
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
147 0
|
8月前
|
缓存 前端开发 JavaScript
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
212 0
|
网络协议 应用服务中间件 PHP
PHP和nginx是什么关系?是如何交互的?底层原理是什么?
PHP和nginx是什么关系?是如何交互的?底层原理是什么?
476 0
|
网络协议 NoSQL 关系型数据库
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
1917 0
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
|
22天前
|
应用服务中间件 Linux PHP
Linux下安装php环境并且配置Nginx支持php-fpm模块
Linux下安装php环境并且配置Nginx支持php-fpm模块
18 0
|
8月前
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
111 0
|
8月前
|
运维 关系型数据库 MySQL
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
202 0
|
8月前
|
消息中间件 NoSQL 关系型数据库
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
103 0
|
4月前
|
NoSQL 关系型数据库 应用服务中间件
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
88 0