摘要:截止年月日,目前最新的穩(wěn)定版是當(dāng)然次版也是很穩(wěn)定的。二安裝或或目前官方開(kāi)發(fā)只對(duì)這三個(gè)版本進(jìn)行維護(hù)。原文鏈接安裝教程
LEMP 指的是 Linux + Nginx (發(fā)音 engine x 所以這里是 E 而不是 N) + MySQL + PHP 的簡(jiǎn)稱(chēng),國(guó)內(nèi)有些地方叫做 LNMP (因?yàn)?LNMP 沒(méi)法讀出來(lái),而 LEMP 可以直接發(fā)音,所以今后本站教程一律都會(huì)寫(xiě) LEMP)
以下操作推薦在 root 用戶下完成,請(qǐng)使用 sudo -i 切換到 root 用戶進(jìn)行操作
一、安裝 Nginx 1.10.x 或 1.12.x由于 Nginx 更新頻繁,而 Ubuntu Server 長(zhǎng)久以來(lái)一直更新緩慢沒(méi)法支持新功能,所以我們有兩種方案。
截止 2017 年 5 月 6 日,目前最新的穩(wěn)定版是 1.12.x 當(dāng)然次版 1.10.x 也是很穩(wěn)定的。
1、用 Nginx 官方的 PPA 代替默認(rèn)的源安裝首先,加入 Nginx 的 PPA并安裝一些必要的軟件
sudo apt-get install software-properties-common sudo add-apt-repository ppa:nginx/stable sudo apt-get update sudo apt-get install curl vim wget unzip
如果喜歡體驗(yàn) Nginx 的新功能,您可以使用 add-apt-repository ppa:nginx/development 安裝 Nginx 的 Mainline 版代替默認(rèn)的 Stable 版
接著安裝 Nginx
sudo apt-get install nginx
如果您需要 Nginx 更多的功能,您可以使用 sudo apt-get install nginx-extras 代替默認(rèn)的 Nginx
PPA 方式更新也未必很及時(shí),如果您希望追求更新的版本,我們可以使用第二種方法
2、使用 Nginx 官方源首先,下載并導(dǎo)入 Nginx 官方的 Key:
wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key
修改 /etc/apt/sources.list 文件或新建一個(gè) /etc/apt/sources.list.d/nginx.list 文件,內(nèi)容如下:
deb http://nginx.org/packages/ubuntu/ xenial nginx deb-src http://nginx.org/packages/ubuntu/ xenial nginx
接著就可以更新系統(tǒng)并安裝和官網(wǎng)同步的最新版本 Nginx:
sudo apt-get update sudo apt-get install nginx
需要注意的是,官網(wǎng)的這個(gè)版本,安裝的插件和 Nginx 配置文件寫(xiě)法和 Ubuntu Server 默認(rèn)安裝以及 PPA 安裝的 Nginx 稍有區(qū)別,不過(guò)足夠日常使用。
二、安裝 PHP 7.0.x 或 PHP 7.1.x 或 PHP 5.6.x目前 PHP 官方開(kāi)發(fā)只對(duì)這三個(gè)版本進(jìn)行維護(hù)。
雖然一些老舊的程序、插件不支持 PHP 7.0.x 或 PHP 7.1.x,但是這貨速度確實(shí)快不少啊,強(qiáng)烈呼吁開(kāi)發(fā)者漸漸的轉(zhuǎn)移到 PHP 7.0.x 或 PHP 7.1.x 的開(kāi)發(fā)中,至于某些國(guó)產(chǎn)程序,就只能呵呵噠。
同樣,由于 Ubuntu Server 官方更新實(shí)在太慢,導(dǎo)致很多時(shí)候沒(méi)法打上最新的安全補(bǔ)丁,我們這里推薦 Ond?ej Sury 的 PPA
sudo add-apt-repository ppa:ondrej/php sudo apt-get update
由于 PHP 7.1.x 實(shí)在太新,很多程序沒(méi)辦法跟上步伐,但是大多數(shù)正常的程序的對(duì) PHP 7.0.x 的支持是很好的,所以本文推薦安裝 PHP 7.0.x
如有 PHP 7.1.x 或 PHP 5.6.x 需求的朋友,可以把下面的安裝包文件名類(lèi)似 php7.0-fpm 改成 php7.1-fpm 或 php5.6-fpm
執(zhí)行完成后,安裝一些常見(jiàn)的軟件以及 PHP 7.0.x, 如果是 WordPress ,那么下面的 PHP 包足夠滿足大部分你需求:
sudo apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-xml php7.0-xmlrpc php7.0-zip
以上只安裝了大部分 WordPress 必須的 PHP 組件,如果您的程序需要額外的 PHP 組件,可以通過(guò) apt-cache search php7.0 命令來(lái)查找。
showfom@ubuntu:~$ sudo apt-cache search php7.0 libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module) php-all-dev - package depending on all supported PHP development packages php7.0 - server-side, HTML-embedded scripting language (metapackage) php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-common - documentation, examples and common module for PHP php7.0-curl - CURL module for PHP php7.0-dev - Files for PHP7.0 module development php7.0-gd - GD module for PHP php7.0-gmp - GMP module for PHP php7.0-json - JSON module for PHP php7.0-ldap - LDAP module for PHP php7.0-mysql - MySQL module for PHP php7.0-odbc - ODBC module for PHP php7.0-opcache - Zend OpCache module for PHP php7.0-pgsql - PostgreSQL module for PHP php7.0-pspell - pspell module for PHP php7.0-readline - readline module for PHP php7.0-recode - recode module for PHP php7.0-snmp - SNMP module for PHP php7.0-sqlite3 - SQLite3 module for PHP php7.0-tidy - tidy module for PHP php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP php7.0-xmlrpc - XMLRPC-EPI module for PHP libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library) php7.0-bcmath - Bcmath module for PHP php7.0-bz2 - bzip2 module for PHP php7.0-enchant - Enchant module for PHP php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.0-imap - IMAP module for PHP php7.0-interbase - Interbase module for PHP php7.0-intl - Internationalisation module for PHP php7.0-mbstring - MBSTRING module for PHP php7.0-mcrypt - libmcrypt module for PHP php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.0-soap - SOAP module for PHP php7.0-sybase - Sybase module for PHP php7.0-xsl - XSL module for PHP (dummy) php7.0-zip - Zip module for PHP php7.0-dba - DBA module for PHP
安裝完成后,編輯 /etc/php/7.0/fpm/php.ini 并替換 ;cgi.fix_pathinfo=1 為 cgi.fix_pathinfo=0
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini
然后重啟 PHP7.0-fpm
systemctl restart php7.0-fpm三、更新 Nginx 配置
下面開(kāi)始,我們假設(shè)您的域名是 example.com 您的服務(wù)器 IP 是 192.0.2.2 (RFC 5737),并且您已經(jīng)解析 example.com 的 A 記錄到您的服務(wù)器 IP 192.0.2.2
無(wú)論用哪種方法安裝 Nginx 他們默認(rèn)的 nginx.conf 都指定了加載 /etc/nginx/conf.d/ 目錄下的 *.conf 文件,所以我們直接新建立一個(gè) /etc/nginx/conf.d/example.conf 并增加一些基本的配置
直接把下面一整行命令復(fù)制粘貼到你的終端
sudo cat >> /etc/nginx/conf.d/example.conf << EOF server { listen 80; listen [::]:80; # 指定網(wǎng)站目錄,可根據(jù)自己情況更換,建議放在 /var/www 目錄下 root /var/www/example.com; index index.php index.html index.htm; # 默認(rèn)第一個(gè)域名,替換 example.com 為您的域名 server_name example.com; location / { try_files $uri $uri/ =404; } # 開(kāi)啟 PHP7.0-fpm 模式 location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } } EOF
然后重啟 Nginx
sudo nginx -t && sudo nginx -s reload
我們的目錄在 /var/www/example.com, 創(chuàng)建一個(gè) phpinfo.php 并輸入 phpinfo() 函數(shù)
sudo cat >> /var/www/example.com/phpinfo.php << EOF EOF
好了,此時(shí)在瀏覽器輸入 http://example.com/phpinfo.php,如果看到經(jīng)典的 phpinfo 頁(yè)面則說(shuō)明安裝成功,如果不成功,請(qǐng)仔細(xì)對(duì)比步驟查找哪里出錯(cuò)
四、安裝 MySQL 5.7.x經(jīng)過(guò)多年生產(chǎn)環(huán)境的測(cè)試,我們推薦使用 Percona Server 代替原生的 MySQL
按照官方教程 下載最新版的 .deb 文件
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
此時(shí)會(huì)在 /etc/apt/sources.list.d/percona-release.list 文件加入官方源,在安裝之前可以先檢查是否存在
更新系統(tǒng)并安裝 Percona Server 5.7
sudo apt-get update sudo apt-get install percona-server-server-5.7
安裝成功后系統(tǒng)會(huì)讓您輸入兩次 MySQL 的 root 密碼,請(qǐng)切記一定要使用隨機(jī)的、不可被人猜測(cè)的密碼
我親眼目測(cè)過(guò)很多新手第一次安裝用了弱密碼,后來(lái)服務(wù)器就被人日,所以這里強(qiáng)烈推薦安裝完 MySQL 后,執(zhí)行一次安全設(shè)置,很簡(jiǎn)單的一條命令
mysql_secure_installation
執(zhí)行后會(huì)讓您選擇密碼強(qiáng)度,一般情況下選擇 1 或者 2
root@demo:~# mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: 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 請(qǐng)輸入 y 進(jìn)行初始安全設(shè)置 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: 2 最強(qiáng)大的密碼當(dāng)然要輸入 2 Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : n 如果之前設(shè)置了強(qiáng)密碼,則不需要重新更改 root 密碼,反之則按 y 回車(chē)后輸入兩次重置 By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y 移除匿名用戶,沒(méi)啥鳥(niǎo)用就直接移除吧 Normally, root should only be allowed to connect from "localhost". This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y 關(guān)閉 root 遠(yuǎn)程登錄,不需要進(jìn)行遠(yuǎn)程登錄的話就關(guān)了吧 Success. By default, MySQL comes with a database named "test" that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) :y 移除 test 數(shù)據(jù)庫(kù) Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y 重置數(shù)據(jù)庫(kù)權(quán)限
再次提醒,密碼一定要隨機(jī)、不可猜測(cè),使用弱密碼而導(dǎo)致服務(wù)器被日的例子實(shí)在是數(shù)不清楚
做好初始安全設(shè)置后,我們就可以進(jìn)行創(chuàng)建數(shù)據(jù)庫(kù)操作,首先使用 root 登錄 MySQL
mysql -u root -p
會(huì)提示讓您輸入密碼,輸入密碼登陸后,創(chuàng)建一個(gè)名為 example 的數(shù)據(jù)庫(kù)
CREATE DATABASE example DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
由于手機(jī)端的流行,我們已經(jīng)不再使用 utf-8 編碼,而改用 utf8mb4 這樣我們就可以在 MySQL 數(shù)據(jù)庫(kù)里儲(chǔ)存 emoji 表情了,比如這樣 ??????
接著我們創(chuàng)建一個(gè)叫做 example_user 的用戶,使用強(qiáng)大的密碼并且賦予 example_database 數(shù)據(jù)庫(kù)權(quán)限
GRANT ALL ON example.* TO "example_user"@"localhost" IDENTIFIED BY "這里改成你要設(shè)置的強(qiáng)大的沒(méi)人能猜出來(lái)的隨機(jī)的密碼";
終端會(huì)提示 Query OK, 0 rows affected, 1 warning (0.00 sec) 不用去管它
然后我們刷新權(quán)限
FLUSH PRIVILEGES;
沒(méi)問(wèn)題就退出
EXIT;
然后我們測(cè)試一下數(shù)據(jù)庫(kù),在 /var/www/example.com 目錄下建立一個(gè) mysql-test.php
sudo cat >> /var/www/example.com/mysql-test.php << EOF "; } if (!$tblCnt) { echo "MySQL is working fine. There are no tables."; } else { echo "MySQL is working fine. There are $tblCnt tables."; } ?> EOF
創(chuàng)建完畢后訪問(wèn) http://example.com/mysql-test.php 如果出現(xiàn) MySQL is working fine. There are no tables. 則說(shuō)明 MySQL 工作正常。
好了,以上就是基本的 Ubuntu Server 16.04 安裝 LEMP 的教程,如有問(wèn)題可以隨時(shí)發(fā)評(píng)論留言討論。
原文鏈接
Ubuntu Server 16.04.x (Xenial Xerus) 安裝 LEMP / LNMP 教程
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22913.html
摘要:截止年月日,目前最新的穩(wěn)定版是當(dāng)然次版也是很穩(wěn)定的。二安裝或或目前官方開(kāi)發(fā)只對(duì)這三個(gè)版本進(jìn)行維護(hù)。原文鏈接安裝教程 LEMP 指的是 Linux + Nginx (發(fā)音 engine x 所以這里是 E 而不是 N) + MySQL + PHP 的簡(jiǎn)稱(chēng),國(guó)內(nèi)有些地方叫做 LNMP (因?yàn)?LNMP 沒(méi)法讀出來(lái),而 LEMP 可以直接發(fā)音,所以今后本站教程一律都會(huì)寫(xiě) LEMP) 以下操作...
閱讀 3486·2021-10-18 13:30
閱讀 2940·2021-10-09 09:44
閱讀 1964·2019-08-30 11:26
閱讀 2287·2019-08-29 13:17
閱讀 757·2019-08-29 12:17
閱讀 2246·2019-08-26 18:42
閱讀 471·2019-08-26 13:24
閱讀 2951·2019-08-26 11:39