安裝配置LAMP環境,即Linux+Apache+MySQL+PHP+phpmyadmin。LNMP分別代表 Linux、Nginx、MySQL、PHP。大同小異。
基本知識準備
- 查詢是否已安裝對應軟件:
$ rpm -q <software>
oryum info <software>
。 - 軟件安裝后,服務是否啟動:systemctl命令(system Control)
systemctl status <software>[.service] //查看service狀態
systemctl start <software>[.service] //啟動service
systemctl enable <software>[.service] //開機啟動service
systemctl stop <software>[.service] //停止service
systemctl restart <software>[.service] //重啟service
.service不加,系統也會在env PATH中根據 software name 調用正確的service。
安裝Apache
yum -y install httpd //-y(yes)靜默安裝
安裝成功后,執行command
systemctl status httpd //Apache service激活狀態默認是inactive (dead)
systemctl start httpd
systemctl enable httpd
systemctl status httpd //啟動后再查看Active: active (running)
然后在瀏覽器輸入服務器公網IP或localhost(本機),就應該能看到Apache HTTP server的test頁面了。
Exception異常處理
以阿里云為例,如果出現服務器配置啟動Apache后無法訪問,使用本機去ping公網ip還可以ping通的case,是因為訪問Apache服務被攔截了。可能是這兩個原因導致的:
- 阿里云ECS實例的安全組規則沒有設置對應的端口權限。進入
云服務器-實例-管理-本實例安全組-配置規則-添加安全組規則
,在入方向添加80端口,授權對象0.0.0.0/0指所有請求。
secure-rule.png
這里也順便加上幾個通用的端口,以防后面的操作出現訪問請求被攔截的情況。
- 系統中的防火墻在運行狀態,并未開放相應的端口。
systemctl status firewalld //如果防火墻是inactive (dead)未激活狀態,就不會攔截任何端口,也可以保持這個狀態
如果防火墻是active (running)運行狀態,在防火墻中開放80端口,將 http 服務加入防火墻以允許外部訪問
firewall-cmd --add-service=http --permanent //–permanent參數表示這是一條永久防火墻規則,如果不加則重啟系統后就沒有這條規則了
對于自定義的端口(如81),也需要添加防火墻規則
firewall-cmd --zone=public --add-port=81/tcp --permanent
重啟 Firewalld 使該規則生效
systemctl restart firewalld
關閉SELINUX,vim /etc/selinux/config
,注釋掉如下兩句,添加最后一項
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq!
保存退出
setenforce 0 #使配置立即生效
安裝MariaDB (MySQL的一個開源分支)
yum -y install mariadb mariadb-server
MariaDB安裝成功后,啟動MariaDB
systemctl start mariadb //啟動MariaDB
systemctl enable mariadb //設置開機啟動
設置MySQL root賬戶密碼
mysql_secure_installation
因是剛安裝好,root密碼未設置,看到下面這行直接回車即可,輸Y開始設置root密碼
Enter current password for root (enter for none):
Set root password? [Y/n]
提示輸入新密碼和重復輸入新密碼,重復輸入兩次后,出現更新密碼成功提示,然后一路輸入y/Y就可以。
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Thanks for using MariaDB!
設置root密碼后,重啟MariaDB生效
systemctl restart mariadb
測試訪問數據庫:
mysql -uroot -p
然后輸入密碼,登錄成功后顯示如下:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
查看數據庫服務器的數據庫
show databases;
最后輸入exit;
退出數據庫
安裝PHP以及PHP拓展
yum -y install php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
安裝完成后,重啟Apache服務器
systemctl restart httpd
在/www/html/目錄新增index文件(查看Apache相關的配置在/etc/httpd/conf/httpd.conf里),測試PHP安裝結果
vim /var/www/html/index.php // /www/html/為Apache服務器默認項目部署根路徑
i
insert輸入如下內容,Esc
退出編輯,:wq
保存退出。
<?php
phpinfo();
?>
在瀏覽器中輸入服務器地址,查看是否可以看到:
安裝phpMyAdmin
yum -y install phpmyadmin php-mcrypt
phpMyAdmin 的默認安裝目錄是 /usr/share/phpMyAdmin,同時會在 Apache 的配置文件目錄中自動創建虛擬主機配置文件 /etc/httpd/conf.d/phpMyAdmin.conf(區分大小寫)。默認情況下,CentOS 7上的phpMyAdmin只允許從回環地址(127.0.0.1)訪問。為了能遠程連接,需要改動它的配置。
vim /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
# Require ip 127.0.0.1 #注釋掉
# Require ip ::1 #注釋掉
Require all granted #新添加
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
# Require ip 127.0.0.1 #注釋掉
# Require ip ::1 #注釋掉
Require all granted #新添加
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
重啟Apache服務器,systemctl restart httpd
然后通過瀏覽器訪問http://服務器ip地址/phpmyadmin
安裝WordPress
如果你剛好打算以WordPress作為博客服務器,這個module剛好適合你。
通過命令下載WordPress,切換到任意目錄下,一般源文件放在/usr/local/src
,個人安裝軟件在/usr/local
cd /usr/local/src
wget https://wordpress.org/latest.tar.gz //English version,目前最新版是4.8.1
wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz //簡體中文(zh-Hans)
或者你先下載到本機,再通過FTP把壓縮包上傳到Linux 實例中。
在Apache項目部署跟目錄解壓縮wordpress
cd /var/www/html
tar -zxvf /usr/local/src/latest.tar.gz(wordpress-4.8.1.tar.gz/wordpress-4.8.1-zh_CN.tar.gz)
這樣就把WordPress安裝在網站子目錄,而不是網站的根目錄,方便網站的維護。這樣文件內容就放在/var/www/html/wordpress/
目錄下,而不是/var/www/html/
下。(建議這樣做)
在瀏覽器輸入'服務器實例公網IP/wordpress',如59.110.137.229/wordpress/,進入到 WordPress 的安裝頁面
根據首頁提示信息,進入數據庫(通過Graphic或command),創建一個名為wordpress的數據庫名
CREATE DATABASE wordpress;
SHOW DATABASES;
EXIT;
然后開始,配置數據庫信息,單擊 提交。
數據庫主機填localhost即可,我之前以為是填寫服務器實例的公網IP,導致會出現下圖錯誤。
如果出現下圖錯誤,很有可能是文件權限不夠。
$ cd /var/www/html
$ ll -a #查看解壓后wordpress文件夾的權限
drwxr-xr-x 5 nobody 65534 4096 Aug 30 23:24 wordpress #權限不足
$ chmod 777 -R wordpress #權限
$ chown root:root -R wordpress #屬組
修改權限,讓文件可讀可寫可執行。
最后進入歡迎頁面,填寫你的個人信息,site、username、password、Email等。
通過主域名訪問安裝在子目錄的WP
為了方便管理,把wordpress安裝在子目錄/var/www/html/subdirectory
而不是網站根目錄下/var/www/html
,并且可以通過domain.com
不是通過domain.com/subdirectory
訪問站點首頁。首先確認你的WP內容是放在subdirectory目錄下(e.g. wordpress文件夾)。
- Method I (Without URL change)。在根目錄下創建
.htaccess
文件夾,并把以下內容放進去,僅修改example.com
和my_subdir
,替換成你自己的公網IP(如59.110.137.229)或域名(如guodongdong.com.cn)和子目錄(如worpress)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ my_subdir/index.php [L]
</IfModule>
That's all :) just so so
- Method II (With URL change)。
- 進入
WP后臺儀表盤Dashboard-設置Setting-常規General-
,
設置WordPress address (URL)為http://IP address/wordpress
或http://(www).domain.com/wordpress
設置Site address (URL)為http://IP address
或http://(www).domain.com
保存更改。 - 把
index.php
和.htaccess
兩個文件從wordpress子目錄復制(不要移動)到根目錄
cp .htaccess index.php ..
cd .. #返回目錄
- 編輯index.php文件,
vim index.php
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' ); #添加子目錄名稱/wordpress
- 如果你設置了固定鏈接Permalinks,點擊保存更改更新你的Permalink結構。WordPress會自動更新你的
.htaccess
文件。
最后通過你的公網IP或域名就可以直接訪問博客主頁了。WP官方配置鏈接。如果還是不行,建議把方法一和二 一起走一遍就可以了。
安裝FTP
通過WP在線安裝主題或更新插件時,WP會通過FTP協議獲取訪問網頁服務器的權限。Entry
解決安裝主題或更新插件時提示'未能找到WordPress內容目錄(wp-content)'
在wp-config配置文件中添加如下內容(以我的根目錄為'wordpress'為例):
define('FTP_BASE', 'wordpress'); #FTP_BASE:你的wordpress的安裝的根目錄
define('FTP_CONTENT_DIR', 'wordpress/wp-content'); #FTP_CONTENT_DIR:你的wordpress的內容目錄
define('FTP_PLUGIN_DIR', 'wordpress/wp-content/plugins/'); #FTP_PLUGIN_DIR:你的wordpress的插件目錄
define('FTP_THEMES_DIR', 'wordpress/wp-content/themes/'); #FTP_THEMES_DIR:你的wordpress的主題目錄
define('FS_METHOD', 'direct'); #FS_METHOD:你的安裝方法
保存修改,重新安裝主題或更新插件,SUCCESS! 參考鏈接
去WordPress官網尋找自己喜歡的主題和合適的插件吧。
離線下載安裝主題
不喜歡在線的主題或在線不能下載主題,把下載的主題或插件放在/wordpress/wp-content/themes|plugins下,進入個人站點控制臺啟用即可。