- Learning Phalcon PHP
- Calin Rada
- 564字
- 2021-07-16 20:30:17
The Apache and Nginx configuration files
We will use /var/www/learning-phalcon.localhost
as the default directory for our project, and we will refer to it as the root folder. Please create this folder:
$ sudo mkdir -p /var/www/learning-phalcon.localhost/public
Of course, if you want, you can use another folder. Let's create a test file in our public
folder under the root directory with some PHP content:
$ cd /var/www/learning-phalcon.localhost/public $ echo "<?php date();" > index.php
Apache
Let's switch to the default directory where Apache holds the configuration files for the available websites, using the command line: $ cd /etc/apache2/sites-available/
. After that, perform the following set of steps:
- Using your favorite editor, create a file named
learning-phalcon.localhost
for apache version < 2.4 orlearning-phalcon.localhost.conf
for apache version >= 2.4:$ vim learning-phalcon.localhost.conf
- Now, paste the following content to this file:
<VirtualHost *:80> DocumentRoot "/var/www/learning-phalcon.localhost" DirectoryIndex index.php ServerName learning-phalcon.localhost ServerAlias www.learning-phalcon.localhost <Directory "/var/www/learning-phalcon.localhost/public"> Options All AllowOverride All Allow from all </Directory> </VirtualHost>
- Then, switch to the public folder and add a file named
.htaccess
to it:$ cd /var/www/learning-phalcon.localhost/public $ vim .htaccess
- Then, add the following content to the
.htaccess
file:<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] </IfModule>
- This will not work unless you have enabled
mod_rewrite
. To do so, execute this command:$ sudo a2enmod rewrite
- Now that we have configured our virtual host, let's enable it:
$ sudo a2ensite learning-phalcon.localhost $ sudo service apache2 reload
The host file
If you open a browser and type http://www.learning-phalcon.localhost/
, you'll receive a host not found or connection error. This is because there is no name resolver for this TLD (short for Top Level Domain). To fix this, we edit our host file and add this name:
$ echo "127.0.0.1 learning-phalcon.localhost www.learning-phalcon.localhost" | sudo tee /etc/hosts
Restart your browser and type the address http://www.learning-phalcon.localhost/
again. If everything goes well, you should see the current date/time.
Nginx
If you choose to use Nginx (which I recommend, especially because it can serve more concurrent clients with higher throughput, and it serves static content more efficiently) instead of Apache, here is what you need to do:
Locate the config
folder of Nginx (in Ubuntu, it is installed under /etc/nginx/
). Create a file named learning-phalcon.localhost
in your sites-available
folder (by navigating to /etc/nginx/sites-available
):
$ cd /etc/nginx/sites-available $ vim learning-phalcon.localhost
Now, add the following content to it:
server { listen 80; server_name learning-phalcon.localhost; index index.php; set $root_path "/var/www/learning-phalcon.localhost/public"; root $root_path; client_max_body_size 10M; try_files $uri $uri/ @rewrite; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location ~ \.php { fastcgi_index /index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_intercept_errors on; 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; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root/index.php; } location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { root $root_path; } location ~ /\.ht { deny all; } }
Then, save the file and restart Nginx:
$ sudo service nginx restart
Please edit and save your host file (check The host file section), then open your browser and type http://www.learning-phalcon.localhost/
. At this point, you should see a page that shows the current date/time.
There are many possible methods to install and configure PHP and Apache/Nginx. Feel free to do a simple Google search and choose one that fits you better, if my method is not the optimal one for your needs.
Assuming that everything went well until now, we will go further by learning a little bit about Phalcon's internals.
- 黑客攻防從入門到精通(實戰秘笈版)
- Spring Boot開發與測試實戰
- Boost C++ Application Development Cookbook(Second Edition)
- Java加密與解密的藝術(第2版)
- Jenkins Continuous Integration Cookbook(Second Edition)
- Hadoop 2.X HDFS源碼剖析
- SQL Server 2012 數據庫應用教程(第3版)
- 高性能PHP 7
- Pandas 1.x Cookbook
- WCF全面解析
- 生成藝術:Processing視覺創意入門
- PHP程序設計經典300例
- Python深度學習:基于PyTorch
- Java算法從菜鳥到達人
- 算法(第4版)