Ubuntu 17.10 用 apt 搭建 lamp 環境、安裝 phpmyadmin、redis 服務+擴展、mysql 擴展、開啟錯誤提示、配置虛擬主機


2018-02-24 13:50:30 更新:

個人喜歡相對原生又不太麻煩,所以用 apt 構建環境。不過,最近使用到現在記得出現過了 3 次 apache 或 mysql 服務器無法啟動或無法連接的情況。之前懶得麻煩,直接重裝服務器,反正數據也不多。

最近一次出問題后,好好查了會兒谷歌(百度),找到了解決辦法,現在也運行的好好的。說下我用的解決辦法:

 

問題1. Apache 服務器無法啟動

關鍵命令: apache2ctl configtest 

解決辦法:終端里執行上述命令,根據提示信息依次修改。

提示:主要是 apache 的日志文件缺失問題,按照命令輸出里提示的路徑依次創建即可;其次是 apache 默認的 Servername 缺失問題,按照提示在 apache 的主配置文件 /etc/apache2/apache2.conf 最后加一個 Servername localhost 即可(注意在你的 /etc/hosts 文件里添加 localhost 域名解析)。這個 Servername 問題可以不管,不影響運行。

最后記得重啟服務器檢查運行結果。

 

問題2. MySQL 服務器無法啟動或無法連接

關鍵命令: mysqld_safe 

解決辦法:主要是 mysql 的 sock 文件和日志文件缺失問題,按照命令輸出里提示的路徑依次創建,並修改兩文件所在目錄的用戶和用戶組為 mysql:mysql。

提示:我這里根據提示,創建了相應文件和目錄。sock 文件路徑為 /var/run/mysqld/mysqld.sock ,注意用 sudo chown -R mysql:mysql /var/run/mysqld/ 修改所屬用戶和用戶組;日志路徑為 /var/log/mysql/error.log ,注意修改這個 mysql 目錄的所屬用戶(組)。 

最后記得重啟服務器、終端里登錄連接 mysql 檢查運行結果。

 

一、最終環境

Ubuntu17.10、Apache2.4.27、MySQL5.7.20、PHP7.1.8

 

二、安裝 apache

官方源有,直接安裝:

sudo apt-get install apache2

 

三、安裝 mysql

官方源有,直接安裝:

sudo apt-get install mysql-server

安裝期間會提示設置 MySQL administrator 的密碼

============================================

PS:需要什么軟件或包,直接用 apt-cache 搜索

apt-cache search <關鍵詞>

確認包名后,直接用 apt-get install 安裝。

 

四、安裝 php

官方源有 php7.1,直接安裝:

sudo apt-get install php7.1 php7.1-dev

注意帶上版本號,不然默認安裝 7.x。php7.1 是主程序,php7.1-dev 是 7.1 版的開發包(有 phpize、php-config 等等,phpize 可以為 已編譯好的 php 加載外掛模塊,php-config 可以獲得 php 的詳細配置)。 

============================================

如果要裝 php5.6 的話,推薦這個 PPA 源:ppa:ondrej/php這個源有 php5.6 和 php7.x 以及絕大多數的 php 擴展,包括 redis、memcache、mongodb 等等。

添加 ppa:ondrej/php 源:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

安裝 php5.6:

sudo apt-get install php5.6 php5.6-dev

 

五、重啟 apache

sudo /etc/init.d/apache2 restart

更多選項:

Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}

 

六、檢查 apache

訪問 http://localhost/。這是 apache 服務器的默認頁在 /var/www/html 下,里面還介紹了 apche 的相關配置文件。

 

七、檢查 mysql

終端輸入 mysql,跟着打兩個 Tab,看到所有有關 mysql 的命令包:

mingc@mingc-GE60-2PL:~$ mysql
mysql                      mysql_install_db
mysqladmin                 mysqloptimize
mysqlanalyze               mysql_plugin
mysqlbinlog                mysqlpump
mysqlcheck                 mysqlrepair
mysql_config_editor        mysqlreport
mysqld                     mysql_secure_installation
mysqld_multi               mysqlshow
mysqld_safe                mysqlslap
mysqldump                  mysql_ssl_rsa_setup
mysqldumpslow              mysql_tzinfo_to_sql
mysql_embedded             mysql_upgrade
mysqlimport                

