搭建LAMP環境示例

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/10/09/7642992.html
-Advertisement-
Play Games

本文目錄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!!

部分選項說明:

  1. 在【zend】擴展部分的選項"--enable-maintainer-zts"是為了讓php支持多線程MPM的,即php以模塊化方式或cgi模式安裝時且httpd配置為worker或event時需要啟用該項。而如果php以fastcgi模式安裝時,由於php有獨立的服務和進程,所以該項是多餘的。
  2. "--with-apxs2"是讓php以模塊化的方式安裝到其他程式中,"--enable-fpm"是讓php以fastcgi模式工作的選項。所以此處採用後者,而以模塊方式和httpd交互時採用前者。
  3. "--with-config-file-path"和"--with-config-file-scan-dir"分別是php配置文件php.ini的存放位置以及其他載入的配置文件路徑,scan-dir類的目錄就像/etc/profile.d、/etc/httpd/conf.d這樣的目錄路徑。
  4. "--with-openssl"選項讓php支持ssl;"--enable-mbstring"選項是讓php支持多位元組字元的,例如中文一個字元兩個位元組,也就是說讓php支持國際化的;"--with-zlib"、"--with-bz2"、"--with-mhash"和"--with-mcrypt"選項讓php支持這些壓縮和加密機制。
  5. "--with-freetype-dir"、"--with-jpeg-dir"和"--with-png-dir"分別是讓php支持多種文字樣式、支持jpeg、支持png的選項。
  6. 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作為這些選項的值即可。
      ./configure --prefix=/usr/local/php \
      --with-mysql=mysqlnd \
      --with-mysqli=mysqlnd \
      --with-pdo-mysql=mysqlnd
      
      在php 5.3的時候已經支持mysqlnd驅動方式了,在php 5.4的時候mysqlnd已經是預設的配置選項了。建議使用mysqlnd的驅動方式。

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相關的內容,佈置過程稍顯死板 ,作為實驗示例,這也是沒辦法的事情。熟悉相關知識點之後,很容易就明白該如何搭建。

 

回到Linux系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

回到網站架構系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7576137.html

回到資料庫系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7586194.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7642992.html

註:若您覺得這篇文章還不錯請點擊右下角推薦,您的支持能激發作者更大的寫作熱情,非常感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...