《PHP教程:在Mac OS上編譯安裝Nginx+PHP+MariaDB開發環境的教程》要點:
本文介紹了PHP教程:在Mac OS上編譯安裝Nginx+PHP+MariaDB開發環境的教程,希望對您有用。如果有疑問,可以聯系我們。
PHP實例因為甲骨文的尿性.mariadb應該要頂替mysql了.所以拋棄mysql
PHP實例1,編譯nginx
分別下載nginx,openssl,pcre
編譯openssl的時候會提示
PHP實例
WARNING! If you wish to build 64-bit library, then you have to
invoke ‘./Configure darwin64-x86_64-cc' *manually*.
PHP實例如果你不停止編譯就會出錯.這個問題應該是 openssl/config腳本猜對你的系統是64位,但是 會根據$KERNEL_BITS來判斷是否開啟x86_64編譯,默認 是不開啟的(很奇怪的設置,雖然會給你5秒時間停止編譯并手動開啟),所以你生成的openssl庫文件是32位的,最后靜態鏈接到nginx會出錯.目前看來沒有很好的方法把x86_64的參數傳到openssl配置文件中 (openssl/config 猜測os架構,設置編譯的參數是32位還是64位,默認是32位,然后調用openssl/Configure生成Makefile)
PHP實例可以在configure之前export KERNEL_BITS=64,如果還是不起作用
就要手到修改了
進入nginx目錄
PHP實例手動修改 objs/Makefile:
PHP實例
./config Cprefix=/Users/xxx/Downloads/openssl-1.0.1e/.openssl no-shared no-threads
PHP實例改成
PHP實例再make
2,編譯php
下載php源碼和一些類庫
zlib:http://www.zlib.net/
GD庫:https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.0.tar.gz 不好下
freetype:http://sourceforge.net/projects/freetype/
libpng:http://www.libpng.org/pub/png/libpng.html
libjpeg:http://www.ijg.org/
PHP實例curl: http://curl.haxx.se/download.html
PHP實例mhash: http://sourceforge.net/projects/mhash/
mcrypt: http://mcrypt.hellug.gr/
還有bzip2. gettext 和libtool 在gnu官網,不過速度不行,其他的庫我用了系統自帶.懶得再折騰,到時候沒啥補啥.
除了libtool直接扔在了/usr,其他我都裝在了/usr/local的一個個單獨目錄里面.比如jpeg就是/usr/local/jpeg方便以后修改
PHP實例./configure Cprefix=/Users/saint/bin/php Cenable-inline-optimization Cenable-fpm Cwith-mcrypt=/usr/local/libmcrypt Cwith-zlib Cenable-mbstring Cwith-openssl Cwith-mysql Cwith-mysqli Cwith-mysql-sock Cwith-gd Cwith-jpeg-dir=/usr/local/jpeg Cenable-gd-native-ttf Cenable-pdo Cwith-gettext Cwith-curl Cwith-pdo-mysql Cenable-sockets Cenable-bcmath Cenable-xml Cwith-bz2=/usr Cenable-zip Cenable-freetype Cwith-png-dir=/usr/local/libpng Cwith-pcre-regex Cwith-iconv-dir=/usr Cwith-gettext=/usr/local/gettext
PHP實例3.編譯mariadb
PHP實例編譯mariabd需要先安裝cmake.去www.cmake.org下載安裝tar zxf mariadb-5.5.32.tar.gz
PHP實例
cd mariadb-5.5.32
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
PHP實例
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mariadb \
-DSYSCONFDIR=/usr/local/mariadb \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
PHP實例
make && make install
/bin/cp support-files/my-small.cnf /usr/local/mariadb/my.conf
cp support-files/mysql.server /usr/local/mariadb/mysqld
# my.cf
PHP實例cat > /etc/my.cnf << EOF [mysqld] basedir = /usr/local/mariadb datadir = /data/mariadb pid-file = /data/mariadb/mariadb.pid character-set-server = utf8 collation-server = utf8_general_ci user = mysql port = 3306 default_storage_engine = InnoDB innodb_file_per_table = 1 server_id = 1 log_bin = mysql-bin binlog_format = mixed expire_logs_days = 7 bind-address = 0.0.0.0 # name-resolve skip-name-resolve skip-host-cache #lower_case_table_names = 1 ft_min_word_len = 1 query_cache_size = 64M query_cache_type = 1 skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M # LOG log_error = /data/mariadb/mariadb-error.log long_query_time = 1 slow_query_log slow_query_log_file = /data/mariadb/mariadb-slow.log # Oher #max_connections = 1000 open_files_limit = 65535 [client] port = 3306 EOF /usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/data/mariadb chown mysql.mysql -R /data/mariadb export PATH=$PATH:/usr/local/mariadb/bin echo 'export PATH=$PATH:/usr/local/mariadb/bin' >> /etc/profile
source /etc/profile
PHP實例
/usr/local/mariadb/bin/mysql -e “grant all privileges on *.* to root@'127.0.0.1′ identified by “dbrootpwd” with grant option;”
/usr/local/mariadb/bin/mysql -e “grant all privileges on *.* to root@'localhost' identified by “dbrootpwd” with grant option;”
/usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e “delete from mysql.user where Password=”;”
/usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e “delete from mysql.db where User=”;”
/usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e “drop database test;”
PHP實例4.后續安裝擴展
php提供了一個phpize工具供我們安裝需要的擴展.
PHP實例下面介紹phpize的使用:
PHP實例(1).找到自己原來編譯的php安裝目錄,例如我的目錄是/home/saint/Development/php,在該目錄下,找到bin/phpize.如果沒有這個工具,則說明沒有安裝該工具,那么需要安裝php.dev,一般都會有這個工具.
PHP實例(2).要擴展的話,就需要有一個和當前已安裝的php的版本一樣的php的源包,當前php版本可以用過phpinfo()查看.
PHP實例(3).打開源包目錄,進入到ext目錄,例如我就進入到:/home/saint/Development/php-5.5.6/ext下,ext下有各個php帶有的擴展模塊,進入到ext/sockets中.
PHP實例(4).cd到ext/sockets后,運行phpize程序:
PHP實例
/home/saint/Development/php/bin/phpize
PHP實例執行后,可以看到phpize會幫我們生成了對應的configure文件
PHP實例(5).通過configure來配置,執行下面的命令:
PHP實例
./configure --enable-sockets --with-php-config=/home/saint/Development/php/bin/php-config
make
make install
PHP實例注: php-config文件與phpize是同一個目錄下的
PHP實例(6).更改php.ini,增加下面的語句:
PHP實例extension=”/home/saint/Development/php/lib/php/extensions/no-debug-non-zts-20121226/sockets.so”
PHP實例覺得難看可以將那個日期文件夾刪除
PHP實例(7).重啟Nginx
維易PHP培訓學院每天發布《PHP教程:在Mac OS上編譯安裝Nginx+PHP+MariaDB開發環境的教程》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。