源码编译安装LNMP平台(使用Linux, Nginx,MySQL与PHP搭建论坛)

目录

编译安装NGINX

安装依赖包

新建用户 组便于管理(nginx 服务程序默认 以 nobody 身份运行,建议为其创建专门的用户账户,以便更准确的控制访问权限)

编译安装Nginx

 添加 Nginx 系统服务

编译安装mysql5.7

安装配置php文件

 nginx加入PHP功能

测试数据库工作是否正常 

LNMP应用部署之 部署 Discuz!社区论坛 Web 应用


编译安装NGINX

安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

新建用户 组便于管理(nginx 服务程序默认 以 nobody 身份运行,建议为其创建专门的用户账户,以便更准确的控制访问权限)

useradd -M -s /sbin/nologin nginx  #-M(不创建主目录) -s(不允许登录)

编译安装Nginx

cd  /opt/   准备好的 tar包解压 到 /opt/ 目录 

tar zxvf nginx-1.120.tar.gz -C /opt    #解压到/opt/ 目录
cd nginx-1.12.0/                      移动到解压好的文件夹

#编译

./configure \
--prefix=/usr/local/nginx \
#安装路径
--user=nginx \
#指定用户名
--group=nginx \
#指定用户组
--with-http_stub_status_module
#启用此模块支持状态统计

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module


#安装
make && make install


#做个软连接   #或者加入系统环境也行
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

 添加 Nginx 系统服务

#添加 Nginx 系统服务
方法一:

vim /etc/init

#!/bin/bash 
#chkconfig: - 99 20 
#description:Nginx Service Control Script 
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



#方法二

#!/bin/bash
#chkconfig: 35 99 20
#description:Nginx Service Control Script
cmd="/usr/local/nginx/sbin/nginx"
pid="/usr/local/nginx/logs/nginx.pid"

case $1 in

start)
$cmd
;;

stop)
kill -3 `cat $pid`
;;

reload)
kill -1 `cat $pid`
;;

restart)
$0 stop
$0 start
;;

*)
echo "plaese input start,stop,reload,restart"
exit 1

esac
exit 0



#方法三

vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target



##配置参数解释##
[Unit]
Description=nginx                     ####描述
After=network.target                 ####描述服务类别
[Service]
Type=forking                                             ###后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid                   ###PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx                     ###启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID             ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID                ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@localhost opt]# systemctl daemon-reload 
              ##重载服务

[root@localhost opt]# systemctl start nginx.service
             ##启动服务

编译安装mysql5.7

安装Mysql环境依赖包

[root@localhost opt]# 

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake


yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#安装依赖关系

[root@localhost opt]# useradd -s /sbin/nologin  mysql
   #创建运行用户    -s 禁止登录shell


[root@localhost opt]# ls
Discuz_X3.4_SC_UTF8.zip  mysql-5.7.20  mysql-boost-5.7.20.tar.gz  nginx-1.12.0  nginx-1.12.0.tar(1).gz  php-7.1.10.tar.bz2  rh
[root@localhost opt]# cd mysql-5.7.20/


#编译
[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1


-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

[root@localhost mysql-5.7.20]# make && make install
   #安装


配置MySQL

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
                    chown -R 递归  改变属主

[root@localhost ~]# vi /etc/my.cnf   #调整配置文件

删除原来的配置 写入以下内容

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[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
socket = /usr/local/mysql/mysql.sock
server-id = 1

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











NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
禁止:GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从o开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
IPES_AS_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和oracle数据库是一样的,
ANSI QUOTES
启用ANSI QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

加入系统环境变量

[root@localhost ~]# chown mysql:mysql /etc/my.cnf
                     #改属主 和属组
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
                   #加入系统环境变量
[root@localhost ~]# echo 'export PATH' >> /etc/profile   #声明变量
[root@localhost ~]# source /etc/profile       #刷新

系统环境变量的设置

环境变量的设置
一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt /au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:




1.直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看:
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。



2.修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

让环境变量立即生效需要执行如下命令:
#source /etc/profile


3.修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"


后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了。

初始化数据库

[root@localhost ~]# cd /usr/local/mysql/

[root@localhost mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data


cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

数据库开启自启、 关闭、状态 

systemctl enable mysqld
#开机自启

systemctl start mysqld
#开启数据库

systemctl stop mysqld
#停止数据库

systemctl status mysqld
#查看启动状态

netstat -anpt | grep 3306
#查看端口 并过滤 

设置Mysql密码

设置Mysql密码

mysqladmin -u root -p password


登录数据库
mysql -u root -p

安装配置php文件

安装环境依赖包

yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

编译安装

cd /opt 

tar xjvf php-7.1.10.tar.bz2
#解压
cd php-7.1.10


./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
php有三个配置文件
  
php.ini 核心配置文件  
php-fpm.conf 进程服务配置文件 
www.conf  扩展配置文件

配置php

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 //验证安装的模块

 配置及优化FPM模块

[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# cp  php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# cd /usr/local/php/etc/
[root@localhost etc]# vi php-fpm.conf

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

ln -s /usr/local/php/bin/* /usr/local/bin/

ps aux | grep -c "php-fpm"  

 

 nginx加入PHP功能

vi /usr/local/nginx/conf/nginx.conf  //在合适的位置

location ~ \.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; ####注意目录名称
            include        fastcgi_params;
}

vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

systemctl restart nginx

在网页测试“http://192.168.159.101/index.php”

测试数据库工作是否正常 

mysql -u root -p     
 #输入密码  并登录

CREATE DATABASE bbs;
#创建一个数据库

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码//  所有访问来源/渠道

GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';

flush privileges;刷新数据库//

编辑网页

vi /usr/local/nginx/html/index.php      


<?php
$link=mysqli_connect('192.168.195.128','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
systemctl restart nginx
#重启服务

在网页测试 http://192.168.159.101/index.php

LNMP应用部署之 部署 Discuz!社区论坛 Web 应用

安装论坛

cd /opt

unzip Discuz_X3.4_SC_UTF8.zip  
#解压准备好的包 解压到 /opt/ 目录下
cd /opt/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/

网页设置

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值