编译安装nginx-php-mysql

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.3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013TLS SNI support enabled# 检查配置文件语法,可以防止因配置错误导致网站重启或重新加载配置等对用户的影响[root@crazy-acong nginx-1.10.3]# nginx -tnginx: the configuration file /etc/nginx/conf/nginx.conf syntax is oknginx: 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 libxml2yum -y install libxml2-devel
yum -y install opensslyum -y install openssl-develyum -y install curlyum -y install curl-develyum -y install libjpegyum -y install libjpeg-develyum -y install libpngyum -y install libpng-develyum -y install freetypeyum -y install freetype-develyum -y install pcreyum -y install pcre-develyum -y install libxsltyum -y install libxslt-develyum -y install bzip2yum -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.inicp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.confcp 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/mysqlmv 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基本的安装配置就完成了
上一篇:WebBrowser脚本错误的完美解决方案


下一篇:升级ESXi Host