之前曾经在服务器上从头到尾搭过一次环境,但那时新手一枚,很多地方搞不定,是前辈帮忙解决的。这次独自一人在服务器上撘环境,感慨上次没有做好相关笔记,所以事后整理一下,下次再搭环境时可以轻车熟路。

一、准备
正式开始前,编译环境gcc、g++等开发库需要提前安装。nginx依赖以下模块:
gzip模块需要 zlib 库
rewrite模块需要 pcre 库
ssl 功能需要openssl库
源码目录为:/usr/local/src
1、安装make
yum -y install gcc automake autoconf libtool make
2、安装g++
yum install gcc gcc-c++
3、安装PCRE库
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42/
./configure
make && make install
出现如下报错:
make[2]: *** [install-libLTLIBRARIES] Error 1
make[2]: Leaving directory `/usr/local/src/pcre-8.42'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/usr/local/src/pcre-8.42'
make: *** [install] Error 2
权限不够,切换到root,重新make install即可。
4、安装zlib库
cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make && make install
5、安装OpenSSL库
cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -zxvf openssl-fips-2.0.16.tar.gz
cd openssl-fips-2.0.16/
./config
make && make install
6、创建用户及用户组
一般为了服务器安全,会指定一个普通用户权限的账号做为Nginx的运行角色,这里使用www用户做为Nginx工作进程的用户。后续安装的PHP也以www用户作为工作进程用户。
groupadd -r www
useradd -r -g www www
 
二、NGINX
1、下载
cd /usr/local/src
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar –zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
2、配置
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--user=www \
--group=www \
--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 \
--with-pcre=/usr/local/src/pcre-8.42 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-fips-2.0.16 \
make && make install
nginx编译选项说明:
--prefix表示nginx要安装到哪个路径下,这里指定刚才新建好的/alidata/server目录下的nginx-1.12.2;
--sbin-path表示nginx的可执行文件存放路径
--conf-path表示nginx的主配置文件存放路径,nginx允许使用不同的配置文件启动,通过命令行中的-c选项
--pid-path表示nginx.pid文件的存放路径,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid
--error-log-path表示nginx的主错误、警告、和诊断文件存放路径
--http-log-path表示nginx的主请求的HTTP服务器的日志文件的存放路径
--user表示nginx工作进程的用户
--group表示nginx工作进程的用户组
--with-select_module或--without-select_module表示启用或禁用构建一个模块来允许服务器使用select()方法
--with-poll_module或--without-poll_module表示启用或禁用构建一个模块来允许服务器使用poll()方法
--with-http_ssl_module表示使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的
--with-pcre表示pcre的源码路径,因为解压后的pcre是放在root目录下的,所以是/root/pcre-8.41;
--with-zlib表示zlib的源码路径,这里因为解压后的zlib是放在root目录下的,所以是/root/zlib-1.2.11
--with-openssl表示openssl库的源码路径
配置OK:
Configuration summary
  + using PCRE library: /usr/local/src/pcre-8.42
  + using OpenSSL library: /usr/local/src/openssl-1.1.0h
  + using zlib library: /usr/local/src/zlib-1.2.11
 
  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx"
  nginx configuration file: "/usr/local/nginx/nginx.conf"
  nginx pid file: "/usr/local/nginx/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "/var/tmp/nginx/client/"
  nginx http proxy temporary files: "/var/tmp/nginx/proxy/"
  nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"
  nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"
  nginx http scgi temporary files: "/var/tmp/nginx/scgi"
3、安装
make && make install
4、启动
/usr/local/nginx/sbin/nginx
启动时报错:
nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory)
手动创建该目录即可:mkdir -p /var/tmp/nginx/client
再次启动,打开浏览器访问此机器的IP,浏览器出现Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
5、设置软连接
ln -sf /usr/local/nginx/sbin/nginx /usr/sbin
这样就可以直接执行nginx来启动了。
6、检测nginx
nginx -t
显示:
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful
 
三、PHP
1、安装PHP需要的常用库
yum -y install 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
2、下载
cd /usr/local/src
tar -zxvf php-7.2.5.tar.gz
3、配置
./configure  --prefix=/usr/local/php \
--with-mysql=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-jis-conv \
--enable-fpm  
4、安装
make && make install
安装信息如下:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing PHP CLI binary:        /usr/local/php/bin/
Installing PHP CLI man page:      /usr/local/php/php/man/man1/
Installing PHP FPM binary:        /usr/local/php/sbin/
Installing PHP FPM defconfig:     /usr/local/php/etc/
Installing PHP FPM man page:      /usr/local/php/php/man/man8/
Installing PHP FPM status page:   /usr/local/php/php/php/fpm/
Installing phpdbg binary:         /usr/local/php/bin/
Installing phpdbg man page:       /usr/local/php/php/man/man1/
Installing PHP CGI binary:        /usr/local/php/bin/
Installing PHP CGI man page:      /usr/local/php/php/man/man1/
Installing build environment:     /usr/local/php/lib/php/build/
Installing header files:          /usr/local/php/include/php/
Installing helper programs:       /usr/local/php/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/php/lib/php/
[PEAR] Archive_Tar: upgrade to a newer version (1.4.3 is not newer than 1.4.3)
[PEAR] Console_Getopt: upgrade to a newer version (1.4.1 is not newer than 1.4.1)
[PEAR] Structures_Graph: upgrade to a newer version (1.1.1 is not newer than 1.1.1)
[PEAR] XML_Util: upgrade to a newer version (1.4.2 is not newer than 1.4.2)
[PEAR] PEAR: upgrade to a newer version (1.10.5 is not newer than 1.10.5)
/usr/local/src/php-7.2.5/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/
5、添加环境变量
vim /etc/profile  
在末尾加入  
export PHP_HOME=/usr/local/php
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin
保存修改后,使用source命令重新加载配置文件:
source /etc/profile  
查看环境变量:
echo $PATH
6、配置php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d/
cp www.conf.default www.conf
使用vim命令对php-fpm.conf的内容进行如下修改:
pid = /usr/local/php/var/run/php-fpm.pid
使用vim命令对php-fpm.conf的内容进行如下修改:
user = www
group = www
其他配置可根据需求进行修改,比如pm.max_children(php-fpm 能启动的子进程的最大数量)、pm.start_servers(php启动时,开启的子进程的数量)、pm.min_spare_servers(动态方式空闲状态下的最小php-fpm进程数量)、pm.max_spare_servers(动态方式空闲状态下的最大php-fpm进程数量)等。
7、启动php-fpm
/usr/local/php/sbin/php-fpm
可以通过ps aux | grep php查看php进程。
 
三、MySQL
1、下载
我是从https://dev.mysql.com/downloads/repo/yum/下载MySQL官方的Yum Repository并上传到服务器上的。
2、yum安装
yum -y install mysql80-community-release-el7-1.noarch.rpm
3、安装MySQL服务器
yum -y install mysql-community-server
出现:
Installed:
  mysql-community-libs.x86_64 0:8.0.11-1.el7                          mysql-community-libs-compat.x86_64 0:8.0.11-1.el7                          mysql-community-server.x86_64 0:8.0.11-1.el7                        
 
Dependency Installed:
  mysql-community-client.x86_64 0:8.0.11-1.el7                                                              mysql-community-common.x86_64 0:8.0.11-1.el7                                                            
 
Replaced:
  mariadb-libs.x86_64 1:5.5.56-2.el7                                                                                                                                                                                 
 
Complete!
MySQL就安装完成了。
4、为MySQL添加用户及组
groupadd mysql
useradd -r -g www mysql
5、启动MySQL
systemctl start mysqld.service
执行systemctl status mysqld.service查看MySQL运行状态,可以看到绿色的active(running):
6、进入MySQL
要想进入MySQL还得先找出root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
将这个初始密码复制后,执行如下命令进入数据库:
mysql -uroot -p
7、修改密码
进入数据库后执行其他操作会要求你修改初始密码。所以第一件事就是修改初始密码,但是因为设置的密码太简单,报错:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password’;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这和MySQL的密码设置的规范有关,直接用网上给的命令去修改validate_password_policy参数的值,报错:
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
几番折腾,都不知道问题出在哪里了,想使用命令查看初始密码规则,还看不了,因为会要求你先修改初始密码:
mysql> SHOW VARIABLES LIKE 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
最后的解决方法是,我先设置了一个复杂的密码,再用show命令查看密码规则,这才发现mysql8的设置和以前不一样了,参数的下划线变成圆点了。
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
执行如下命令:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
就可以将密码改为类似于123456的简单密码了。
 
四、Nginx+PHP整合
修改/usr/local/nginx/nginx.conf:
添加红色文字内容
location / {
    root   html;
    index  index.php index.html index.htm;
}
去掉注释、修改inclue
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的配置文件
nginx -s reload
在/usr/local/nginx/html下创建index.php文件,输入如下内容:
<?php
    phpinfo();
浏览器访问http://ip/test.php即可看到php信息。
 
五、待解决的问题
搭完环境后,还按着网上教程为Nginx、PHP、MySQL设置了开机自启动。但是:
1、Nginx虽然设置成功了,然而stop后,nginx进程依然存在,此问题没有得到解决;
2、yum安装的mysql找不到mysql.server,无法copy到/etc/init.d/下。
后面再专门研究下开机自启动。

Centos7安装Nginx+PHP+MySQL的更多相关文章

  1. centOS7 安装nginx+php+mysql

    nginx安装 本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好. 安装make: yum -y install gcc automa ...

  2. CentOS7安装Nginx、MySQL、PHP

    之前才网上找了好多文章,但是配置总会出错,后来傻傻的发现官方文档都有的,当然配合网上文章说明更好,因此本文只说一个大概 安装PHP 官方配置 配置用户和用户组,需要有根目录权限 vim /usr/lo ...

  3. Linux--YUM 安装 nginx php mysql

    Linux--YUM 安装 nginx php mysql (2011-11-13 11:27:14) 转载▼ 标签: 杂谈 分类: Linux 1.先新建一个 repo # vi /etc/yum. ...

  4. linux(centos7) 安装nginx

    linux(centos7) 安装nginx 1.14(stable) 版本 Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内, ...

  5. ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境

    1.Ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境 http://blog.db89.org/ubuntu12-04-install-nginx-php-m ...

  6. Linux 环境下安装 Nginx+php+mysql 开发环境

    一直以来都没有养成记录学习的好习惯,我想从这么一天开始,把自己学习和工作中的经验和坑都记录下来.等到以后老的时候还有可以回忆的地方. 最近在学习linux,虽然已经玩linux很久了,但是没有怎么用心 ...

  7. 【Nginx安装】CentOS7安装Nginx及配置

    [Nginx安装]CentOS7安装Nginx及配置 2018年03月05日 11:07:21 阅读数:7073 Nginx是一款轻量级的网页服务器.反向代理服务器.相较于Apache.lighttp ...

  8. 今天用pro安装nginx+php+mysql出现故障的解决方法

    今天用pro安装nginx+php+mysql出现故障的解决方法 by 伍雪颖 dyld: Library not loaded: @@HOMEBREW_CELLAR@@/openssl/1.0.1h ...

  9. VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法

    VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法 在linux上安装nginx 请参考:Linux Centos7 安装 nginx 在虚拟机centos7上安装nginx之 ...

随机推荐

  1. php 当前日期加一天和指定日期加一天

    1.给当前时间加一天?一小时? <?phpecho "今天:",date('Y-m-d H:i:s'),"<br>";echo "明 ...

  2. 解决mysql连接报“Communications link failure”错误

    <!--定义在从数据库获取新连接失败后重复尝试的次数.默认值: 30 :小于等于0表示无限次--> <property name="acquireRetryAttempts ...

  3. Web Deploy 发布网站错误 检查授权和委派设置

    Web Deploy发布ASP.NET网站给我们提供方便,配置好后可以很方便地发布网站到IIS服务器. 自安装Web Deploy一年以来,一直都用得好好地. 直到最近,Gitlab-CI自动发布出了 ...

  4. IDEA Failed to load dx.jar

    IDEA-177053 Android app crashes on build "Failed to load dx.jar" Error:Android Pre Dex: [c ...

  5. 安卓入门——————简单记账本的开发(二)-点击listview跳转并实现数据的更新

    前言:   这个博客主要实现listview的跳转并实现对数据库内容的更新并显示到listview上,还没有实现listview的实时更新和listview具体线条的添加(接下来的几篇博客会实现),如 ...

  6. ASCII对应码表-键值(完整版)

    ASCII对应码表-键值(完整版) Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字 ...

  7. Configuring VNC Server on Linux

    linux安装oracle时,需用图形化界面安装.所以可采取下列的工具辅助安装 sysvinit (Original Method) systemd (New Method) VNC Clients ...

  8. 主成分分析 SPSS、python实例分析

    今天,在西瓜书上看到了主成分分析法,之前建模有接触过但是理解不够深刻,今天再次和这一位老朋友聊聊. 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通 ...

  9. Python下关于RSA解密模块的使用

    最近筹备一场CTF比赛发现了一道关于RSA解密的题如下: #小明得到了一个 RSA 加密信息,你能帮他解开吗? n = 4106906565495961459775020773869808579876 ...

  10. MySQL中select、insert、update批量操作语句

    项目中经常的需要使用批量操作语句对数据进行操作,使用批量语句的时候需要注意MySQL数据库的条件限制,这里主要是数据的大小限制,这里对批量插入.批量查找及批量更新的基础操作进行下简单的汇总. 1.批量 ...