LNMP
- LNMP理論
- LNMP概述
- LNMP特點
- LNMP優點
- LNMP與LAMP區別
- N(nginx)概述
- LNMP編譯安裝(12核)
- N(nginx)
- M(mysql)
- P(php)
- 瀏覽器安裝論壇+驗證
LNMP理論
MySQL概述
php概述
LNMP概述
- LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟體名稱首字母縮寫,L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python,
- LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構,
- Linux是一類Unix計算機作業系統的統稱,是目前最流行的免費作業系統,代表版本有:debian、centos、ubuntu、fedora、gentoo等,
- Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器,
- Mysql是一個小型關系型資料庫管理系統,
- PHP是一種在服務器端執行的嵌入HTML檔案的腳本語言,
- 這四種軟體均為免費開源軟體,組合到一起,成為一個免費、高效、擴展性強的網站服務系統,
LNMP特點
- Nginx是一個小巧而高效的Linux下的Web服務器軟體,是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler 站點開發的,已經在一些俄羅斯的大型網站上運行多年,相當的穩定,
- Nginx性能穩定、功能豐富、運維簡單、處理靜態檔案速度快且消耗系統資源極少,
LNMP優點
- 作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的并發連接,體現更高的效率,
- 作為負載均衡服務器:Nginx 既可以在內部直接支持Rails和PHP,也可以支持作為 HTTP代理服務器對外進行服務,Nginx 用C撰寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多,
- 作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last/fm 描述了成功并且美妙的使用經驗,
- Nginx 安裝非常的簡單,組態檔非常簡潔(還能夠支持perl語法),Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟體版本的升級,
LNMP與LAMP區別
| LNMP | LAMP |
|---|---|
| 作用 是用來在Linux系統下Nginx+MySQL+PHP這種網站中搭建服務器架構, | 作用 是Linux(作業系統)、ApacheHTTP 服務器,一般用來建立web應用平臺, |
| 定義 指的是一個基于CentOS/Debian撰寫的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一鍵安裝包, | 定義 是Web應用軟體組合, |
| 用戶評價 lnmp搭建的Linux系統,是目前最流行的免費作業系統, | 用戶評價 lAMP是最強大的網站解決方案, |
| 軟體組 Nginx、MySQL、PHP、PHPMyAdmin、Apache(可選)、Zend Optimizer(可選)、eAccelerator(可選)、ionCube(可選)、PureFTPd(可選)、VsFTPd(可選), | 軟體組 Linux、Apache、MySQL、PHP,Perl 或 Python, |
| 總結 使用的是Nginx,Nginx是一款高性能額Http和反向代理服務器,也是一個AMAP/POP3/SMTP服務器,Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0發布于2004年10月4日,2011年6月1日,nginx 1.0.4發布 | 總結 使用的是Apache,Apache是世界是用排名第一的Web服務器軟體,其幾乎可以在所有廣泛使用的計算機平臺上運營,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務端軟體之一, |
N(nginx)概述
- Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務,Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日,
- 其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例組態檔和低系統資源的消耗而聞名,2011年6月1日,nginx 1.0.4發布
- Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行,其特點是占有記憶體少,并發能力強,事實上nginx的并發能力在同型別的網頁服務器中表現較好
LNMP編譯安裝(12核)
N(nginx)
- 第一步萬惡的防火墻+掛載
[root@localhost ~]# cd /opt/
[root@localhost opt]# systemctl stop firewalld.service
[root@localhost opt]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost opt]# mount /dev/sr0 /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
- 安裝依賴包+運行用戶的創建以及編譯安裝
[root@localhost opt]# yum -y install pcre-devel.x86_64 zlib-devel.x86_64 gcc gcc-c++ make
安裝程序略
[root@localhost opt]# useradd -M -s /sbin/nologin nginx
[root@localhost opt]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
解壓程序略
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module
程序略
[root@localhost nginx-1.12.2]# make -j12 && make install
編譯程序略
- 優化路徑及添加Nginx系統服務
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.2]# 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=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost nginx-1.12.2]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost nginx-1.12.2]# systemctl start nginx.service
[root@localhost nginx-1.12.2]# systemctl enable nginx.service

