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进程的最大连接数,应该小于环境设置,更要小于内存
静态文件 为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/