輸入 mysql -u<你的賬號> -p ,回車,輸入密碼,進入 mysql:

mingc@mingc-GE60-2PL:~$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 73
Server version: 5.7.20-0ubuntu0.17.10.1 (Ubuntu)

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> 

 

八、檢查  php

php -v

不出意外的話,應該顯示 php 的版本

============================================

也可以查看 apache 和 mysql 版本:

apache2 -v
mysql -V

 

九、創建 php 探針

sudo vim /var/www/html/info.php

添加如下內容:

<?php
phpinfo();

改變所有者:

sudo chown www-data:www-data /var/www/html/info.php

訪問 http://localhost/info.php,得到有關 PHP 的詳細頁面。

 

十、安裝 phpmyadmin

sudo apt-get install phpmyadmin

安裝期間,

詢問要連接的服務器,選擇 apache2;

詢問創建 phpmyadmin 的數據庫,選擇“是”;

詢問設置登錄 phpmyadmin 的用戶和密碼。

然后瀏覽器訪問:http://localhost/phpmyadmin

 

 

十一、安裝 redis 服務和 redis 擴展

官方源有,直接安裝:

(1)redis 服務器

sudo apt-get install redis-server

期間,一些需要的工具包也會自動安裝。安裝好后,默認自啟動、后台運行,配置文件在 /etc/redis 目錄下。

(2)php 的 redis 擴展模塊

sudo apt-get install php-redis

其他的擴展也可以這么裝,利用 apt-cache search 搜索包名,再用 apt-get install 安裝。

重啟 apche, sudo /etc/init.d/apache2 restart 

訪問 http://localhost/info.php,確認 redis 擴展:

測試一下:

終端輸入 redis-,跟着打兩個 Tab 鍵,看到有關 redis 的命令和工具:

mingc@mingc-GE60-2PL:~$ redis-
redis-benchmark  redis-check-rdb  redis-server     
redis-check-aof  redis-cli

redis-cli 是 訪問 redis-server 的客戶端接口,執行 redis-cli 即可登錄到 redis 服務器:

mingc@mingc-GE60-2PL:~$ redis-cli 
127.0.0.1:6379> 

更多 redis-cli 的命令選項,使用 redis-cli --help 查看。

再寫一段 php 腳本測試一下, vim /var/www/html/test_redis.php 

內容如下:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
echo "Server is running: " . $redis->ping(); 

 

十二、安裝 mysql 擴展

在上面的 http://localhost/info.php 里可以看到,沒有 mysql 擴展。雖說 php7 棄用了 mysql 擴展,但有些舊項目還是需要的。裝一下 mysql 擴展。

這里選擇編譯安裝

(1)直接從 PECL 官方站 搜索 mysql,找到 MySQL 擴展的 頁面 ,點擊頁面的 [ Browse Source ],選擇最新的 commit、下載 tar.gz 包。我下載后的包名為 mysql-fae9884.tar.gz

(2)編譯安裝:

tar -xf mysql-fae9884.tar.gz
cd mysql-fae9884
phpize
./configure --with-php-config=/usr/bin/php-config
sudo make && sudo make install

前面裝 php7.1 的時候,也裝了 php7.1-dev,這里面就有 phpize 和 php-config。而 --with-php-config 是 php-config 程序(命令)的位置,可以使用 whereis php-config 查看。

編譯安裝成功后,會有成功提示 和 mysql 擴展模塊(.so 文件)的路徑:

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib/php/20160303/  

然后,編輯 php 用於 apache 的配置文件 /etc/php/7.1/apache2/php.ini,在最后添加一行:

extension=mysql.so

重啟 apache, sudo /etc/init.d/apache2 restart 

訪問 http://localhost/info.php,確認下有了 mysql 擴展。

 

寫一段 php 腳本測試:  vim /etc/www/html/test_mysql.php 

內容如下:

<?php
$mysql = mysql_connect('127.0.0.1', 'root', 'root');
if(!$mysql) {
	die(mysql_error($mysql));
}
echo 'Ok' . "\r\n";

 

由於 mysql 模塊是手動編譯安裝的,所以默認不會進入 php 的命令行配置。

下面把 mysql 模塊加入到 php 的 cli(命令行) 配置,讓 php 的命令行模式也支持 mysql 模塊:

