最終環境: Ubuntu17.10、Apache2.4.27、MySQL5.7.20、PHP7.1 1. 安裝 apache 官方源有,直接安裝: 2. 安裝 mysql 官方源有,直接安裝: 安裝期間會提示設置 MySQL administrator 的密碼 PS:需要什麼軟體或包,直接用 apt ...
最終環境:
Ubuntu17.10、Apache2.4.27、MySQL5.7.20、PHP7.1
1. 安裝 apache
官方源有,直接安裝:
sudo apt-get install apache2
2. 安裝 mysql
官方源有,直接安裝:
sudo apt-get install mysql-server
安裝期間會提示設置 MySQL administrator 的密碼
============================================================
PS:需要什麼軟體或包,直接用 apt-cache 搜索
sudo apt-cache search <關鍵詞>
確認包名後,直接用 apt-get install 安裝。
3. 安裝 php
官方源有 php7.1,直接安裝:
sudo apt-get install php7.1 php7.1-dev
php7.1 是主程式,php7.1-dev 是 7.1 版的工具包(有 phpize、php-config 等等,phpize 可以為 已編譯好的 php 建立擴展模塊,php-config 可以獲得 php 的詳細配置)。
============================================================
如果要裝 php5.6 的話,推薦這個 PPA 源(就算不裝 5.6,也推薦):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
4. 重啟 apache
sudo /etc/init.d/apache2 restart
更多選項:
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}
5. 檢查 apache
訪問 http://localhost/。這是 apache 伺服器的預設頁在 /var/www/html 下,裡面還介紹了 apche 的相關配置文件。
6. 檢查 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>
7. 檢查 php
php -v
不出意外的話,應該顯示 php 的版本
8. 創建 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 的詳細頁面。
9. 安裝 phpmyadmin
sudo apt-get install phpmyadmin
安裝期間,
詢問要連接的伺服器,選擇 apache2;
詢問創建 phpmyadmin 的資料庫,選擇“是”;
詢問設置登錄 phpmyadmin 的用戶和密碼。
然後瀏覽器訪問:http://localhost/phpmyadmin
10. 安裝 redis 服務和 redis 擴展
官方源有,直接安裝:
(1)redis 伺服器
sudo apt-get install redis-server
期間,一些需要的工具包也會自動安裝。安裝好後,預設自啟動、後臺運行,配置文件在 /etc/redis 目錄下。
(2)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();
11. 安裝 mysql 擴展
在上面的 http://localhost/info.php 里可以看到,沒有 mysql 擴展。雖說 php7 里棄用了 mysql 擴展,但有些舊項目還是需要的。裝一下 mysql 擴展。
這裡選擇編譯安裝(通過 apt 安裝的 php-mysql 擴展,如果是 php7.x,那就是裝 pdo_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";
12. 開啟 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
13. 創建虛擬主機
創建虛擬主機自然用 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 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 AllowOverride All Order deny,allow Allow from All # php_admin_value open_basedir "/var/www/my.site/:/tmp:/usr/lib/php/" </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
(2)建符號鏈接
cd /etc/apache2/ sudo ln -s ./sites-available/my.site.conf ./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>Hello, Welcome to my.site!</h2>" > index.html
瀏覽器訪問 http://my.site,
OK,完成~~
本文永久更新地址:http://www.cnblogs.com/mingc/p/7864030.html
參考鏈接:
- http://howtoubuntu.org/how-to-install-lamp-on-ubuntu
- Ubuntu Server 16.04下配置LAMP環境
- Ubuntu 16.04 搭建 LAMP
- 打開PHP和Apache的錯誤提示
- Ubuntu16.04安裝redis和php的redis擴展
- httpd-vhosts設置功能變數名稱別名
相關鏈接: