20181228 ubuntu 18.04 安裝 LNMP
開始時是要學習 Docker 中 安裝 nginx、php、mysql的
開始的時候虛擬機上 ubuntu 18.04 an zhao按照官網已經安裝過了 LAMP
而後就老是出現這樣那樣的錯誤!浪費無數腦細胞以後,決定從頭開始!
安裝完 ubuntu 18.04 以後,不要安裝 LAMP ,而是按照 LNMP 的次序一步一步的來過!
一、安裝 nginx
sudo apt install nginx
確認:查看端口
netstat -anp |grep 80
或者
sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1750 root 6u IPv4 22825 0t0 TCP *:http (LISTEN)
nginx 1750 root 7u IPv6 22826 0t0 TCP *:http (LISTEN)
nginx 1752 www-data 6u IPv4 22825 0t0 TCP *:http (LISTEN)
nginx 1752 www-data 7u IPv6 22826 0t0 TCP *:http (LISTEN)
確認:cha查看 nginx 服務
sudo systemctl status nginx
2 、安裝 php
sudo apt install php php-fpm
sudo apt-get install php7.2 php7.2-fpm
確認:查看版本
php -v
PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.10-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
確認:查看進程
ps -ef |grep php
root 10848 1 0 12:41 ? 00:00:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data 10862 10848 0 12:41 ? 00:00:00 php-fpm: pool www
www-data 10863 10848 0 12:41 ? 00:00:00 php-fpm: pool www
dhbm 10983 1232 0 12:48 pts/0 00:00:00 grep --color=auto php
3 、修改站點配置,測試 php 文件解析
1)、新建一個 php 文件
cd /var/www/html
sudo vim info.php
加入如下 3 行
<?php
phpinfo();
?>
2)、修改站點配置
cd /etc/nginx/sites-available/
** a. 去掉 location ~ \.php$ { 這行的註釋,同時去掉配對的 } 這行的註釋
** b. 去掉 fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; 這行的註釋
** c. 同時,修改爲對應的 php-fpm 版本號的文件名(我安裝的是 php7.2)
3)、測試 nginx,重啓 nginx 服務
nginx -t
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
...
須要 sudo
sudo nginx -t
nginx: [emerg] "fastcgi_pass" directive is not allowed here in /etc/nginx/sites-enabled/default:62
nginx: configuration file /etc/nginx/nginx.conf test failed
按照錯誤提示的行號(個人錯誤在 62 行),檢查以上 a,b,c 處修改正確否!
4)、紀錄一下修改的結果
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
5)、正確測試結果
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6)、正確以後再重啓 nginx 服務
sudo systemctl restart nginx
** 不確認的話,能夠查看 nginx 服務狀態!
sudo systemctl status nginx
**中途老是折騰不對時,屢次 reboot ,實踐證實:必須 nginx 測試正確後,重啓服務纔會正常!
7)、測試結果
本地測試:
curl 127.0.0.1
curl 127.0.0.1/info.php
瀏覽器測試:
http://192.168.1.191/
http://192.168.1.191/info.php
四、錯誤處理:nginx打開php文件老是顯示下載,並開始下載個人 info.php 文件
這是以前學習時遇到的問題(另外一個虛擬機)
緣由同上!
五、錯誤處理:nginx打開php文件,顯示 502 Bad Gateway
回頭處理以前學習時遇到的問題(另外一個虛擬機)
不出現下載了,可是,出來 502 Bad Gateway 錯誤
檢查 /etc/nginx/sites-available/default 配置中 php部分
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
cd /var/run/php/
ls
php7.2-fpm.pid
只有一個 pid 文件!沒有發現存在這個文件 php7.2-fpm.sock ?
怎麼安裝的 php-fpm?
sudo vim /etc/nginx/sites-available/default
先改用 php-cgi 方式
fastcgi_pass 127.0.0.1:9000;
重啓 php7.2-fpm 服務
sudo systemctl restart php7.2-fpm.service
重啓 nginx
sudo systemctl restart nginx
再次測試
http://192.168.1.192/info.php
能夠看到正確信息了
PHP Version 7.2.10-0ubuntu0.18.04.1
..
*** php-cgi 方式 和 php-fpm 方式差異在哪裏來着?須要再次學習去!
![](http://static.javashuo.com/static/loading.gif)
***通過回憶:
以前的虛擬機上的 php 是直接按照ubuntu 18.04 官網介紹一次總體安裝了 LAMP
以後是本身從頭 LNMP 一個一個手工安裝的!
六、安裝 mysql
sudo apt install mysql-server
確認
sudo netstat -tap | grep mysql
tcp 0 0 localhost.localdo:mysql 0.0.0.0:* LISTEN 2808/mysqld
七、設置 mysql 初始密碼
sudo mysql_secure_installation
返回結果以下:
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
** 學習用,簡單設置 12345678
後續一路 y
八、安裝 phpmyadmin
** 我是按照ubuntu 18.04 官網操做的,可是,她主要針對得失 apache2
** 此次沒有安裝 apache2,因此,中途注意不要讓它自動配置
** 拿不許的話,直接去下載 phpmyadmin 而後,按照 nginx 網站去配置
sudo apt install phpmyadmin
** 注意:Web 自動選擇: apache ,lightd 一個都不選!
摘錄一部分安裝提示以下
...
should most likely be provided in /usr/share/doc/phpmyadmin.
...
Creating config file /etc/phpmyadmin/config-db.php with new version
...
收到以上提示信息影響,第一次我給配置到了 phpmyadmin 文檔,也紀錄一下
cd /usr/share/doc/phpmyadmin
ls
changelog.Debian.gz copyright html README TODO.Debian
CONTRIBUTING.md examples NEWS.Debian.gz README.Debian.gz
九、新建一個網站 phpmyadmin
1)、爲了統一,將 phpmyadmin ln 到 /var/www
這是第一次錯誤的操做,ln 到 phpmyadmin 文檔 了
sudo ln -s /usr/share/doc/phpmyadmin/html /var/www/phpmyadmin
正確的 ln 路徑
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
2)、直接 cp default 過來修改
cd /etc/nginx/sites-available/
sudo cp default phpmyadmin
3)sudo vim /etc/nginx/site-available/phpmyadmin
修改這個 phpmyadmin 如下 2 處
listen 999;
root /var/www/phpmyadmin;
4)、鏈接到 sites-enabled
sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin
5)測試、重啓 nginx 服務
sudo nginx -t
必須測試正確!
sudo systemctl restart nginx
十、 測試結果
本地先測試
curl 127.0.0.1:999
出現403 錯誤
403 Forbidden
聽說是首頁沒有加上 index.php
curl 127.0.0.1:999/index.php
ok!說明 403確實是由於:首頁沒有加上 index.php
瀏覽器測試
http://192.168.1.191:999
出錯誤了:
403 Forbidden
加上 php文件路徑
http://192.168.1.191:999/index.php
緣由同上!
修改以後再來!
vim /etc/nginx/sites-availablephpmyadmin
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;