Ubuntu下PHP開発環境構築ガイドライン
33611 ワード
Ubuntuに基づくPHP開発環境構築
1.インフラストラクチャ
OSバージョン:Ubuntu 17.10では、すべての依存ライブラリが
~/src
ディレクトリの下に配置され、すべてのプロジェクトが~/project
ディレクトリの下に配置され、私のホームディレクトリ"~"
が/home/yurisa
です.取付前準備
git
,wget
取付方式# -- install git
$: sudo apt-get install git
# -- install wget
$: sudo apt-get install wget
2.依存パッケージのインストール
ローカルインストール
# -- package( )
$: sudo dpkg -i package
ソースからインストール
$: sudo apt-get install package
# -- ,
# -- "libpng"
$: sudo apt-cache search libpng
インストール前にgcc
sudo apt-get install gcc g++
をインストールする必要があります.Ubuntuはデフォルトでgcc 7をインストールしています.gcc -v
を使用して確認すればいいです.インストールが必要な依存パッケージのリスト
imagemagick_6.9.7.4+dfsg-16ubuntu2_amd64.deb
iptraf_1.1.4-6_all.deb
libbison-dev_3.0.4.dfsg-1+b1_amd64.deb
libcurl3_7.55.1-1ubuntu2_amd64.deb
libcurl4-openssl-dev_7.55.1-1ubuntu2_amd64.deb
libedit-dev_3.1-20170329-1_amd64.deb
libevent-dev_2.1.8-stable-4_amd64.deb
libfreetype6_2.6.3-3.2_amd64.deb
libjpeg-dev_8c-2ubuntu8_amd64.deb
libmcrypt-dev_2.5.8-3.3_amd64.deb
libmhash-dev_0.9.9.9-7_amd64.deb
libmhash2_0.9.9.9-7_amd64.deb
libpng-dev_1.6.34-1_amd64.deb
libreadline-dev_7.0-3_amd64.deb
libxml2-dev_2.9.4+dfsg1-4ubuntu1_amd64.deb
re2c_1.0.1-1_amd64.deb
依存パッケージダウンロード(ローカルインストールダウンロードアドレスは後述)
次に、上記の依存パッケージをインストールします.
3.Nginxインストール
インストール前に対応する依存パッケージをインストール
依存パッケージ名
バージョン番号
用途
gcc
7.1
C/C++コンパイラ
zlib
1.2.11
Httpパッケージをgzip圧縮する
pcre
8.41
正規表現ライブラリ
openssl
1.0.2n
Httpsプロトコルのサポート
nginx-stick
nginx module
PCreのインストール
# -- pcre-8.41.tar.gz
$: tar -zxf pcre-8.41.tar.gz
# --
$: cd pcre-8.41.tar.gz
# --
$: ./configure
$: make
$: sudo make install
zlibのインストール
# --
$: tar -zxf zlib-1.2.11.tar.gz
# --
$: cd zlib-1.2.11
# --
$: ./configure
$: make
$: sudo make install
Opensslのインストール
# --
$: tar -zxf openssl-1.0.2n.tar.gz
# --
$: cd openssl-1.0.2n
# --
$: ./config --prefix=/usr/local --openssldir=/usr/local/ssl
$: make
$: sudo make install
$: ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
$: make clean
$: make && make
Nginx Moduleの解凍
# -- ("." )
$: unzip -o -d . nginx-goodies-nginx-stick-module-ng.zip
インストールNginx私のホームディレクトリ
~
は/home/yurisa
です# --
$: tar -zxf nginx-1.13.tar.gz
# --
$: cd nginx-1.13
# --
$: ./configure \
> --sbin-path=/usr/local/nginx/nginx \
> --with-http_ssl_module \
> --with-pcre=/home/yurisa/src/pcre-8.41 \
> --with-zlib=/home/yurisa/src/zlib-1.2.11 \
> --with-openssl=/home/yurisa/src/openssl-1.0.21 \
> --add-module=/home/yurisa/src/nginx-sticky-moudle-ng
$: make
$: sudo make install
# -- nginx sbin
$: cp /usr/local/nginx/nginx /usr/local/sbin/
# -- nginx
$: sudo vim ~/.profile
# -- ".profile"
export PATH=/usr/local/sbin:$PATH
# -- source
$: source ~/.profile
# -- nginx
$: sudo nginx -c /usr/local/nginx/conf/nginx.conf
# -- , (127.0.0.1:80)
# -- nginx
$: sudo nginx -s stop
# -- nginx
$: sudo nginx -s reload
nginxの構成については後述する
4.PostgreSQLデータベースのインストール
PostgreSQLを個別にインストールする前にインストールする必要がある依存ライブラリ
依存パッケージ名
zlib
readline
インストールの開始
$ :cd ~/src
# -- , wget , "~/src"
$ :wget https://ftp.postgresql.org/pub/source/v9.3.5/postgresql-9.3.5.tar.gz
$ :tar -zxf postgresql-9.3.5.tar.gz
$ :cd postgresql-9.3.5
$ :./configure
$ :make
$ :sudo make install
# --
# --
$ :vim ~/.profile
# -- .profile
export PGDATA=/home/yurisa/postgresql/data
export PATH=/usr/local/pgsql/bin:$PATH
# -- PATH
$ :source ~/.profile
# --
$ :initdb
# --
$ :pg_ctl start
# -- postgres
$ :createuser postgres -s( , mysql root)
# --
$ :psql -U postgres
# -- ( "\")
$ :\l # (L )
$ :\c dataname # dataname
$ :\q #
$ :\d #
$ :\d tablename# tablename
5.PHP取付
インストール前に依存パッケージをインストールする必要があります
インストールの開始
# -- "src"
$: cd ~/src
# -- php
$: tar -zxf php-7.1.12.tar.gz
# -- php
$: cd php-7.1.12
# --
$: ./configure \
> --with-pgsql \
> --with-pdo-pgsql \
> --with-openssl \
> --with-mcrypt \
> --enable-zip \
> --enable-mbstring \
> --enable-fpm \
> --enable-opcache \
> --with-curl \
> --with-readline \
> --enable-pcntl \
> --enable-sysvmsg \
> --with-zlib \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir
# --
$: make
$: sudo make install
PHP関連構成
# -- php.ini "/usr/local/lib"
$: sudo cp php.ini-production /usr/local/lib/php.ini
# -- php.ini
# -- "timezone"
date.timezone = "Asia/Shanghai"
always_populate_raw_post_data = -1
# -- max_execution_time
max_execution_time = 300
「fpm」(nginxはfpmでphpを管理する)をインストールします.次の変更が必要なファイルはすべて検索できるわけではありません.検索できない場合は、ファイルの一番下に直接追加すればいいです.
# -- ("~/src/php-7.1.12")
$: sudo cp sapi/fpm/php-fpm.conf /usr/local/etc/
$: sudo cp sapi/fpm/php-fpm /usr/local/bin/
# -- fpm
$: sudo vim /usr/local/etc/php-fpm.conf
# -- ( "whoami" ,"yurisa" )
user = yurisa
group = yurisa
# -- "clear_env"
clear_env=no
# -- "request_terminate_timeout"
request_terminate_timeout=300
# -- PHP , "catch_workers_output",
catch_worker_output=yes
「/usr/local/sbin」フォルダの下に「fpm」というファイルを新規作成し、「fpm」でphp-fpmを管理します.
# -- fpm
$: touch fpm
次のスクリプトを「fpm」ファイルにコピー
#!/bin/bash
USER=`whoami`
PHP_CGI=/usr/local/sbin/php-fpm
PHP_CGI_NAME=`basename $PHP_CGI`
RETVAL=0
start() {
echo -n "Starting PHP FPM: "
$PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FPM: "
killall -QUIT -u $USER php-fpm
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: fpm {start|stop|restart}"
exit 1
;;
esac
exit $RETVA
# --
$: chmod 777 fpm
# -- fpm ,
$: php -v
# -- , "nginx"
# -- fpm
$: sudo fpm start
# --
$: sudo fpm restart
# --
$: sudo fpm stop
環境変数の変更はfpmを再起動する必要があります.プロファイルは後述します.
インストールパッケージの後のリンクにはすでに表示されており、自分でダウンロードしたり、wget/gitを使用してダウンロードしたりすることができます.インストールパッケージはsrcディレクトリの下に配置されます.
6.Redisインストール手順
$ :cd ~/src
$ :wget http://download.redis.io/releases/redis-3.0.2.tar.gz
$ :tar -zxf redis-3.0.2.tar.gz
$ :cd redis-3.0.2
$ :make
$ :sudo make install
# --redis
$ :cd ~
$ :mkdir redis
# -- ~/src/redis-3.0.2/redis.conf ~/redis/
$ :cp ~/src/redis-3.0.2/redis.conf ~/redis/
# -- redis.conf, daemonize yes
# -- redis
$ :redis-server redis.conf &
# -- redis client
$ :redis-cli -p 6379
7.SSDBインストール手順
$ :cd ~/src
$ :wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
$ :unzip master
$ :cd ssdb-master
$ :make clean
$ :make
# --ssdb (/usr/local/ssdb)
$ :sudo make install
# --
$ :vim ~/.bash_profile
# -- ssdb
export PATH=/usr/local/ssdb:$PATH
# --
$ :source ~/.profile
# --ssdb
$ :cd ~
$ :mkdir ssdb
# -- ssdb.conf ~/ssdb/
$ :cp ~/src/ssdb-master ~/ssdb
# -- ~/ssdb var
$ :mkdir ~/ssdb/var
# --ssdb ( ssdb.conf )
# --start ssdb-server
$ :ssdb-server -d ssdb.conf
# --start ssdb-client
$ :ssdb-cli -p 8888
# --stop ssdb-server
$ :ssdb-server ssdb.conf -s stop
8.Phalconフレームワーク取付
$ :cd ~/src
$ :wget https://github.com/phalcon/cphalcon/archive/v3.1.2.tar.gz -O cphalcon-3.1.2.tar.gz
$ :tar -zxvf cphalcon-3.1.2.tar.gz
$ :cd cphalcon-3.1.2/build
$ :sudo ./install
# --php phalcon
$ :vim /usr/local/lib/php.ini
# --
extension=phalcon.so
9.Php Redis拡張の追加
$ :cd ~/src
$ :git clone https://github.com/phpredis/phpredis.git
$ :cd phpredis/
$ :phpize # -- php
$ :./configure
$ :make
$ :sudo make isntall
# --
$ :vim /usr/local/lib/php.ini
extension = redis.so
10.Php SSDB拡張の追加
$ :cd ~/src
$ :git clone https://github.com/jonnywang/phpssdb.git
# --
$ :git checkout php7
$ :phpize
$ :./configure
$ :make
$ :sudo make install
# --
$ :vim /usr/local/lib/php.ini
extension = ssdb.so
# -- fpm
$ :fpm restart
11.swooleインストール
# --
$: cd swoole
$: phpize
$: ./configure
$: make
$: sudo make install
# --
$ :vim /usr/local/lib/php.ini
extension = swoole.so
12.Nginx関連構成
複数のサイトの管理を容易にするために、サイトファイルを「vhost」ディレクトリの下に統合します.
/usr/local/nginx/confディレクトリの下にvhostフォルダを新規作成
# -- vhost
$: cd /usr/local/nginx/conf
$: mkdir vhost
nginxを変更します.confの中のファイルの内容は(その他の余分な構成はサイトファイルに入れます)
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#
include vhost/*.conf;
}
サイトファイルを新規作成com.conf」アクセスパスは、自分で対応するフォルダ構造を構築すればよい
server {
listen 80; #
server_name hello.com; #
index index.html index.htm index.php;
set $root_path '/home/yurisa/projects/Hello_Php/'; #
root $root_path;
try_files $uri $uri @rewrite;
client_max_body_size 50m;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000; #fpm
#fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
}
location ~ /\.ht {
deny all;
}
}
サイトをhostファイルに追加してアクセス
$: sudo vim /etc/hosts
# --
127.0.0.1 hello.com
構成が成功したかどうかをテスト
# -- (/home/yurisa/projects/Hello_Php/), "Test"
$: mkdir Test
# -- Test "index.php"
$: touch index.php
「index.phpファイルにphpスクリプトを追加してテストします
echo "+++++------++++++";
?>
プロファイルを変更した後、nginxを再起動する必要があります.
ブラウザでのアクセス
hello.com/Test/index.php
新しいプロジェクトを開いて新しいサイトを構成する必要がある場合、新しいサイトの名前を「world.com"ファイルは"でなければなりません.confの末尾
# -- 1. "hello.com"
$: cp hello.com.conf world.com.conf
# --
server_name world.com; #
set $root_path '/home/yurisa/projects/World_Php/'; #
# --
# -- "World_Php" "test.php"
$: touch test.php
「test.php」ファイルにphpテストスクリプトを追加する
echo "+++++------++++++";
?>
サイトをhostファイルに追加してアクセス
$: sudo vim /etc/hosts
# --
127.0.0.1 world.com
プロファイルの変更、nginxの再起動
$: sudo nginx -s reload
ブラウザでのアクセス
world.com/test.php
13.よくある問題と解決
1.nginxの起動に失敗しました(プロファイルが質問されていない場合は権限の問題が多いです)
# -- nginx
$: cd /usr/local/nginx/logs
$: tail -f error.log
fpm起動に失敗しました.起動権限とfpm起動でアクセスする可能性のあるディレクトリの権限に注意してください.
sudo fpm start
起動に失敗した場合は、エラーメッセージに注意してください.phpがインストールされている拡張子の表示
$: php -m
phpを表示します.iniの位置
$: php -i | grep php.ini
14.依存パッケージおよびプロファイルのダウンロードアドレス
アップロードファイルが制限されているため、2つの圧縮パッケージに分かれています
php_conf_1 php_conf_2
15.結語
不足があれば直ちに指摘してください.ありがとうございます.