M(mysql)
- 安裝依賴包+運行用戶的創建以及編譯安裝
- 通過掛載方式獲取windows檔案里的軟體包
[root@localhost opt]# rpm -q cifs-utils
cifs-utils-6.2-10.el7.x86_64
[root@localhost opt]# smbclient -L 192.168.1.22
Enter SAMBA\root's password:
OS=[Windows 10 Pro for Workstations 18363] Server=[Windows 10 Pro for Workstations 6.3]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 遠程管理
C$ Disk 默認共享
D$ Disk 默認共享
E$ Disk 默認共享
IPC$ IPC 遠程 IPC
linux軟體包 Disk
Users Disk
Connection to 192.168.1.22 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available
[root@localhost opt]# mkdir qz
[root@localhost opt]# mount.cifs //192.168.1.22/linux軟體包 /qz
Password for root@//192.168.1.22/linux軟體包: ****
[root@localhost opt]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/sda5 31G 3.7G 27G 12% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 2.7M 2.0G 1% /dev/shm
tmpfs 2.0G 9.1M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 15G 33M 15G 1% /home
/dev/sda1 497M 151M 346M 31% /boot
tmpfs 394M 24K 394M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
//192.168.1.22/linux軟體包 932G 242G 691G 26% /qz
[root@localhost opt]# cd /qz/
[root@localhost qz]# ls
apr-1.6.2.tar.gz epel-release-latest-7.noarch.rpm mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz extundelete-0.2.4.tar.bz2 mysql.rar
awstats-7.6.tar.gz httpd-2.4.29.tar.bz2 nginx-1.12.0.tar.gz
boost_1_59_0.tar.gz john-1.8.0.tar.gz nginx-1.12.2.tar.gz
Discuz_X3.4_SC_UTF8.zip mysql-5.7.17.tar.gz php-7.1.10.tar.bz2
[root@localhost qz]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt/
解壓程序略
[root@localhost nginx-1.12.2]# cd /opt/
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# yum -y install \
> ncurses \
> ncurses-devel \
> bison \
> cmake
安裝程序略
[root@localhost opt]# useradd -M -s /sbin/nologin mysql
[root@localhost opt]# cd /opt/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_EXTRA_CHARSETS=all \
> -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
程序略
[root@localhost mysql-5.7.20]# make -j12 && make install
編譯安裝程序略
- 修改mysql組態檔并更改mysql安裝目錄和組態檔的屬主屬組
[root@localhost mysql-5.7.20]# vim /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
auto-rehash
[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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf
- 設定路徑環境變數并初始化資料庫
[root@localhost mysql-5.7.20]# echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# source /etc/profile
[root@localhost mysql-5.7.20]# cd /usr/local/mysql/bin/
[root@localhost bin]# ./mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
初始化程序略
- 添加mysql系統服務
[root@localhost bin]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost bin]# systemctl daemon-reload
[root@localhost bin]# systemctl start mysqld.service
[root@localhost bin]# systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
- 修改mysql登錄密碼并授權遠程登錄
[root@localhost bin]# mysqladmin -uroot -p password "5514"
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost bin]# mysql -uroot -p5514
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> grant all on *.* to 'root'@'%' identified by '5514';
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
P(php)
- 安裝GD庫和GD庫關聯程式,用來處理和生成圖片
[root@localhost opt]# 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
安裝程序略
[root@localhost opt]# cd /qz/
[root@localhost qz]# cp php-7.1.10.tar.bz2 /opt/
[root@localhost qz]# cd /opt/
[root@localhost opt]# ls
mysql-5.7.20 nginx-1.12.2 nginx-1.12.2.tar.gz php-7.1.10.tar.bz2 rh
- 解壓并進行編譯安裝與路徑優化
[root@localhost opt]# tar jxvf php-7.1.10.tar.bz2
解壓程序略
[root@localhost opt]# cd php-7.1.10/
[root@localhost 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
程序略
[root@localhost php-7.1.10]# make -j10 && make install
編譯程序略
[root@localhost php-7.1.10]# ln -s /usr/local/php/bin/ * /usr/local/bin/
[root@localhost php-7.1.10]# ln -s /usr/local/php/sbin/ * /usr/local/sbin/
- 調整php檔案的php.ini 主組態檔
php有三個組態檔
php.ini 主組態檔
php-fpm.conf 行程服務組態檔
www.conf 擴展組態檔
[root@localhost php-7.1.10]# cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# vim /usr/local/php/lib/php.ini
1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
【1170行進行修改】
939 date.timezone = Asia/Shanghai
【939行取消注釋并修改,這里是使用“;”進行注釋】
[root@localhost php-7.1.10]# php -m
- 調整php檔案的php-fpm.conf 行程服務組態檔
[root@localhost etc]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# vim php-fpm.conf
17 pid = run/php-fpm.pid
【將第17行的注釋“;”去掉】
- 調整php檔案的www.conf 擴展組態檔
[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
- 啟動php-fpm并配置Nginx支持PHP決議
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@localhost php-fpm.d]# netstat -tapn | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 74091/php-fpm: mast
【PHP-FPM是一個PHPFastCGI管理器,由于Nginx服務器不能處理動態頁面,所有需要由Nginx把動態請求交給php-fpm行程進行決議】
[root@localhost php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
70 include fastcgi_params;
71 }
【將第65-71行取消注釋,并將69行的/scripts修改成nginx的作業目錄】
[root@localhost php-fpm.d]# systemctl restart nginx.service
- 驗證PHP測驗頁
[root@localhost php-fpm.d]# vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
- 瀏覽器訪問http://192.168.131.14/index.php

- 驗證資料庫作業是否正常
[root@localhost php-fpm.d]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE bbs;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '5514';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
[root@localhost php-fpm.d]# vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.131.14','bbsuser','5514');
if($link) echo "<h2>成功!</h2>";
else echo "失敗!";
?>
- 瀏覽器訪問http://192.168.131.14/index.php

部署Discuz社區論壇Web應用
[root@localhost php-fpm.d]# cd /qz/
[root@localhost qz]# cp Discuz_X3.4_SC_UTF8.zip /opt/
[root@localhost qz]# cd /opt/
[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
[root@localhost opt]# cd /opt/dis/dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs/
- 調整論壇目錄的權限
[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/
[root@localhost bbs]# chmod -R 777 ./config/
[root@localhost bbs]# chmod -R 777 ./data/
[root@localhost bbs]# chmod -R 777 ./uc_client/
[root@localhost bbs]# chmod -R 777 ./uc_server/
瀏覽器安裝論壇+驗證
- 瀏覽器訪問http://192.168.131.14/bbs/install/index.php


- 訪問論壇頁面http://192.168.131.14/bbs/index.php

- 訪問論壇頁面http://192.168.131.14/bbs/admin.php

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/271302.html
標籤:其他
上一篇:我和docker的初相識(二)
