- 介紹Nginx
- 部署Nginx
- 1.安裝軟體環境
- 2. 編譯安裝Nginx
- 3.優化路徑
- 4.設定為系統服務
- 5.測驗
- 編譯安裝MySQL
- 1.安裝編譯環境
- 2.使用cmake進行編譯
- 3.修改配置
- 4.設定環境變數
- 5.初始化MySQL
- 啟動測驗
- 安裝部署PHP
- 1.部署環境
- 3.進行配置
- 3.1.配置php.ini核心組態檔
- 3.2配置php-fpm.conf行程服務組態檔
- 3.3設定www.conf擴展組態檔
- 4.優化路徑
- 5.配置NGINX支持PHP
- 6.制作PHP網頁
- 7.測驗
介紹Nginx
- Nginx服務基礎
在各種網站服務器軟體中,除了Apache HTTP Server外,還有一款輕量級的HTTP
服務器軟體——Nginx,由俄羅斯的Igor Sysoev開發,其穩定、高效的特性逐漸被越來越
多的用戶認可,本章將講解nginx服務的基本構建、訪問控制方式、虛擬主機的搭建,還
有應用廣泛的LNMP架構服務器的部署方式,并對PHP_FPM模塊如何支持PHP語言進
行討論,
Nginx(發音為[engine x])專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,
以及對HTTP并發連接的高處理能力(單臺物理服務器可支持30 000~50000個并發請求),正因為如此,
大量提供社交網路、新聞資訊、電子商務及虛擬主機等服務的
企業紛紛選擇Nginx來提供Web服務, - 軟體支持
Nginx的配置及運行需要pcre、zlib等軟體包的支持,因此應預先安裝這些軟體的開發包(devel),以便提供相應的庫和頭檔案,確保Nginx的安裝順利完成 - 運行賬戶
Nginx服務程式默認以nobody身份運行,建議為其創建專門的用戶賬號,以便更準確
地控制其訪問權限,增加靈活性、降低安全風險,例如,創建一個名為nginx的用戶,不建
立宿主檔案夾,也禁止登錄到Shell環境,
部署Nginx
1.安裝軟體環境
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel
2. 編譯安裝Nginx
配置Nginx的編譯選項時,將安裝目錄設為/usr/local/nginx,運行用戶和組均設為nginx;啟用http_stub_status_module模塊以支持狀態統計,便于查看服務器的連接資訊,
[root@localhost nginx-1.15.9]# tar xzvf nginx-1.15.9.tar.gz -C /opt //解壓原始碼包
[root@localhost system]# useradd -s /sbin/nologin -M nginx //創建程式賬戶
[root@localhost nginx-1.15.9]# cd /opt/nginx-1.15.9/
[root@localhost nginx-1.15.9]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.15.9]# make && make install //可以采用make -j3 && make install方式加速安裝,這里的j3代表3個核心,因此電腦至少能支持3個執行緒才能使用,j2,j4同理類推
3.優化路徑
[root@localhost nginx-1.15.9]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 27 Sep 6 05:06 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
[root@localhost nginx-1.15.9]# nginx -t ##nginx命令可以自動識別了
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.設定為系統服務
[root@localhost nginx-1.15.9]# cd /lib/systemd/system/
[root@localhost system]# vim 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 ###啟動服務
ExecReload=/usr/bin/kill -s HUP $MAINPID ###根據PID多載配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根據PID終止行程
PrivateTmp=true
[lnstall]
WantedBy=multi-user.target
[root@localhost~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
5.測驗
[root@localhost nginx-1.15.9]# yum -y install elinks 安裝測驗軟體,與Lynx相似
[root@localhost nginx-1.15.9]# elinks http://localhost

編譯安裝MySQL
1.安裝編譯環境
[root@localhost opt]# ls //查看原始碼包是否準備好
mysql-boost-5.7.20.tar.gz
……省略部分
[root@localhost opt]# useradd -s /sbin/nologin mysql //新增mysql作為禁止登入的程式賬號
[root@localhost opt]# tail -1 /etc/passwd //查看新增用戶
mysql:x:1001:1001::/home/mysql:/sbin/nologin
[root@localhost opt]# tar xf mysql-boost-5.7.20.tar.gz //解壓原始碼包
[root@localhost~]# yum -y install \
ncurses \ ###字符終端處理工具
ncurses-devel \ ###字符終端處理工具
bison \ ###語法分析器,用于分析MySQL的語法是否正確
cmake
2.使用cmake進行編譯
[root@localhost opt]# cd /opt/mysql-5.7.20
[root@localhost mysql-5.7.20]# cmake \ ##mysql需要用到cmake安裝
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##指定安裝目錄
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ ##指定資料庫連接檔案,改檔案不影響資料庫的允許,但是會影響用戶連接到資料庫
-DSYSCONFDIR=/etc \ ##指定組態檔存放位置
-DSYSTEMD_PID_DIR=/usr/local/mysql \ ##指定PID號檔案存放目錄,該檔案與sock檔案相似,當資料庫關閉時檔案消失,而且不能同時存在兩個PID檔案,否則會故障,因此若資料庫關閉后PID檔案還存在,那么就會和開啟后生成的新PID檔案沖突
-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 \ ##加載底層一個支持C++的運行庫
-DWITH_SYSTEMD=1 ##設定的主從ID
[root@localhost mysql-5.7.20]# make -j3 && make install
3.修改配置
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/ ##將mysql下的所有目錄及檔案屬主和屬組改為mysql
[root@localhost mysql-5.7.20]# 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
[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf
4.設定環境變數
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/ ##優化執行服務
[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# source /etc/profile
5.初始化MySQL
[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \ ##初始化的命令
--user=mysql \ ##指明用戶
--basedir=/usr/local/mysql \ ##指定了作業目錄
--datadir=/usr/local/mysql/data ##在指定了資料存放的位置
啟動測驗
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-09-05 18:54:09 CST; 7ms ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
……省略部分
[root@localhost ~]# netstat -ntap|grep 3306
tcp6 0 0 ::3306 :::* LISTEN 50925/mysqld
[root@localhost ~]# mysqladmin -u root -p password "abc123" '//給root用戶設定密碼'
##mysqladmin -u用戶名 -p舊密碼 password 新密碼,初次設定時沒有舊密碼,因此直接回車就可以了, password后面跟的新密碼
[root@localhost mysql]# mysqladmin -u root -p password
##password 后面不跟新密碼,則需要進入互動模式中手動輸入兩次
[root@localhost ~]# mysql -u root -p
Enter password:
……省略部分
安裝部署PHP
1.部署環境
[root@localhost opt]# ls ##查看壓縮包
……省略部分
php-7.1.10.tar.bz2
[root@localhost php-7.1.10]# tar xf php-7.1.10.tar.bz2
[root@localhost ~]# yum -y install \
libjpeg \
libjpeg-devel \
libpng \
libpng-devel \
freetype \
freetype-devel \
libxml2 \
libxml2-devel \
zlib \
zlib-devel \
curl \
curl-devel \
openssl \
openssl-devel
2.編譯安裝PHP
[root@localhost php-7.1.10]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--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-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
3.進行配置
##################php有三個組態檔#################
php.ini核心組態檔
php-fpm.conf行程服務組態檔
www.conf擴展組態檔
################################################
3.1.配置php.ini核心組態檔
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini ##將原始碼目錄下的php.ini核心檔案拷貝到指定的作業目錄下php.ini
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
……省略部分
mysqli.default_socket = /usr/local/mysql/mysql.sock //后面填入連接檔案路徑
……省略部分
date.timezone = Asia/Shanghai 后面寫入上海時區(注意前面的”;”分號要刪去)
……省略部分
[root@localhost php-7.1.10]# /usr/local/php/bin/php -m //驗證安裝的模塊
3.2配置php-fpm.conf行程服務組態檔
[root@localhost etc]# cd /usr/local/php/etc/
[root@localhost etc]# ls
pear.conf php-fpm.conf.default php-fpm.d
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# vi php-fpm.conf
[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
pid = run/php-fpm.pid ##去掉前面的注釋符號
……省略部分
3.3設定www.conf擴展組態檔
[root@localhost etc]# cd php-fpm.d/
[root@localhost php-fpm.d]# ls
www.conf.default
[root@localhost php-fpm.d]# pwd
/usr/local/php/etc/php-fpm.d
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini ##啟動PHP行程,-c指向作業目錄/usr/local/php/下lib/目錄中的php.ini組態檔
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t ##用于測驗PHP配置是否正確
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -t ##用于測驗PHP配置是否正確
[root@localhost php-fpm.d]# netstat -anupt | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 48705/php-fpm: mast
4.優化路徑
[root@localhost php-fpm.d]# ln -s /usr/local/php/bin/* /usr/local/bin/ 優化路徑
5.配置NGINX支持PHP
[root@localhost php-fpm.d]# cd /usr/local/nginx/conf/
[root@localhost conf]# ls
……省略部分
fastcgi_params koi-win nginx.conf scgi_params.default win-utf
[root@localhost conf]# vi nginx.conf ##主組態檔中有現成的模板,直接修改就可以
location ~ \.php$ {
root html; ##指定站點目錄,即網頁目錄
fastcgi_pass 127.0.0.1:9000; ##指定fpm模塊所在的位置,即自己ip的9000埠
fastcgi_index index.php; ###指定默認的首頁型別
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
##指定加載的腳本檔案,即站點目錄中的檔案
include fastcgi_params; ##將nginx中的變數轉化成PHP中能識別的變數
}
[root@localhost conf]# systemctl stop nginx.service
[root@localhost conf]# systemctl start nginx.service ##重啟加載配置
6.制作PHP網頁
[root@localhost html]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html index.html
[root@localhost html]# mv index.html index.php ##將html結尾的檔案改為php結尾
[root@localhost html]# ls
50x.html index.php
[root@localhost html]# vim index.php ##刪去原本內容,換成PHP的基本結構語言
<?php
phpinfo();
?>
7.測驗
訪問http://20.0.0.12/index.php

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/11788.html
標籤:java
上一篇:軟體架構師都做些什么
下一篇:目標管理
