LNMP之Nginx、Mysql、PHP的源码安装和论坛搭建

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系

优点

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

Mysql的源码安装

安装的是 mysql-boost-5.7.17.tar.gz 这个安装包好的一点就是因为自带boost库
要用到cmake-2.8.12.2-4.el6.x86_64.rpm ,系统自带的cmake编译文件版本太低,5.7的mysql源码安装包
要2.8以上的cmake
[root@server1 mysql-5.7.17]# yum install gcc-c++ gcc -y  ##还要用到这些转译软件
[root@server1 ~]# cd /mnt/
[root@server1 mnt]# ls
cmake-2.8.12.2-4.el6.x86_64.rpm  mysql-boost-5.7.17.tar.gz
[root@server1 mnt]# tar zxf mysql-boost-5.7.17.tar.gz 
[root@server1 mnt]# ls
cmake-2.8.12.2-4.el6.x86_64.rpm  mysql-5.7.17  mysql-boost-5.7.17.tar.gz
[root@server1 mnt]# rpm -ivh cmake-2.8.12.2-4.el6.x86_64.rpm 
[root@server1 mnt]# yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm
[root@server1 mysql-5.7.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/

[root@server1 mysql-5.7.17]# make && make install

以下就是cmake的功能
1. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data \
#数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ #Unix socket 文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \
#安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装 innodb 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装 archive 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装 blackhole 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \
#安装数据库分区
-DENABLED_LOCAL_INFILE=1 \
#允许从本地导入数据
-DWITH_READLINE=1 \
#快捷键功能
-DWITH_SSL=yes \
#支持 SSL
-DDEFAULT_CHARSET=utf8 \
#使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci \
#校验字符
-DEXTRA_CHARSETS=all \
#安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \
#MySQL 监听端口

mysql的简单配置

[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# ls
bin  COPYING  docs  include  lib  man  mysql-test  README  share  support-files
[root@server1 mysql]# rpm -qa |grep mysql
mysql-libs-5.1.71-1.el6.x86_64
[root@server1 mysql]# ll /etc/my.cnf 
-rw-r--r--. 1 root root 251 Aug  9  2013 /etc/my.cnf
[root@server1 mysql]# cd support-files/
[root@server1 support-files]# ls
magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@server1 support-files]# cp my-default.cnf  /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? y
[root@server1 support-files]# vim /etc/my.cnf   这些修改没有实质性意义,主要是对库的说明
basedir = /usr/local/lnmp/mysql      ##mysql的安装路径
datadir = /usr/lcoal/lnmp/mysql/data   ##数据库所在路径
port =  3306                           ##端口
# server_id = .....
socket =  /usr/local/lnmp/mysql/data/mysql.sock   ##配置文件所在路径
[root@server1 support-files]# file mysql.server     ##有格式script知道这是一个脚本
mysql.server: POSIX shell script text executable
[root@server1 support-files]# vim mysql.server 
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld   ##将他移动到6.5默认脚本目录
[root@server1 support-files]# cd ..
[root@server1 mysql]# ls
bin  COPYING  docs  include  lib  man  mysql-test  README  share  support-files
[root@server1 mysql]# group -g 27 mysql   ##建立mysql组
-bash: group: command not found
[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql   ##建立mysql用户


[root@server1 mysql]# chown -R mysql.root .
[root@server1 mysql]# ll
total 56
drwxr-xr-x  2 mysql root  4096 Aug  5 10:32 bin
-rw-r--r--  1 mysql root 17987 Nov 28  2016 COPYING
drwxr-xr-x  2 mysql root  4096 Aug  5 10:31 docs
drwxr-xr-x  3 mysql root  4096 Aug  5 10:31 include
drwxr-xr-x  4 mysql root  4096 Aug  5 10:32 lib
drwxr-xr-x  4 mysql root  4096 Aug  5 10:31 man
drwxr-xr-x 10 mysql root  4096 Aug  5 10:32 mysql-test
-rw-r--r--  1 mysql root  2478 Nov 28  2016 README
drwxr-xr-x 28 mysql root  4096 Aug  5 10:32 share
drwxr-xr-x  2 mysql root  4096 Aug  5 10:52 support-files
环境的配置
root@server1 ~]# vim .bash_profil
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin   ##添加信息
[root@server1 ~]# source .bash_profile     ##刷新
mysql的初始化配置
root@server1 ~]# mysqld    ##使用mysqld命令可以自动补齐
mysqld         mysqld_multi   mysqld_safe    mysqldump      mysqldumpslow 

[root@server1 mysql]# mysqld --initialize --user=mysql  ##初始化

root@localhost: sLi59)ERgh7A  ##初始化成功之后会给一个密码
[root@server1 mysql]# ls   ##初始化完成之后就会生成一个数据库
bin  COPYING  data  docs  include  lib  man  mysql-test  README  share  support-files

[root@server1 mysql]# /etc/init.d/mysqld start   ##开启服务
Starting MySQL.Logging to '/usr/local/lnmp/mysql/data/server1.err'.
. SUCCESS! 
[root@server1 mysql]# /etc/init.d/mysqld stop   ##关闭服务
Shutting down MySQL.. SUCCESS! 


 [root@server1 mysql]# mysql_secure_installation   ##运行进行数据库的梗概

Enter password for user root:     ##输入你的初始化之后生成的密码
New password:                   ##新密码
Re-enter new password:      ##确定新密码
Press y|Y for Yes, any other key for No: n      ##需要密码插件吗

