本文目錄1. 編譯apache httpd2. 編譯php 2.1 php編譯選項說明 2.2 php編譯過程 2.3 配置httpd使其轉發動態請求給php-fpm3. 為php安裝xcache 3.1 基本安裝 3.2 設置管理員後臺4 安裝MySQL(MariaDB) 4.1 初始化實例 4. ...
本文目錄
1. 編譯apache httpd
2. 編譯php
2.1 php編譯選項說明
2.2 php編譯過程
2.3 配置httpd使其轉發動態請求給php-fpm
3. 為php安裝xcache
3.1 基本安裝
3.2 設置管理員後臺
4 安裝MySQL(MariaDB)
4.1 初始化實例
4.2 安裝後的規範化操作
5 測試LAMP——搭建discuz論壇
本文給出搭建LAMP的步驟,其中php使用的是php-fpm管理方式,php和MySQL(MariaDB)交互使用的是mysqlnd方式(另一種是libmysql)。最後給出一個php+mysql的論壇程式discuz的佈置過程。
1. 編譯apache httpd
此處只簡單給出編譯httpd的步驟,具體的編譯細節知識點見編譯httpd細節。
httpd相關資源下載地址:http://archive.apache.org/dist/
安裝依賴包。
yum -y install pcre pcre-devel expat-devel
編譯apr和apr-util。
tar xf apr-1.6.2.tar.gz
tar xf arp-1.6.0.tar.gz
cd apr-1.6.0
./configure --prefix=/usr/local/apr
make
make install
cd ../apr-util-1.6.2
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install
編譯httpd。
tar xf httpd-2.4.27.tar.gz
cd httpd-2.4.27
./configure --prefix=/usr/local/apache --sysconfdir=/etc/apache --with-z --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-mpm=event --enable-mpms-shared=all
編譯後的規範化操作:
# 設置man路徑。
echo "MANPATH /usr/local/apache/man" >>/etc/man.config
# 設置PATH環境變數。
echo 'PATH=/usr/local/apache/bin:$PATH' >/etc/profile.d/apache.sh
source /etc/profile.d/apache.sh
# 輸出頭文件。
ln -s /usr/include /usr/local/apache/include
提供服務啟動腳本:
提供不提供沒多大所謂,因為apachectl或httpd命令自身可以管理進程的啟停,但自身管理啟停時不提供lock文件。
如果要提供的話,從yum安裝的httpd提供的/usr/lib/systemd/system/httpd.service(systemd)或/etc/init.d/httpd(sysV)拷貝後稍作修改就可以了。以下是按照我上面編譯的環境做了修改後的systemd和sysV服務管理腳本。
以下是httpd的systemd服務管理腳本/usr/lib/systemd/system/httpd.service。
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/local/apache/bin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/local/apache/bin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
以下是httpd的sysV服務管理腳本/etc/rc.d/init.d/httpd。
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: The Apache HTTP Server is an efficient and extensible \
# server implementing the current HTTP standards.
#
######################################################################
# 若httpd配置文件中指定了PidFile,則修改此腳本中的pidfile變數 #
######################################################################
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=/usr/local/apache/bin/apachectl
prog=httpd
pidfile=/usr/local/apache/logs/httpd.pid
lockfile=/var/lock/subsys/httpd
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}
config=/etc/apache/httpd.conf
# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure. So we just do it the way init scripts
# are expected to behave here.
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd -f $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
# When stopping httpd, a delay (of default 10 second) is required
# before SIGKILLing the httpd parent; this gives enough time for the
# httpd parent to SIGKILL any errant children.
stop() {
status -p ${pidfile} $httpd > /dev/null
if [[ $? = 0 ]]; then
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
else
echo -n $"Stopping $prog: "
success
fi
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
# Force LSB behaviour from killproc
LSB=1 killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
if [ $RETVAL -eq 7 ]; then
failure $"httpd shutdown"
fi
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart|try-restart)
if status -p ${pidfile} $httpd >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
RETVAL=2
esac
exit $RETVAL
最後啟動httpd。
service httpd start
2. 編譯php
三種工作模式:CGI、作為模塊加入到apache、fastcgi。最簡單的是以模塊方式加入到apache,此處演示的是php-fpm管理php-cgi方式。其他兩種方式見php-cgi和httpd交互的方式。
fastcgi模式的php-cgi,由php-fpm提供服務管理,它會根據配置文件啟動一定數量的cgi進程,其預設監聽的埠為9000,該服務正常工作需要配置文件。也就是說fastcgi模式的php有兩個配置文件,一個是php的配置文件,一個是php-fpm的配置文件。
雖然此處演示的是php-fpm管理方式,但有必要說明下,在Linux中如果模塊化安裝php,不推薦在使用Apache 2.x中使用線程化MPM(worker和event),而是使用prefork模式的mpm,因為Linux系統的線程設計並不那麼完美。所以,如果php和apache在同一臺主機上(cgi或者模塊化方式安裝php的時候),建議httpd使用prefork模型,而不在同一臺主機中,建議將php設計為fastcgi的工作模式。而在windows平臺中則無需考慮這些問題,因為windows系統是真正意義上的多線程系統。
下載相關文件:
php下載地址:http://php.net/downloads
php手冊地址:http://php.net/manual/zh/
手冊下載地址:http://php.net/download-docs.php
2.1 php編譯選項說明
編譯安裝php有非常非常多的選項,比httpd還多。可以在解壓php後的目錄下使用./configure --help
查看。以下是部分選項,其中給出"--enable-XXXX"的選項表示預設是disable的,若要開啟,需要在此處手動enable,如果給出的是"--disable-XXXX"表示預設是enable的。
--prefix=PREFIX
【SAPI modules:】
--with-apxs2=FILE Build shared Apache 2.0 Handler module. FILE is the optional
pathname to the Apache apxs tool apxs
--enable-fpm Enable building of the fpm SAPI executable
【General settings:】
--with-config-file-path=PATH Set the path in which to look for php.ini [PREFIX/lib]
--with-config-file-scan-dir=PATH Set the path where to scan for configuration files
【Extensions:】
#######################################################
# --with-EXTENSION=shared[,PATH] #
# NOTE: Not all extensions can be build as 'shared'. #
# Example: --with-foobar=shared,/usr/local/foobar/ #
#######################################################
--with-openssl=DIR Include OpenSSL support (requires OpenSSL >= 0.9.6)
--enable-mbstring Enable multibyte string support
--with-zlib=DIR Include ZLIB support
--with-bz2=DIR Include BZip2 support
--with-mhash=DIR Include mhash support
--with-mcrypt=DIR Include mcrypt support
--with-freetype-dir=DIR GD: Set the path to FreeType 2 install prefix
--with-jpeg-dir=DIR GD: Set the path to libjpeg install prefix
--with-png-dir=DIR GD: Set the path to libpng install prefix
--with-libxml-dir=DIR SimpleXML: libxml2 install prefix
--enable-sockets Enable sockets support
--disable-xml Disable XML support (不寫時預設--enable-xml)
【連接資料庫:】
--with-mysql=DIR Include MySQL support. DIR is the MySQL base
directory, if no DIR is passed or the value is
mysqlnd the MySQL native driver will be used
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
as FILE, the MySQL native driver will be used
--with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory
If no value or mysqlnd is passed as DIR, the
MySQL native driver will be used
--enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly
when required by other extensions
【Zend:】
--enable-maintainer-zts Enable thread safety - for code maintainers only!!
部分選項說明:
- 在【zend】擴展部分的選項"--enable-maintainer-zts"是為了讓php支持多線程MPM的,即php以模塊化方式或cgi模式安裝時且httpd配置為worker或event時需要啟用該項。而如果php以fastcgi模式安裝時,由於php有獨立的服務和進程,所以該項是多餘的。
- "--with-apxs2"是讓php以模塊化的方式安裝到其他程式中,"--enable-fpm"是讓php以fastcgi模式工作的選項。所以此處採用後者,而以模塊方式和httpd交互時採用前者。
- "--with-config-file-path"和"--with-config-file-scan-dir"分別是php配置文件php.ini的存放位置以及其他載入的配置文件路徑,scan-dir類的目錄就像/etc/profile.d、/etc/httpd/conf.d這樣的目錄路徑。
- "--with-openssl"選項讓php支持ssl;"--enable-mbstring"選項是讓php支持多位元組字元的,例如中文一個字元兩個位元組,也就是說讓php支持國際化的;"--with-zlib"、"--with-bz2"、"--with-mhash"和"--with-mcrypt"選項讓php支持這些壓縮和加密機制。
- "--with-freetype-dir"、"--with-jpeg-dir"和"--with-png-dir"分別是讓php支持多種文字樣式、支持jpeg、支持png的選項。
- php連接mysql有兩種方式,一種是以libmysql的驅動方式連接mysql,一種是以mysqlnd方式驅動連接mysql。以下列出了libmysql和mysqlnd這兩種驅動方式的編譯模式。
- (1).以libmysql驅動方式連接mysql(Mariadb),需要提前安裝mysql(Mariadb)和mysql-devel(mariadb-devel),並使用"--with-mysql"選項指定mysql安裝路徑,"--with-mysqli"選項指定mysql_config腳本的路徑,"--with-pdo-mysql"選項也指定mysql安裝路徑。假如mysql安裝在/usr/local/mysql下。
./configure --prefix=/usr/local/php \ --with-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config
- (2).以mysqlnd驅動方式連接mysql,不需要提前安裝mysql和mysql-devel,--with-mysql、--with-mysqli和--with-pdo-mysql選項都不需要指定具體路徑,只需使用mysqlnd作為這些選項的值即可。
在php 5.3的時候已經支持mysqlnd驅動方式了,在php 5.4的時候mysqlnd已經是預設的配置選項了。建議使用mysqlnd的驅動方式。./configure --prefix=/usr/local/php \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd
- (1).以libmysql驅動方式連接mysql(Mariadb),需要提前安裝mysql(Mariadb)和mysql-devel(mariadb-devel),並使用"--with-mysql"選項指定mysql安裝路徑,"--with-mysqli"選項指定mysql_config腳本的路徑,"--with-pdo-mysql"選項也指定mysql安裝路徑。假如mysql安裝在/usr/local/mysql下。
2.2 php編譯過程
由於是配置fastcgi的模式,所以在./configure
的時候將apxs2功能換為"--enable-fpm",並且由於此模式下的php由自己獨立的服務來控制進程的生成,所以對於為了支持httpd線程的選項"--enable-maintainer-zts"也去掉。以下是編譯安裝過程:
yum install -y bzip2-level libmcrypt-devel openssl-devel libxml2-devel
tar xf php-5.5.38.tar.bz2 -C /tmp
cd /tmp/php-5.5.38
./configure --prefix=/usr/local/php --with-openssl --enable-mbstring --enable-sockets --with-freetype-dir --with-jpeg-dir --with-png-dir --with-libxml-dir=/usr --enable-xml --with-zlib --with-mcrypt --with-bz2 --with-mhash --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm
make
make install
# 提供php配置文件
cp php.ini-production /etc/php.ini
# 提供php-fpm服務管理腳本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmd
chmod +x /etc/init.d/phpfpmd
# 提供php-fpm配置文件
cd /usr/local/php/
cp etc/php-fpm.conf.default etc/php-fpm.conf
# 修改php-fpm配置文件(做實驗的話改不改隨意)
vim etc/php-fpm.conf
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
# 啟動php-fpm
service php-fpmd start
2.3 配置httpd使其轉發動態請求給php-fpm
# 啟用fcgi的支持模塊。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
# 添加php尾碼格式文件的識別功能。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# 添加php尾碼的主頁
DirectoryIndex index.php index.html
# 啟用虛擬主機模塊,Include虛擬主機配置文件,並註釋中心主機DocumentRoot。
#DocumentRoot "/usr/local/apache/htdocs"
Include /etc/apache/extra/httpd-vhosts.conf
# 配置虛擬主機。註意主機中需要添加下麵兩行,第一行表示關閉正向代理功能,第二行表示反向代理時進行正則匹配。
# 對主機的.php(不區分大小寫)文件的訪問都通過fcgi協議交給php,由於此處測試,php正好和httpd在同一伺服器上,# 且php-fpm預設監聽的埠為9000,所以為fcgi://127.0.0.1:9000,在此之後還需要寫上/DocumentRoot/$1,
# "$1"是正則的反向引用
ProxyRequests off
ProxyPassMatch "(?i)^/(.*\.php)$" fcgi://127.0.0.1:9000/var/www/a.com/$1
提供主頁測試文件index.php。
mkdir -p /var/www/a.com
vim /var/www/a.com/index.php
<h1>a.com</h1>
<?php
phpinfo();
?>
重啟httpd,瀏覽器中進行站點訪問測試。
3. 為php安裝xcache
php是一種解釋型語言,意味著php腳本在執行時不需要事先編譯,而是像shell腳本一樣直接執行。但事實上它還是會編譯的,只不過是執行時"偷偷地"編譯,它會將代碼編譯成位元組碼(opcode)然後運行。編譯是一個很消耗時間的操作,因此需要為編譯好的opcode提供緩存以提高性能,降低負載。目前最流行的opcode緩存工具是XCache,它是一個開源的工具。
下載路徑:http://xcache.lighttpd.net/pub/Releases/
3.1 基本安裝
安裝xcache。
tar xf xcache-3.2.0.tar.bz2 -C /tmp
cd /tmp/xcache-3.2.0/
# 添加擴展前,先運行phpize
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-cofig
make && make install
在安裝完成之後有一行,這一行很重要,因為這個路徑要添加到配置文件中。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20121212/
在解壓xcache的目錄下,有xcache的配置文件xcache.ini,將其追加到php的配置文件中,或者將其複製到php的配置文件掃描目錄/etc/php.d下(該目錄是之前編譯php時./configure
配置選項"--with-config-file-scan-dir"指定的項)。
mkdir /etc/php.d
cp xcache.ini /etc/php.d/
vim /etc/php.d/xcache.ini
在該文件中加上一行,該行必須在該文件中的所有extension指令的最前面。
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20121212/xcache.so
其實對於xcache 3.0版本和以後版本,可以不用複製xcache模塊的路徑到配置文件中,因為可以自動找到php路徑下的模塊路徑,甚至添加了可能還會出錯。
3.2 設置管理員後臺
設置了管理員後臺,管理員可以查看xcache相關的信息和加速的情況。做法很簡單。修改配置文件中的xcache.admin.user和xcache.admin.pass兩項,分別為管理員賬號和密碼。註意該密碼只能是md5加密的密碼。
例如,user設置為Admin,密碼為"123456":
[root@toystory xcache-3.2.0]# echo "123456" | md5sum
e10adc3949ba59abbe56e057f20f883e -
[root@toystory xcache-3.2.0]# vim /etc/phd.d/xcache.ini
xcache.admin.user = "Admin"
xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"
保存退出。複製xcache解壓路徑下的htdocs目錄(有些版本的xcache是admin目錄)到httpd的DocumentRoot下。
cp -a htdocs /usr/local/apache/htdocs/
然後重啟httpd,在瀏覽器中輸入http://IP/htdocs
,會彈出xcache的管理員驗證,輸入用戶名Admin和密碼123456,即可查看管理員頁面。
4. 安裝MySQL(MariaDB)
此處以MySQL通用二進位包安裝為例,它相當於windows中的便攜版軟體,解壓後稍微配置下進行初始化就可以直接使用,不用安裝。其他方法、安裝細節、多實例以及MariaDB等見mysql & mariadb安裝細節。
mysql通用二進位版官方下載地址:
MySQL 5.6通用二進位包下載: https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linux-glibc2.12-x86_64.tar.gz
MySQL 5.7通用二進位包下載: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.12-x86_64.tar.gz
其中文件中的glibc2.12表示的是Linux系統的glibc版本要比2.12新,可以使用ldd --version查看glibc版本。在CentOS 6上glibc預設就是2.12的,所以無需顧慮。
shell> tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
shell> ln -s /usr/local/mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
4.1 初始化實例
初始化前先進行一些配置。
shell> mkdir -p /mydata/data # 作為數據目錄datadir
shell> useradd -r -s /sbin/nologin mysql
shell> chown -R mysql.mysql /usr/local/mysql
shell> chown -R mysql.mysql /mydata/data
shell> cd /usr/local/mysql
shell> scripts/mysql_install_db --datadir=/mydata/data --user=mysql
shell> chown -R root.root /usr/local/mysql
執行mysql_install_db初始化時會在/tmp下創建臨時表,所以mysql用戶需要對/tmp有寫許可權,否則執行實例初始化腳本時可能會報類似下麵的錯誤:
ERROR: 1 Can't create/write to file '/tmp/#sql_7a0e_0.MYI' (Errcode: 13)
這說明沒有寫許可權,所以需要修改/tmp目錄的許可權:
chmod 1777 /tmp
也可以使用下麵的方法初始化,事實上mysql_install_db
已經作為廢棄的工具,在執行時很可能會提示該工具已廢棄。
bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql
初始化完成後,提供配置文件和服務啟動腳本。
shell> cp -a support-files/mysql.server /etc/init.d/mysqld
shell> cp -a support-files/my-default.cnf /etc/my.cnf
# 修改my.cnf的datadir
shell> vim /etc/my.cnf
[mysqld]
datadir=/mydata/data
如果是centos7,則提供如下服務啟動腳本(如有必要,修改pid文件路徑)。
shell> cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql-5.7.19/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
修改"root@localhost"密碼。
shell> mysql
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> \q
4.2 安裝後的規範化操作
編譯安裝或通用二進位安裝後,一般都需要做一些額外的操作,包括設置環境變數、輸出頭文件和庫文件、設置man路徑。
echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql
5. 測試LAMP——搭建discuz論壇
discuz是論壇軟體系統,基於php+MySQL平臺。基本配置很簡單,更多的配置和個性化定製在官方主頁查看教程。
官方主頁:http://www.discuz.net/forum.php
discuz下載地址:http://www.discuz.net/thread-3570835-1-1.html
簡單佈置它們的過程很簡單,只需複製相關文件到對應的網站根目錄下,然後在瀏覽器中輸入對應的目錄名即可打開程式。中間測試過程中如果出現問題,再對應修改即可。
首先配置httpd,提供一個虛擬主機。
# 包含虛擬主機的配置文件,只需取消下麵這行的註釋符號"#"即可
#Include /etc/apache/extra/httpd-vhosts.conf
# 提供虛擬主機
vim /etc/apache/extra/httpd-vhosts.conf
<VirtualHost 192.168.100.61:80>
DocumentRoot "/var/www/a.com/"
ServerName www.a.com
ErrorLog "logs/error_log"
CustomLog "logs/access_log" combined
<Directory "/var/www/a.com/">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
將解壓後discuz中的upload目錄複製到對應虛擬主機的DocumentRoot目錄下。
cd Discuz
cp -a upload/ /var/www/a.com
重啟httpd服務。測試discuz。不過得先在客戶端的hosts文件中添加解析記錄,例如此處為:
192.168.100.61 www.a.com。
在瀏覽器中輸入http://www.a.com/upload
即可。
然後在安裝前會自動檢查是否符合安裝條件。將以下所有不符合條件的全部修改成符合條件。
cd /var/www/a.com/upload
touch config/config_{global,ucenter}.php
chmod a+w config/config_{global,ucenter}.php
chmod a+w data config data/{cache,avatar,plugindata,download,addonmd5,template,threadcache,attachment,log} data/attachment/{album,forum,group}
chmod a+w uc_client/data/cache
chmod a+w uc_server/data uc_server/data/{cache,avatar,backup,logs,tmp,view}
刷新下,條件滿足。
卸載的方法是刪除upload目錄,刪除mysql中的discuz資料庫。
如果亂碼,則修改httpd的配置文件中的AddDefaultCharset指令。如:
AddDefaultCharset UTF-8
以上為LAMP相關的內容,佈置過程稍顯死板 ,作為實驗示例,這也是沒辦法的事情。熟悉相關知識點之後,很容易就明白該如何搭建。