目录
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。和LAMP不同的是,提供web服务的是Nginx并且php是作为一个独立服务存在的,这个服务叫做php-fpm,Nginx直接处理静态请求,动态请求会转发给php-fpm。
nignx安装包:nginx-1.12.2.tar.gz
mysql安装包:mysql-boost-5.7.20.tar.gz
php安装包:php-7.1.10.tar.bz2
Discuz论坛安装包:Discuz_X3.4_SC_UTF8.zip
- mount /dev/sr0 /mnt/
-
- cd /etc/yum.repos.d/
- mkdir bak
- mv *.repo bak
- vim local.repo
- [local]
- name=local
- baseurl=file:///mnt
- gpgcheck=0
-
- yum clean all && yum makecache
编译安装过程前一篇博客已详细写过,这里写一个一键安装nginx服务的脚本
vim nginx.sh
- #!/bin/bash
- echo "请先将软件包上传到opt目录下(nginx-1.12.2.tar.gz)"
- read -p "请问安装包是否都上传到opt目录下(yes/no)" A
- if [ $A == yes ]
- then
- echo "开始部署"
- else
- echo "请将软件包先上传到opt目录下"
- exit
- fi
- ####防火墙核心防护关闭
- systemctl stop firewalld
- setenforce 0
- ####安装依赖环境
- yum -y install openssl openssl-devel gcc gcc-c++ pcre-devel zlib-devel make &> /dev/null
- if [ $? -eq 0 ]
- then
- echo "依赖环境安装完成"
- else
- echo "请检查网络环境"
- exit 0
- fi
- echo "创建运行用户、组"
- useradd -M -s /sbin/nologin nginx
- echo "编译安装Nginx"
- cd /opt
-
- tar zxvf nginx-1.12.2.tar.gz -C /opt/ &> /dev/null
- echo "解压完成"
- cd nginx-1.12.2/
- echo "wait..."
- ./configure \
- --prefix=/usr/local/nginx \
- --user=nginx \
- --group=nginx \
- --with-http_stub_status_module &> /dev/null
- echo "编译安装时间较长,请等待。。。"
- make -j2 && make install &> /dev/null
-
- echo "Nginx安装完成"
- echo "路径优化"
- ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
-
- echo "检查配置文件"
- nginx -t
-
- echo "启动Nginx"
- nginx
-
- echo "查看版本"
- nginx -V
-
-
-
- echo "升级Nginx"
-
- echo "请稍等"
- cd /opt
- tar -zxvf nginx-1.22.1.tar.gz
-
- cd nginx-1.22.1/
- ./configure \
- --prefix=/usr/local/nginx \
- --user=nginx \
- --group=nginx \
- --with-http_stub_status_module \
- --with-http_ssl_module &> /dev/null
-
- make -j2
-
- mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
-
- cp -p /opt/nginx-1.22.1/objs/* /usr/local/nginx/sbin/
-
- echo "重启服务"
- systemctl restart nginx
-
- echo "查看版本"
- nginx -V
编译安装过程之前博客已详细写过,这里写一个一键安装mysql服务的脚本
vim mysql.sh
- #!/bin/bash
-
- echo "安装MySQL服务"
- echo "wait..."
- yum -y install \
- ncurses \
- ncurses-devel \
- bison \
- cmake &> /dev/null
-
- #创建运行用户
- useradd -s /sbin/nologin mysql
- #编译安装
- cd /opt
- tar xzvf mysql-boost-5.7.20.tar.gz &> /dev/null
- cd /opt/mysql-5.7.20/
- echo "wait..."
- 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 &> /dev/null
- echo "wait..."
- make -j2 && make install &> /dev/null
- #数据库目录进行权限调整
- chown -R mysql:mysql /usr/local/mysql/
- #调整配置文件
-
- echo '[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
- ' > /etc/my.cnf
-
- chown mysql:mysql /etc/my.cnf
- #设置环境变量
- echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
- source /etc/profile
-
- #初始化数据库
- cd /usr/local/mysql/
- echo "wait..."
- bin/mysqld \
- --initialize-insecure \
- --user=mysql \
- --basedir=/usr/local/mysql \
- --datadir=/usr/local/mysql/data &> /dev/null
-
- cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
-
- #数据库开启
- systemctl start mysqld
- systemctl enable mysqld
- netstat -anpt | grep 3306
-
- yum -y install expect &> /dev/null
- source /etc/profile
- #设置Mysql密码
- /usr/bin/expect <<-EOF
- spawn mysqladmin -u root -p password
- expect {
- "Enter password"
- {send "\r";exp_continue}
- "New password"
- {send "abc123\r";exp_continue}
- "Confirm new password"
- {send "abc123\r"}
- }
- expect eof
- EOF
编译安装过程之前博客已详细写过,这里写一个一键安装PHP解析的脚本
vim php.sh
- #!/bin/bash
-
- yum -y install \
- gd \
- libjpeg libjpeg-devel \
- libpng libpng-devel \
- freetype freetype-devel \
- libxml2 libxml2-devel \
- zlib zlib-devel \
- curl curl-devel \
- openssl openssl-devel
-
- cd /opt
- tar jxvf php-7.1.10.tar.bz2
- cd /opt/php-7.1.10/
-
- ./configure \
- --prefix=/usr/local/php7 \
- --with-apxs2=/usr/local/httpd/bin/apxs \
- --with-mysql-sock=/usr/local/mysql/mysql.sock \
- --with-config-file-path=/usr/local/php7 \
- --with-mysqli \
- --with-zlib \
- --with-curl \
- --with-gd \
- --with-jpeg-dir \
- --with-png-dir \
- --with-freetype-dir \
- --with-openssl \
- --enable-mbstring \
- --enable-xml \
- --enable-session \
- --enable-ftp \
- --enable-pdo \
- --enable-tokenizer \
- --enable-zip
-
-
- make -j 4 && make install
-
- cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
- #在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
-
- sed -i.bak -e "1170 s|.*|mysqli.default_socket = /usr/local/mysql/mysql.sock|" -e "939 s|.*|date.timezone = Asia/Shanghai|" /usr/local/php7/php.ini
-
- ln -s /usr/local/php7/bin/* /usr/local/bin/
-
- sed -i.bak -e "255 s/.*/DirectoryIndex index.html index.php/" -e "393c AddType application/x-httpd-php .php\nAddType application/x-httpd-php-source .phps" /etc/httpd.conf
-
- rm -rf /usr/local/httpd/htdocs/index.html
- echo "
- phpinfo();
- ?>" > /usr/local/httpd/htdocs/index.php
-
- systemctl restart httpd.service
-
- /usr/bin/expect <<EOF
- spawn mysql -u root -p
-
- expect "Enter password" {send "abc123\r"}
- expect "mysql" {send "CREATE DATABASE bbs;\r"}
- expect "mysql" {send "GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';\r"}
- expect "mysql" {send "flush privileges;\r"}
- expect "mysql" {send "quit\r"}
-
- expect eof
- EOF
-
- unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
- cd /opt/dis/dir_SC_UTF8/
- cp -r upload/ /usr/local/httpd/htdocs/bbs
- cd /usr/local/httpd/htdocs/bbs
- chown -R daemon ./config
- chown -R daemon ./data
- chown -R daemon ./uc_client
- chown -R daemon ./uc_server/data
写一个一键部署Discuz社区论坛的脚本:
vim discuz.sh
- #!/bin/bash
-
- cd /opt
- 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/
测试访问:192.168.80.3/index.php
