提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LNMP平台就是Linux、Ngnix、 MySQL、PHP的组合架构,需要Linux服务器、MySQL 数据库、PHP解析环境。
Nginx的配置请参照上一篇:Nginx服务基础,
为了与Nginx、PHP环境保持一致, 此处选择采用源代码编译的方式安装MySQL组件
FastCGI: FastCGI是一个可伸缩地、高速地在HTTP服务器和动态脚本语言间通信的接口(FastCGI接 口在Linux下是socket (可以是文件socket,也可以是ipsocket) ),主要优点是把动态语言和HTTP服务器分离开来。多数流行的HTTP服务器都支持FastCGI,包括Apache、Nginx和lightpd。
FastCGI:作用:把动态语言和HTTP分离开来,动静分离
yum -y install gcc gcc-c++ pcre-devel zlib-devel make
useradd -M -s /sbin/nologin nginx ##不指定家目录创建用户
上传nginx-1.15.9.tar.gz至/opt目录
cd /opt
tar xzvf nginx -1.15.9.tar.gz
cd nginx-1.15.9/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
ls -l /usr/local/sbin/nginx
echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
. /etc/profile.d/nginx.sh
vim /usr/lib/systemd/system/nginx.service
-----------------------------------------------------------------------------------------
[Unit]
Description=nginx ##描述
After=network.target ##描述服务类别
[Service]
Type=forking ##后台运行类型
PIDFile =/usr/local/nginx/logs/nginx.pid #PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx #启动服务
ExecrReload=/bin/kill -s HUP $MAINPID #根据PID重载配置
ExecrStop=/bin/kill -s QUIT $MAINPID #根据PID终止进程
PrivateTmp=true ##开启
[Install]
WantedBy=multi-user.target #启动级别
--------------------------------------------------------------------------------------------
chmod 754 /lib/systemd/system/nginx.service ##设置754权限是一种安全优化
systemctl start nginx.service
这时系统报错
系统端口被占用,只要使用killall命令停止服务再开启服务即可
yum -y install ncurses ncurses-devel bison cmake
ncurses\ #字符终端工具包
bison \ #函数库
useradd -s /sbin/nologin mysql
上传mysql -boost-5.7.20. tar .gz到opt目录下
cd /opt
tar xzvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##指定安装路径(目录)
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ ##指定通信文件,连接数据库,通讯协议的载体
-DSYSCONFDIR=/etc \ ##配置文件目录指向/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql \ ##指定pid目录文件
-DDEFAULT_CHARSET=utf8 \ ##字符集设定
-DDEFAULT_COLLATION=utf8_general_ci \ ##字符集设定
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ ##以下三行均为存储引擎ENGINE
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \ ##指定数据存放位置
-DWITH_BOOST=boost \ ##底层C++运营库,5.7的版本独立的表空间结构
-DWITH_SYSTEMD=1 ##守护进程id跑在后台的一个支撑服务正常运行的一个特殊进程
make && make install
注意:如果在CMAKE的过程中有报错
当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
注意: make: *** No targets specified and no makefile found. Stop.解决方法
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
./configure -prefix=/usr/local -with-shared-wi thout -debug
shared:共享
debug:调试
make
make install
[root@localhost etc]# vim my.cnf
#删除原有内容,添加以下内容
---------------------------------------------------------------------------------------
[client] #client用户程序
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock ##连接数据库的数据端
[mysql] #mysql软件内容
port = 3306 #端口
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld] #以后对msq1配置时更多的会针对于mysqld进行配置
user = mysql #程序用户
basedir = /usr/local/mysql ## 工作目录
datadir = /usr/local/mysql/data ##数据文件目录
port = 3306 ##端口
character_set_server=utf8 ##服务的字符集
pid-file = /usr/local/mysql/mysqld.pid ##PID文件目录
socket = /usr/local/mysql/mysql.sock ##通讯文件
server-id = 1 ##服务id,在之后的mysql集群中用于标识mysq1服务器
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES ##模块,默认加载
--------------------------------------------------------------------------------------
chown mysql:mysql /etc/my.cnf
#PS:跳过数据库权限验证的命令为: skip-grant-tables 即进入数据库无须使用密码; 使用场景:忘记密码时
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
cd /usr/local/mysql/
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql/usr/lib/systemd/system
ls
mysqld.service [email protected]
cp mysqld.service /usr/lib/systemd/system ##mysqld.service官方写好的启动脚本,复制到/usr/local/systemd/sysytem
systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
systemctl start mysqld
netstat -antp | grep 3306
mysqladmin -u root -p password
mysql -u root -p ##输入密码abc123
yum -y install libjpegl ibjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl -devel
> libjpeg \ #jpg图片依赖
> libjpeg-devel \
> libpng libpng-devel \ #png图片依赖
> freetype freetype-devel \ #字体
> libxml2 \ #支持xml
> libxml2-devel \
> zlib zlib-devel \ #压缩格式
> curl curl-devel \ #识别url
> openssl openssl -devel
##xml支持扩展性标记语言,用于承载数据url网址openssl安全性访问/加密访问
cd /opt
tar xjvf php-7.1.10. tar.bz2
cd php-7.1.10
./configure \ ##php 配置./configure
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
make && make install
cp php.ini-development /usr/local/php/lib/php.ini ##php.ini-development:模板
vim /usr/local/php/lib/php.ini
1170 mysqli.default_socket =/usr/local/mysql/mysql.sock
939 date.timezone = Asia/Shanghai ##注释是“;”,去掉分号
/usr/local/php/bin/php -m ##验证安装的模块;查询开启的模块
复制主配置文件及php-fpm配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
cd /usr/local/php/etc/
vim php-fpm.conf
17 pid = run/php-fpm.pid ##开启pid支持(可运行)
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini ##启动PHP;-c:指定配置
netstat -anpt | grep 9000 ##php-fpm的端口9000
ln -s /usr/local/php/sbin/* /usr/local/sbin ##识别命令
ps aux | grep -c "php-fpm" ##查询进程数
vim /usr/local/nginx/conf/nginx.conf ##在合适的位置
取消注释,并制定站点目录
location ~ \.php$ { ##~:表示匹配浏览器输入以根域为前的所有域名、ip;\:转义符;php$:以php结尾的
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; ##指定站点目录
cd /usr/local/nginx/html/
vim index.php
systemctl stop nginx
systemctl start nginx
网页测试: http://192.168.35.40/index.php
mysql -u root -p
create database bbs; ##输入abc123密码
grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123'; ##所有权限*:所有的表by:访问来源
grant all on bbs.* to 'bbsuser'@'localhost' identified by 'admin123';123';
flush privileges; ##刷新权限
vim /usr/local/nginx/html/index.php ##原来的测试页内容更改如下
Success!!";
else echo "Fail!!";
?>
systemctl restart nginx
在网页测试"http://192. 168.80. 193/ index . php"
安装论坛
cd /tmp
unzip Discuz_X3.4_SC_UTF8.zip -d /tmp
cd /tmp/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
cd /usr/local/nginx/html/bbs/
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
网页测试
http://192.168.35.40/bbs/install/index.php
数据库服务器: localhost ##本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口
数据库名字: bbs
数据库用户名: bbsadm
数据库密码: admin123
管理员账号:admin
管理员密码:admin123
本章介绍了nginx和apache的区别,以及详细的源码部署LNMP架构的方法,具体如下: