LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
[root@server1 ~]# ls
mysql-boost-5.7.11.tar.gz cmake-2.8.12.2-4.el6.x86_64.rpm
[root@server1 ~]# tar zxf mysql-boost-5.7.11.tar.gz
[root@server1 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y
##cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
[root@server1 ~]# cd mysql-5.7.11/
[root@server1 mysql-5.7.11]# yum install -y gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \指定mysql的安装位置
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \数据库中数据存放的目录
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \链接数据库的SOCKET文件
-DWITH_MYISAM_STORAGE_ENGINE=1 \ 安装MYISAM存储引擎
-DENABLED_LOCAL_INFILE=1 \ 允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1 \ 安装分区存储引擎
-DWITH_SSL=yes \ 支持SSL加密
-DDEFAULT_CHARSET=utf8 \ 使用UTF-8字符编码
-DDEFAULT_COLLATION=utf8_general_ci \ 校验字符
-DEXTRA_CHARSETS=all \ 安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \ MYSQL监听端口
[root@server1 mysql-5.7.11]# make
[root@server1 mysql-5.7.11]# make install
如果出错,需要重新编译时,需要根据提示删除缓存信息。
[root@server1 mysql-5.7.11]# rm -f CMakeCache.txt
<1 > 将编译完成的默认配置文件放在/etc下
[root@server1 mysql-5.7.11]# cd /usr/local/lnmp/mysql/support-files/
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf ##cp到系统默认配置文件目录/etc
<2> 配置mysql服务
[root@server1 support-files]# vim /etc/my.cnf
# These are commonly set, remove the # and set as required.
basedir = /usr/local/lnmp/mysql # mysql的安装目录
datadir = /usr/local/lnmp/mysql/data # mysql数据存放位置
port = 3306 # mysql服务对外端口
# server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock # mysql与外界联系的套接字文件位置
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld
<4> 对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中
groupadd -g 27 mysql ##建立一个mysql组,组id为27
useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql
# 指定mysql用户的家目录为/sbin/nologin 为了系统安全,MYSQL默认使用mysql用户来运行相关程序。
<5> 将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令
vim /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin ##把mysql的对应的命令脚本添加到环境变量中
source .bash_profile
## 也可以使用软链接的方式添加环境变量 (ln -s /usr/local/lnmp/mysql/bin/* /usr/local/sbin/)
<6> 启动mysql
[root@server1 ~]# /etc/init.d/mysqld start
[root@server1 ~]# mysql -p
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2
yum install libxml2-devel openssl-devel curl-devel libjpeg-turbo-devel libpng-devel freetype-devel gmp-devel net-snmp-devel bison libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm -y
./configure --prefix=/usr/local/lnmp/php # php安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc # php配置文件所在的位置
--with-mysql=mysqlnd
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd # 支持与mysql数据库之间建立联系
--with-openssl # 支持openssl加密
--with-snmp
--with-gd
--with-zlib
--with-curl
--with-libxml-dir #支持 libxml 函数
--with-png-dir --with-jpeg-dir --with-freetype-dir # php处理图片的格式
--with-pear -
--with-gmp
--enable-inline-optimization
--enable-soap
--enable-ftp
--enable-sockets
--enable-mbstring
--enable-fpm # 开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx # 对PHP服务的限制通过nginx用户来实现
--with-fpm-group=nginx # PHP以nginx用户组身份运行
--with-mcrypt # 提供了对多种块算法的支持 主要用来实现加密等算法
--with-mhash # 加密算法
[root@server1 php-5.6.35]# make && make install
[root@server1 php-5.6.35]# cd /usr/local/lnmp/php/etc
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# vim php-fpm.conf
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx
cd php-5.6.35/sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm # init.d.php-fpm是编译完成的启动脚本
chmod +x /etc/init.d/php-fpm #给脚本加上可执行权限
/etc/init.d/php-fpm start #打开php服务
netstat -antlp # 查看php服务的监听端口
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz
[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip # 带有sticky模块的nginx包
[root@server1 ~]# cd nginx-1.10.1/src/core
vim nginx.h ##去掉nginx的版本号
[root@server1 ~]# cd nginx-1.10.1/auto/cc
vim gcc ##注释debug,为了安全考虑
[root@server1 nginx-1.10.1 ]# ./configure --prefix=/usr/local/lnmp/nginx # nginx的安装路径
--with-http_ssl_module # 支持https
--with-http_stub_status_module
--with-threads # 支持线程并发
--user=nginx
--group=nginx # 运行在nginx用户和nginx组
--with-file-aio
--add-module
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
events {
worker_connections 65535;
}
[root@server1 conf]# vim /etc/security/limits.conf
nginx - nofile 65536
[root@server1 ~ ]# vim /usr/local/lnmp/nginx/conf/nginx.conf
第一行加上运行用户,第13行加上最大文件数
第65---71行,去掉注释 # 将nginx与php结合起来
vim /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin
source /root/.bash_profile # 重新加载/root/.bash_profile文件
nginx -t # 检测配置文件是否有错
nginx # 打开nginx服务
cd /usr/local/lnmp/nginx/html/
vim index.php
如果向直接访问php页面则:加入index.php
[root@server1 conf]# vim nginx.conf
45 index index.php index.html index.htm;
[root@server1 conf]# nginx -s reload
php和nginx结合成功!编译到此结束…
对于会出现的问题先解决了…
[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/nginx/html/
[root@server1 html]# mv upload/ bbs ##改名为bbs
[root@server1 html]# cd bbs/
[root@server1 bbs]# chmod 777 config/ data/ uc_server/ uc_client/ -R
[root@server1 ~]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini
# 加入scoket路径 /usr/local/lnmp/mysql/data/mysql.sock 【总共三处需要填写】
[root@server1 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm done
[root@server1 mysql]# pwd
/usr/local/lnmp/mysql
[root@server1 mysql]# chmod 755 data/