LNMP动态网站架构及web应用部署,搭建discuz论坛
Posted 南风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP动态网站架构及web应用部署,搭建discuz论坛相关的知识,希望对你有一定的参考价值。
1)部署nginx
实验tar安装包可找本人拿记得点+关注,感谢亲们支持,评论拿包
systemctl stop firewalld
iptables -F
setenforce 0
1)安装支持软件
yum -y install pcre-devel zlib-devel openssl-devel
2)创建运行用户,组
useradd -M -s /sbin/nologin nginx
3)编译安装nglinx
tar xf nglix-1.14.2.tar.gz -C /usr/src
4)配置编译
cd /usr/src/nginx-1.14.2
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
--with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install
为了使nginx服务器运行方便,可以为主程序nginx 创建链接文件,以便管理员直接执行nginx命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin
ll /usr/local/bin/nginx
5)nginx运行控制
nginx -t 检测语法
6)启动,停止nginx,如果服务器中已安装有httpd等其他web 服务软件,应关闭避免冲突
netstat -anpt |grep :80
nginx
netstat -anpt |grep :80
查看httpd:192.168.30.22窗口
welocome to nginx!
killall -s HUP nginx 重载配置
killall -s QULT nginx 退出进程
killall -9 可忽略
netstat -anpt |grep :80
为了更好管理nginx进程写个脚本并使用chkconfig工具来进行管理
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:2345 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage:$0{start|stop|restart|reload}"
exit 1
esac
exit 0
netstat -anpt |grep :80
给上权限
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
chkconfig --list nginx
然后测试脚本
/etc/init.d/nginx stop
netstat -anpt |grep :80
/etc/init.d/nginx start
netstat -anpt |grep :80
在http{}配置的server{} 子配置文件内添加如下配置项
vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
}
systemctl restart nginx
浏览器访问http://192.168.30.22/status
虚拟主机应用
mkdir /usr/local/nginx/html/zc
mkdir /usr/local/nginx/html/cloud
echo "<h1>www.zc.com</h1>"> /usr/local/nginx/html/zc/index.html
echo "<h1>www.cloud.com</h1>" > /usr/local/nginx/html/cloud/index.html
vim /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main \'$remote_addr - $remote_user [$time_local] "$request" \'
\'$status $body_bytes_sent "$http_referer" \'
\'"$http_user_agent" "$http_x_forwarded_for"\';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.zc.com;
charset utf-8;
access_log logs/zc.access.log main;
location / {
root html/zc;
index index.html index.htm;
}
}
server {
listen 81;
server_name www.cloud.com;
charset utf-8;
access_log logs/cloud.access.log main;
location / {
root html/cloud;
index index.html index.html;
}
}
}
systemctl restart nginx
vim /etc/hosts
192.168.30.24 www.zc.com
192.168.30.24 www.cloud.com
虚拟主机访问测试 elinks 命令需要yum -y install elinks安装
elinks --dump http://www.zc.com
elinks --dump http://www.cloud.com
http://192.168.30.24
2)部署mysql 数据库
1)安装mysql 数据库
1)基于源码包安装mysql
rpm -q mysql mysql-server
ncurses-deve1 是cmake的依赖包
yum -y install ncurses-devel
rpm -q ncurses-dever
安装配置工具cmake
tar xf cmake-3.13.1.tar.gz -C /usr/src
cd /usr/src/cmake-3.13.1
./configure && gmake && gmake install
建议采用yum安装方式
yum -y install cmake
rpm -q cmake
创建运行 用户
useradd -M -s /sbin/nologin mysql
解包,配置,编译,安装
tar xf mysql-5.7.24.tar.gz -C /usr/src
cd /usr/src/mysql-5.7.24
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install
出现错误然后解决
mkdir /usr/local/boost
cd /usr/local/boost 把包复制到这个目录
tar xf boost_1_59_0.tar.gz
cd /usr/src/mysql-5.7.24
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITH_BOOST=/usr/local/boost && make && make install
2)安装后的调整
cd /usr/local/mysql
chown -R mysql:mysql ./
建立配置文件
vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
3)初始化数据库
./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
4)设置环境变量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile
5)添加系统服务
cd /usr/src/mysql-5.7.24
cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh
chmod +x /usr/local/mysql/bin/mysqld.sh
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
PLDFile=/usr/local/mysql/data/localhost.pid
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop
[lnstall]
WantedBy=mutil-user.target
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
netstat -lnpt |grep mysqld
后期修改数据库用户的密码
systemctl stop mysqld
vim /etc/my.cnf
添加skip-grant-tables
启动服务systemctl start mysqld
mysql -uroot -p
mysql> use mysql;
mysql> update mysql.user set authentication_string=password("123456789") where user=\'root\';
mysql> flush privileges;
mysql> exit
关闭服务,systemctl stop mysqld
把skip-grant-tables加#注释或删除
systemctl restart mysqld 启动服务
mysql -uroot -p进去密码已修改为123456789
此命令可以在在以后修改时生效 mysqladmin -u root -p\'123456789\' password \'012345678\'
3)安装php 解析环境
1)编译安装php
yum -y install gd libxml2-devel libjpeg-devel libpng-devel
tar xf php-5.6.39.tar.gz -C /usr/src
cd /usr/src/php-5.6.39
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/lcoal/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
2)安装后调整
cp php.ini-production /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin
3)安装zendguardlander 注意,若是64位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错
tar xf zend-loader-php5.6-linux-x86_64_ipdate1.tar.gz -C /usr/src
cd /usr/src/zend-loader-php5.6-linux-x86-64
cp ZendGuardLoader.so /usr/local/php5/lib/php
vim /usr/local/php5/php.ini
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
3,配置nginx 支持PHP环境
若要让Nginx能够解析PHP网页,有两种方法可以选择,其一:Nginx充当中介,将访问PHP页面的web
请求转交给其他服务器(lnmp)去处理,其二: 通过使用PHP的FPM模块来调用本机的PHP环境。
如果选用FPM 方式,则需要先启动PHP-FPM 进程,以便监听PHP解析请求,参考范例,建立php-fpm.conf
配置文件,并修改其中的pid文件,运行用户,服务数等相关设置,然后启动PHP-FPM程序即可
cd /usr/local/php5/etc
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
vim php-fpm.conf
25 pid = run/php-fpm.pid //确认pid文件位置
149 user = php //运行用户
150 group = php //运行组
246 pm.start_servers = 20 //启动时开启的进程数
251 pm.min_spare_server = 5 //最少空闲进程数
256 pm.max_spare_servers = 35 //最大空闲进程数
241 pm.max_children = 50 //最多空闲进程数
/usr/local/sbin/php-fpm
netstat -anpt |grep php-fpm
在Php-fpm.conf文件中,pid配置行指出了pid信息的存放位置,对应的实际路径为/usr/local/php5/var/run/php-fpm.pid
根据上述信息,可以修改Nginx服务脚本,以便在启动/停止nginx服务器时将PHP-fpm进程也自动启动/停止
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:2345 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
start)
$PROG
$PROG_FPM
;;
stop)
kill -s QUIT $(cat $PIDF)
kill -s QUIT $(cat $PIDF_FPM)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage:$0{start|stop|restart|reload}"
exit 1
esac
exit 0
这样一旦启动或关闭nginx服务,php-fpm 程序也会随之启动或关闭,不需要额外再启动或关闭php-fpm
配置Nginx支持php解析
(调用本机的php-fpm进程)在conf/目录下的fastcgi.conf 文件中已经包含必须的宏设置,可以通过include语句添加进来
vim /usr/local/nginx/conf/nginx.conf
server {
.......//省略部分信息
location / {
root html;
index index.php index.html index.htm;
}
location ~ \\.php$ { //访问php 页面的配置端
root html; //php 网页文档根目录
fastcgi_pass 127.0.0.1:9000; //php-fpm 的监听地址
fastcgi_index index.php; //php 首页文件
include fastcgi.conf; //包括fastcgi.conf 样本配置
}
完成修改后重新加载Nginx服务即可生效
在php 文档根目录下创建一个测试网页,以便测试php 语句能否正常解析,以及访问mysql数据库
vim /usr/local/nginx/html/php.php
<?ph
phpinfo();
?>
vim /usr/local/nginx/html/mysql.php
<?php
$link=mysqli_connect(\'localhost\',\'root\',\'123456789\');
if($link) echo "<h1>恭喜你,大功告成!! </h1>";
mysqli_close();
?>
4)lnmp 平台中部署web 应用
部署comsenzDISzuz BBS论坛系统
discuz社区论坛是一个采用php 与MySQL等多种数据库构建的性能优异,功能全面的且安全稳定
的社区论坛软件,其官网网站为http://www.discuz.net
unzip ComsenzDiscuzX-master.zip
cd DiscuzX
ls upload
设置权限及模块文件
cd /usr/local/nginx/html/bbs/config
cp config_global_default.php config_global.php
cp config_ucenter_default.php config_ucenter.php
cd /usr/local/nginx/html/bbs
chmod -R 777 config/ data/ uc_client/ uc_server/
给到权限之后目录文件可执行
准备数据库并配置相关授权
mysql -uroot -p123456789
mysql> create database bbs;
mysql> grant all on bbs.* to \'bbs\'@\'localhost\' identified by \'bbs123456789\'; //数据库账号与密码下面需要在浏览器中创建,注意一下,
mysql> flush privileges;
这个地方我的数据库密码为bbs123456789,截图有误,务必根据自己设置的填写,否则报错
以上是关于LNMP动态网站架构及web应用部署,搭建discuz论坛的主要内容,如果未能解决你的问题,请参考以下文章