Change the password for root ? ((Press y|Y for Yes, any other key for No) :n   ##问你是否要改变密码
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y    ##是否不允许匿名用户访问
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : 
Remove test database and access to it? (Press y|
for Yes, any other key for No):   y ##是否生成初始化密码
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y    
success.
测试:
[root@server1 mysql]# mysql -p
Enter password: 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

PHP的源码安装

需要准备的包:
ibmcrypt-devel-2.5.8-9.el6.x86_64.rpm
libmcrypt-2.5.8-9.el6.x86_64.rpm
gd-devel-2.0.35-11.el6.x86_64.rpm
php-5.6.35.tar.bz2
re2c-0.13.5-1.el6.x86_64.rpm

[root@server1 mnt]# tar jxf php-5.6.35.tar.bz2 
[root@server1 mnt]# yum install -y libxml2-devel openssl-devel curl-devel gd-devel-2.0.35-11.el6.x86_64.rpm gmp-devel libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm net-snmp-devel  ##这些包都是在进行原码编译的时候会出现的错误解决办法
root@server1 mnt]#  rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm
warning: re2c-0.13.5-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:re2c                   ########################################### [100%]
[root@server1 php-5.6.35]# ./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-png-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-fpm-group=nginx --with-mcrypt --with-mhash

这里写图片描述

root@server1 php-5.6.35]# make && make install

这里写图片描述

PHP的简单配置
root@server1 php-5.6.35]# cd /usr/local/lnmp/php/
[root@server1 php]# ls
bin  etc  include  lib  php  sbin  var
[root@server1 php]# cd etc/
[root@server1 etc]# ls
pear.conf  php-fpm.conf.default
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf ##备份配置文件
[root@server1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default
[root@server1 etc]# cd  /mnt/php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-5.6.35]# cd -
/usr/local/lnmp/php/etc
[root@server1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@server1 etc]# vim php-fpm.conf    ##打开pid

这里写图片描述

root@server1 etc]# vim php.ini    ##修改时区

这里写图片描述

[root@server1 etc]# useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx  ##建立用户
[root@server1 php-5.6.35]# cd sapi/
[root@server1 sapi]# cd fpm/
[root@server1 fpm]# file init.d.php-fpm  ##可以查找到看出这是php的脚本
init.d.php-fpm: POSIX shell script text executable

[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm  ##将php脚本复制到脚本存放目录下
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm 
[root@server1 fpm]# /etc/init.d/php-fpm  start
Starting php-fpm  done
[root@server1 fpm]# ps -ax

Nginx的源码安装

需要准备的包

nginx-1.10.1.tar.gz
nginx-sticky-module-ng.tar.gz

[root@server1 nginx-1.10.1]# yum install -y pcre-devel
root@server1 mnt]# tar zxf nginx-1.10.1.tar.gz
[root@server1 mnt]# tar zxf nginx-sticky-module-ng.tar.gz
[root@server1 cc]# vim gcc    ##修改debug可以减小nginx安装之后的大小,节约空间
[root@server1 cc]# pwd
/mnt/nginx-1.10.1/aut

这里写图片描述

root@server1 core]# vim nginx.h   ##修改nginx的版本号及名称
[root@server1 core]# pwd
/mnt/nginx-1.10.1/src/core

这里写图片描述

root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-threads --with-file-aio
[root@server1 nginx-1.10.1]# make && make install
[root@server1 conf]# vim nginx.con

这里写图片描述
65535是每个worker进程的最大连接数,应该小于环境设置,更要小于内存

nginx的动静分离
静态文件 为html
监听端口 本地的9000端口
默认首页文件 index.php

root@server1 conf]# vim /etc/security/limits.conf   ##环境最大承载

这里写图片描述

配置环境
vim .bash_profile 
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/ngnix/sbin

source .bash_profile 
测试:
root@server1 nginx-1.10.1]# nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 nginx-1.10.1]# nginx
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/
[root@server1 nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@server1 nginx]# cd html/
[root@server1 html]# ls
50x.html  index.html
[root@server1 html]# vim index.php

这里写图片描述

这里写图片描述

论坛搭建

 Discuz_X3.2_SC_UTF8.zip    ##论坛模版
[root@server1 ~]# yum install unzip -y
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip  -d /usr/local/lnmp/nginx/html
[root@server1 ~]# cd /usr/local/lnmp/
[root@server1 lnmp]# cd nginx/
[root@server1 nginx]# ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp
[root@server1 nginx]# cd html/
[root@server1 html]# ls
50x.html  index.html  index.php  readme  upload  utility
[root@server1 html]# mv upload/ bbs
[root@server1 html]# vim /usr/local/lnmp/nginx/conf/nginx.conf

这是优先级,设置为动态优先

添加优先访问php格式(动态)
[root@server1 html]# nginx -s reload   ##刷新nginx
浏览器搭建论坛:

这里写图片描述

点我接受之后会报错:
这里写图片描述
解决方法:

[root@server1 bbs]# chmod 777 config/ data/ uc_server/ uc_client/ -R

这里写图片描述

点击下一步
这里写图片描述
设置用户及密码等基础设定

安装数据库时侯,会出现保存
这里写图片描述

解决方法:

[root@server1 bbs]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@server1 etc]# vim php.ini

这里写图片描述

root@server1 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm  done

这里写图片描述
解决方法:

[root@server1 etc]# ll /usr/local/lnmp/mysql/data/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Aug  5 11:20 /usr/local/lnmp/mysql/data/mysql.sock
[root@server1 etc]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# ls
bin      data  include  man         README  support-files
COPYING  docs  lib      mysql-test  share
[root@server1 mysql]# chmod 755 data/

这里写图片描述

猜你喜欢

转载自blog.csdn.net/a939029674/article/details/81430611