一、預備環境 關閉防火牆,關閉安全機制 二、搭建Nginx服務 1、支持的軟體包pcre-devel、zlib-devel、openssl-devel(支持加密)、gcc、gcc-c++、make devel包主要是供開發用,包含普通包,devel包中包含頭文件和鏈接庫,如果是需要動態鏈接庫的話,兩 ...
一、預備環境
關閉防火牆,關閉安全機制
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# iptables -F [root@localhost ~]# setenforce 0
二、搭建Nginx服務
1、支持的軟體包pcre-devel、zlib-devel、openssl-devel(支持加密)、gcc、gcc-c++、make
devel包主要是供開發用,包含普通包,devel包中包含頭文件和鏈接庫,如果是需要動態鏈接庫的話,兩種包都需要有。
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel
2、創建nginx用戶和組
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
3、解壓安裝包並指定位置
[root@localhost ~]# tar -xf nginx-1.16.0.tar.gz -C /usr/src/
4、編譯安裝
[root@localhost ~]# cd /usr/src/nginx-1.16.0/ [root@localhost nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install --prefix //設定nginx的安裝目錄 --user和--group //指定nginx運行用戶和組 --with-http_stub_status_module //啟用模塊支持狀態統計 --with-http_ssl_module //啟用ssl模塊 --with-http_flv_module //提供尋求記憶體使用基於時間的偏移量文件
5、為主程式nginx創建鏈接文件
[root@localhost ~]# ls /usr/local/nginx/ logs sbin conf html [root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@localhost ~]# ll /usr/local/sbin/nginx
6、nginx的運行控制
nginx -t 檢測配置文件的語法
[root@localhost ~]# nginx -t 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 [root@localhost ~]# nginx [root@localhost ~]# netstat -anpt | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13134/nginx: master
重啟服務
[root@localhost ~]# killall -HUP nginx
三、nginx配置文件(nginx.conf)分析
在nginx伺服器的主配置文件nginx.conf中,包括全局配置、I/O時間配置、HTTP配置三大內容
配置格式:關鍵字 值; //末尾以分號表示結束,以#開始的部分表示註釋
1、全局配置
常用配置項:
user nginx [nginx]; //nginx的程式用戶及程式組,若編譯時未指定則預設為nobody
worker_processes 2; //指定nginx要指定的進程數量,每個進程要耗費10M-20M記憶體,一般與CPU核心數相等
worker_cpu_affinity 01 10; //雙核CPU(0001 0010 0100 1000;四核) CPU的分配問題
worker_rlimit_nofile 102400; //一個進程可以打開的最多文件數目,數值與ulimit -n(系統最多打開的文件數量)保持一致就好
error_log logs/error.log; //錯誤日誌的記錄級別
pid logs/nginx.pid; //指定PID文件的位置
2、I/O事件配置
使用"events{ }"界定標記,指定nginx進程的I/O響應模式,每個進程的連接數等
events { use epoll; //用來設定nginx的工作模式 worker_connections 4096; //用於定義nginx的最大連接數,預設1024 }
3、HTTP配置
用"http{ }"界定,設置訪問日誌、HTTP埠、網頁目錄、預設字元集、連接保持、虛擬web主機、PHP解析,server{ }配置段設置特定網路
http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; //客戶端訪問日誌記錄位置 sendfile on; //支持文件發送(上傳下載) keepalive_timeout 65; //連接保持的時間 server { //web服務的監聽配置 listen 80; //定義虛擬主機的伺服器介面(192.168.200.111:80) server_name www.crushlinux.com; //網站名稱(FQDN) charset utf-8; //網頁的預設字元集 location / { //跟目錄配置 root html; //網站根目錄的位置安裝位置的html中 index index.html index.htm; //預設首頁(索引頁) } error_page 500 502 503 504 /50x.html; //內部錯誤的反饋頁面 location = /50x.html { //錯誤頁面配置 root html; } } }
4、狀態統計模塊
[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf //在http中寫 location ~ /status { stub_status on; //打開狀態統計功能 access_log off; //關閉此位置的日誌記錄 } [root@nginxconf]#killall -HUP nginx //重啟nginx服務
四、創建mysql資料庫
1、查看所需的軟體
[root@localhost ~]# rpm -q ncurses-devel //檢測安裝包
2、若沒有安裝
[root@localhost ~]# yum -y install ncurses-devel //用yum安裝軟體包
3、新建一個mysql用戶和組
[root@localhost ~]# useradd -M -s /sbin/nologin mysql //創建一個用戶組
4、安裝cmake
[root@localhost ~]# yum -y install cmake //安裝編譯命令
5、編譯安裝mysql資料庫
[root@localhost ~]# tar -xf mysql-5.7.24.tar.gz -C /usr/src/ //解壓Msyql軟體包並指定解壓位置 [root@localhost ~]# cd /usr/src/mysql-5.7.24/ //進入解壓後路徑內 //編譯安裝 [root@localhost mysql-5.7.24]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install
在執行時如果報一個boost軟體的錯誤,進行如下操作
[root@localhost ~]# mkdir /usr/local/boost/ //創建一個文件夾boost [root@localhost ~]# cd /usr/local/boost/ //進入文件夾 [root@localhost boost]# tar -xf boost_1_59_0.tar.gz //在當前位置解壓boost軟體包 [root@localhost boost]# cd /usr/src/mysql-5.7.24/ //回到Mysql安裝路徑 [root@localhost mysql-5.7.24]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITH_BOOST=/usr/local/boost/ && make && make install
6、修改用戶和組
[root@localhost mysql-5.7.24]# chown -R mysql:mysql /usr/local/mysql/
7、建立配置文件
[root@localhost ~]# vim /etc/my.cnf //修改Mysql主配置文件 [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock [mysqld_safe] log-error=/usr/local/mysql/data/mysql.log pid-file=/usr/local/mysql/data/mysql.pid
8、初始化資料庫
[root@localhost ~]# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize //初始化並留下密碼(後面會用密碼要記住) 2019-09-10T16:36:34.384265Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-09-10T16:36:34.631107Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-09-10T16:36:34.673027Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-09-10T16:36:34.733541Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 270a4236-d3e9-11e9-96bf-000c299b5cf0. 2019-09-10T16:36:34.734738Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-09-10T16:36:34.735658Z 1 [Note] A temporary password is generated for root@localhost: yR1jAfi)xCd%
9、修改文件、添加變數
[root@localhost ~]# vim /etc/profile //開機啟動載入文件 PATH=$PATH:/usr/local/mysql/bin //設置變數 [root@localhost ~]# source /etc/profile //重新載入文件
10、複製服務腳本
[root@localhost ~]# cp /usr/src/mysql-5.7.24/support-files/mysql.server /etc/init.d/mysqld
11、加許可權,開啟資料庫
[root@localhost ~]# chmod +x /etc/init.d/mysqld //給腳本執行許可權 [root@localhost ~]# /etc/init.d/mysqld start //開啟資料庫 [root@localhost ~]# /etc/init.d/mysqld restart //重新啟動服務
12、為資料庫修改密碼
[root@localhost ~]# mysql -u root -p'yR1jAfi)xCd%' //使用原始密碼進入資料庫 [root@localhost ~]# mysqladmin -u root -p'yR1jAfi)xCd%' password '123123' //更改資料庫密碼 [root@localhost ~]# mysql -uroot -p123123 //用新密碼進入資料庫
五、PHP安裝
1、安裝支持軟體
[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
2、編譯安裝PHP
[root@localhost ~]# tar -xf php-5.6.39.tar.gz -C /usr/src/ //解壓軟體包 [root@localhost ~]# cd /usr/src/php-5.6.39/ //進入解壓後路徑 [root@localhost php-5.6.39]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install //編譯安裝
3、安裝後優化
[root@localhost php-5.6.39]# cp -p /usr/src/php-5.6.39/php.ini-production /usr/local/php5/php.ini //複製配置文件 [root@localhost php-5.6.39]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/ //鏈接命令文件 [root@localhost php-5.6.39]# ln -s /usr/local/php5/bin/* /usr/local/sbin/ //鏈接命令文件
4、安裝ZendGuardLoader(PHP的優化模塊)
[root@localhost ~]# tar -xf zend-loader-php5.6-linux-x86_64_update1.tar.gz -C /usr/src/ //安裝優化軟體包 [root@localhost ~]# cd /usr/src/zend-loader-php5.6-linux-x86_64/ //進入優化軟體包路徑 [root@localhost zend-loader-php5.6-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/ //複製文件 [root@localhost ~]# echo -e "zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so\nzend_loader.enable=1" >> /usr/local/php5/php.ini //在文件最後添加內容 [root@localhost ~]# tail -2 /usr/local/php5/php.ini //查看添加內容詳情 zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so zend_loader.enable=1
5、啟用php-fpm進程
[root@localhost ~]# useradd -M -s /sbin/nologin php //創建一個所屬用戶組 [root@localhost ~]# cd /usr/local/php5/etc/ [root@localhost etc]# cp -p php-fpm.conf.default php-fpm.conf //修改文件名 [root@localhost etc]# vim php-fpm.conf //修改主配置文件 pid = run/php-fpm.pid user = php group = php pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 [root@localhost etc]# php-fpm //啟動優化服務 [root@localhost etc]# netstat -anpt | grep php-fpm //查看服務是否開啟
6、配置nginx支持PHP解析
[root@ns1 ~]# cat /usr/local/nginx/conf/nginx.conf //修改nginx主配置文件 user nginx nginx; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; charset utf-8; location / { root html; index index.html index.htm index.php; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } } }
7、檢測配置的語法,重啟
[root@localhost ~]# nginx -t 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 [root@nginxetc]#killall -HUP nginx //重啟
8、PHP頁面訪問測試
[root@localhost ~]# vim /usr/local/nginx/html/mysql.php <?php $link=mysql_connect('localhost','root','123123'); if($link)echo"<h1>succeccful!</h1>"; mysql_close(); ?>
[root@localhost ~]# vim /usr/local/nginx/html/php.php <?php phpinfo(); ?>