sudo vim /etc/php/7.1/mods-available/mysql.ini

編輯內容如下:

extension=mysql.so

建立符號鏈接:

sudo ln -s /etc/php/7.1/mods-available/mysql.ini /etc/php/7.1/cli/conf.d/mysql.ini

檢查一下,確認 php 命令行模式啟用了 mysql 擴展模塊:

php -m | grep mysql  

 

十三、開啟 php 和 apache 的錯誤提示

默認不顯示 php 錯誤,下面開啟。

(1)修改 php 的配置文件,在 /etc/php/7.1/apache2 下,打開 php.ini。

(2)搜索 display_errors = Off,修改為 On(主要是這一步,其他的也可以不改)

(3)搜索 error_reporting =  E_ALL & ~E_NOTICE,修改為 E_ALL | E_STRICT(搜不到的話就搜短一點:“error_reporting =”)。

(4)修改 apache 的配置文件,在 /etc/apache2 下,打開 apache.conf。

(5)文件最后添加兩行:

php_flag display_errors        on
php_value error_reporting       2039

(6)重啟 apache:

sudo /etc/init.d/apache2 restart

 

十四、創建虛擬主機

創建虛擬主機自然用 apache 配置,了解一下 apache 的配置目錄:

/etc/apache2
├── apache2.conf      # 主配置文件,其他的一些配置文件通過 Include 指令包含進來
├── conf-available    # 所有可用的配置文件(里面的 *.conf 文件內容幾乎都被默認注釋了)
├── conf-enabled      # 可用的配置文件中,啟用了哪些,一般都是符號鏈接、指向上面的 conf-available 目錄里每個 *.conf 文件
├── envvars           # 環境變量
├── magic
├── mods-available    # 所有可用的模塊
├── mods-enabled      # 哪些模塊被啟用了
├── ports.conf        # 定義端口監聽
├── sites-available   # 所有可用的站點
└── sites-enabled     # 哪些站點被啟用了

步驟簡單,就是在 sites-available 目錄定義站點配置文件,然后在 sites-enabled 里建立指向這個配置文件的符號鏈接。

(1)建配置

cd /etc/apache2/sites-available/
sudo cp 000-default.conf my.site.conf
vim my.site.conf

修改如下(注意別把注釋與指令行放在一行,不然會有語法錯誤;精簡版在后面):

<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.

	# 域名
	ServerName my.site
	# 域名別名,可以設置多個,空格隔開
	ServerAlias my.site
	
	ServerAdmin webmaster@localhost
		
	# 站點根目錄
	DocumentRoot /var/www/my.site
	<Directory "/var/www/my.site/">
		# 啟用符號鏈接
		Options FollowSymLinks
		
		DirectoryIndex index.php index.html index.htm
		
		# 注意這個配置,會影響本地目錄下的 .htaccess 的啟用
		AllowOverride All
		
		Order deny,allow
		Allow from All
		
		# 限制訪問目錄,多個目錄用冒號隔開
		# php_admin_value open_basedir "/var/www/my.site/:/tmp:/usr/lib/php/"
	</Directory>

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

精簡版(去掉了多余注釋):

<VirtualHost *:80>
	ServerName my.site
	DocumentRoot /var/www/my.site
	<Directory /var/www/my.site>
	    Options FollowSymLinks
	    DirectoryIndex index.php index.html index.htm
	    AllowOverride All
	    Order deny,allow
	    Allow from All
	</Directory>
</VirtualHost>

(2)建符號鏈接

sudo ln -s /etc/apache2/sites-available/my.site.conf /etc/apache2/sites-enabled/my.site.conf

(3)檢查語法

終端執行:

apachectl configtest

(4)添加 hosts 解析

 vim /etc/hosts ,添加一行:

127.0.0.1   my.site

(4)重啟 apache

sudo /etc/init.d/apache2 restart

然后,按照配置的站點目錄 /etc/www/my.site,創建目錄和測試文件:

sudo makedir -p /etc/www/my.site
cd /etc/www/my.site/
sudo echo "<h2>Welcome to my.site!</h2>" > index.html

瀏覽器訪問 http://my.site

OK,完成~~

 

本文永久更新地址:http://www.cnblogs.com/mingc/p/7864030.html 

 

十五、參考鏈接

 

十六、相關鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM