一、LNMP
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
工作原理:
1. 客户端的所有页面请求先到达lnmp结构中的Nginx
2. Nginx对客户端的请求进行判断,如果是静态请求,则直接处理并返回给客户端;如果是动态的请求,则分析是php的请求还是jsp的请求,其中php的请求调用php中间件(fastcgi)进行处理,jsp的请求交给jsp的中间件(tomcat)进行处理。
3. 动态页面通过中间件和数据库的联合使用,将用户请求进行处理,处理后通过nginx将结果返回给用户。
二、Php
在做实验之前,要注意,我们的内存尽量设置大一点(这里我设置了20G),如果内存较小,软件编译时会因为内存不够而报错
1. php的编译安装
(1)下载 php-5.6.35.tar.bz2压缩包
(2)解压软件,创建目录
tar jxf php-5.6.35.tar.bz2
mkdir /usr/local/lnmp
(3)安装依赖软件
yum install -y
gcc pcre-devel zlib-devel libxml2-devel openssl-devel libcurl-devel
libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libpng-devel-1.2.49-1.el6_2.x86_64
freetype-devel.x86_64 gmp-devel-4.3.1-7.el6_2.2.x86_64
openldap-devel-2.4.23-32.el6_4.1.x86_64
libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
net-snmp-devel
(4)编译
cd php-5.6.35
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc \
--with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir \
--with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear \
--enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd --enalbe-inline-optimization --enable-soap --enable-ftp --enable-sockets \
--enable-mbstring --enable-fpm --with-fpm-user=nginx \
--with-fpm-group=nginx --with-mcrypt --with-mhash
如果编译出现问题,可以看到最后一行的报错信息,安装相应的依赖软件,编译就可以成功完成
(5)安装php
make && make install
2. php相关设置
(1)创建用户
useradd nginx
(2)模板文件的复制
复制配置文件
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf #查看用户和用户组是否是nginx
初始化文件的复制
cd php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini #修改时区
date.timezone = Asia/Shanghai
启动脚本的复制
cd php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
netstat -tnlp #查看9000端口是否打开
三、Nginx
1. 下载nginx软件,并解压
nginx-1.16.0.tar.gz
tar zxf nginx-1.16.0.tar.gz
2. 编译和安装
cd nginx-1.16.0
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module \
--with-http_stub_status_module --with-threads --with-file-aio \
--user=nginx --group=nginx
make && make install
3. 修改配置文件
cd /usr/local/lnmp/nginx/
vim conf/nginx
location / { #添加php默认发布页面
root html;
index index.php index.html index.htm;
}
location ~ \.php$ { #打开php配置
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
4. 创建软链接,写默认发布文件
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin #建立软连接
# php默认发布文件
vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
nginx #开启nginx
nginx -t #检验是否有语法错误
5. 测试
输入http://172.25.65.1,查看是否能够看到默认发布页面的内容
四、Mysql
(一)mysql的安装
1. 内存和cpu的设置
在虚拟机管理器中设置server1的cpu为2个,memory为2048
2. 安装依赖软件
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm gcc-c++ ncurses-devel bison
3. 解压mysql和编译
tar zxf mysql-boost-5.7.17.tar.gz
cd 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/
在编译时如果出现依赖性错误,我们可以安装依赖性软件,再使用【rm -fr CMakeCache.txt】命令,删除编译缓存,然后再次进行编译。
4. 安装
该过程比较长,需要耐心等待
make && make install
编译安装完毕后,接下来我们开始进行myspl的配置
(二)配置mysql
1. 启动脚本的复制
cd mysql-5.7.17/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
2. 修改配置文件
cp /etc/my.cnf /etc/my.cnf.bak #备份
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
3. 生成data目录,修改环境变量
groupadd -g 27 mysql
useradd -u 27 -g 27 mysql
chown mysql.mysql /usr/local/lnmp/mysql -R
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile
4. 初始化
mysqld --user=mysql --initialize #会生成一个密码
chown root /usr/local/lnmp/mysql -R #改回用户所有人(安全)
chown mysql /usr/local/lnmp/mysql/data -R
5. 开启mysql,进行安全初始化
/etc/init.d/mysqld start
mysql_secure_installation #两次n,四次y
6. 开启相关服务,登录mysql
netstat -tnlp #查看端口是否开启
nginx
/etc/init.d/php-fpm start
mysql -uroot -pwestos #登录mysql
五、使用LNMP架构部署论坛
1. 下载论坛压缩包及解压软件unzip
Discuz_X3.2_SC_UTF8.zip
yum install -y unzip
2. 将压缩包解压到指定目录
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html
3. 在网页中进行安装http://172.25.65.1/upload
4. 给文件加权限(解决不可写问题)
cd /usr/local/lnmp/nginx/html
chmod 777 config data -R
chmod 777 uc_* -R
4. 设置运行环境。选择全新安装
5. 安装数据库
(1)解决找不到文件或目录
cd /usr/local/lnmp/php/etc
vim php.ini
1013 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1162 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
1221 mysqli.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
/etc/init.d/php-fpm reload
(2)解决权限不允许问题
chmod 755 /usr/local/lnmp/mysql/data
6. 开始安装,进入软件,并登录
输入验证码,进入管理中心
7. 根据提示,将文件删除
/usr/local/lnmp/nginx/html/upload/install
rm -fr index.php
8.测试
在Discuz中添加用户信息,在数据库中查看是否有该用户
使用【mysql -uroot -p】进入数据库,查询用户信息