学习笔记---Ubuntu上搭建web服务器

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
Note from 2014-06-28 17:57:14.400

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

利用http://www.linuxidc.com/Linux/2014-05/102351.htm 文档做为安装的参考文档,并录制视频来完成整个安装和测试
============
1 安装前的提示
   修改自己的主机名 并记录下你的IP,方便后面测试使用。
   另外,安装中我们使用root用户,先进行用户切换
   命令:sudo su  (输入密码就可以了,这样做可以减少后面安装软件时经常输入密码)

2 安装mysql 5数据库
   命令是:
    apt-get install mysql-server mysql-client
    安装过程中会访问建立root账号的密码,连续输入两次:
   提示如下:
    New password for the MYSQL "root" user: 输入你的密码
    Repeat password for the MYSQL "root" user:再输入一次

3 安装Nginx
   在安装Nginx前,先检查一下是否安装了apache 2,安装了再删除,命令如下:
     server apache2 stop
    update-rc.d -f apache2 remove
    apt-get remove apache2
    apt-get install nginx

   启动nginx,service nginx start
   测试是否启动成功: 在浏览器里输入
    http://localhost or http://ip ,
    如果出现welcome to nginx! 页面就是安装成功了!!!
   Note:在Ubuntu 14.04中默认的根目录为
    /usr/share/nginx/html

4 安装PHP 5
    我们必须通过PHP-FPM才能让PHP5正常工作,安装命令:
    apt-get install php5-fpm
    php-fpm是一个守护进程

5 配置nginx
    使用vi打开配置文件/etc/nginx/nginx.conf,命令如下:
    vi /etc/nginx/nginx.conf
    配置不是很容易明白,可以参考相关网页,如:
    http://wiki.nginx.org/NginxFullExample
    
    我们调整:工作进程数:
    worker_processes 4;
    keepalive_timeout 2;
    默认虚拟主机设置文件/etc/nginx/sites-available/default 命令如下:
    vi /etc/nginx/sites-available/default
    配置如下:
    server {
        listen 80;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

        # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
        #location /RequestDenied {
        #       proxy_pass http://127.0.0.1:8080;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /.ht {
                deny all;
        }
}
    取消同时侦听ipv4 和ipv6的80端口
    erver_name _; 默认主机名 (当然你可以修改,例如修改为: www.example.com).

index主页这一行我们加入 index.php。

PHP 重要配置配置 location ~ .php$ {} 这几行我们需要启动,反注释掉。另外再添加一行:try_files $uri =404。

(其他配置查看http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP 和 http://forum.nginx.org/read.php?2,88845,page=3).

保存文件并重新加载 nginx 命令:

service nginx reload

如果加载失败,直接用删除所有配置内容,用上面的信息替换。
打开配置文件 /etc/php5/fpm/php.ini… 

vi /etc/php5/fpm/php.ini

… 如下设置 cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

    重新加载 PHP-FPM:
    service php5-fpm reload
    现在创建一个探针文件保存在 /usr/share/nginx/html目录下
    vi /usr/share/nginx/html/info.php

<?php
phpinfo();
?>
   浏览器下访问探针文件 (e.g. http://localhost/info.php):
    正如你看到的 PHP5 正在运行,并且是通过 FPM/FastCGI,向下滚动,我们看看那些模块已经启动,MySQL是没有列出这意味着我们没有MySQL支持PHP5。

6 下面让 PHP5 支持 MySQL

    先搜索一下,看看那些模块支持:
    apt-cache search php5
    然后使用下面的命令安装:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

    APC是一个自由和开放的PHP操作码缓存器缓存和优化PHP的中间代码。这是类似于其他PHP操作码cachers,如eAccelerator、XCache。这是强烈建议有一个安装加速你的PHP页面。
    使用下面的命令安装 APC:
    apt-get install php-apc
    现在重新加载 PHP-FPM:
    service php5-fpm reload

    刷新 http://localhost/info.php 向下滚动看看模块是否支持:

7 让 PHP-FPM 使用 TCP 连接
   默认情况下 PHP-FPM 侦听的是 /var/run/php5-fpm.sock,要让 PHP-FPM 使用 TCP 连接,需要打开编辑配置文件 /etc/php5/fpm/pool.d/www.conf…
    vi /etc/php5/fpm/pool.d/www.conf
按照下面的修改信息

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

    这将使php-fpm侦听端口9000上的IP 127.0.0.1(localhost)。确保你使用的端口不在你的系统上使用。

    重新加载 PHP-FPM:
    service php5-fpm reload
    下面通过配置 nginx 修改主机,更改这一行注释掉 fastcgi_pass unix:/var/run/php5-fpm.sock; 这一行反注释 fastcgi_pass 127.0.0.1:9000;,按照下面的设置:
    vi /etc/nginx/sites-available/default
[...]
        location ~ .php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                #fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
[...]

    重新加载 nginx:
    service nginx reload

8 CGI/Perl Scripts
    如果你想 Nginx支持 CGI/Perl 脚本服务,可阅读此教程 Serving CGI Scripts With Nginx On Debian Squeeze/Ubuntu 11.04
    推荐的方法是使用fcgiwrap(4章)
-------------------------------
另外收藏ubuntu 12.04 下lamp安装配置教程,这个我在32位的14.04上安装成功:
 参考:http://www.linuxidc.com/Linux/2012-05/61079.htm
命令如下:
1 lamp 安装:
    sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 
    根目录在/var/www
    修改目录权限:sudo chmod 777 /var/www/
2 phpmyadmin 安装:
    sudo apt-get install phpmyadmin
     安装过程中web server:apache2
    配置密码
    建立与apache2的连接:
    sudo ln -s /usr/share/phpmyadmin /var/www
    测试:http://localhost/phpmyadmin
3 Apache 配置:
    启用mod_rewirte模块: sudo a2enmod rewrite 
    重启:sudo /etc/init.d/apache2 restart
    测试:test.php
    内容如下:
    <?php
    $link=mysql_connect("localhost","root","mysql_password");
    if(!$link){
    die('could not connect:',mysql_error());
    }
    else echo "mysql已经正确配置";
    mysql_close($link);
    ?>
    测试时出现中文乱码解决方法如下:
    sudo gedit /etc/apache2/apache2.conf
    在最后添加: addDefaultCharset UTF-8
    保存,并重启apache 就可以了
===========================
Ubuntu+Nginx+Mysql+Php(ubuntu 12.04)
来自:http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=241301&sid=65af77cf69180787da232f3343ca2fb8
-------------------
由于最新的php集成了fpm,ubuntu12.04及以上版本安装更简单了,安装过程如下:
1、安装网站系统
代码:
sudo apt-get install nginx php5-common php5-fpm php-apc php5-mysql php5-gd mysql-server

2、修改nginx配置文件
代码:
sudo vi /etc/nginx/sites-enabled/default

把其中的:
代码:
        location / {
                root   /var/www;
                index  index.html index.htm;
        }

改为:
代码:
        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

其中的:
代码:
   #location ~ \.php$ {
   #   fastcgi_pass 127.0.0.1:9000;
   #   fastcgi_index index.php;
   #   include fastcgi_params;
   #}

改为:
代码:
        location ~ \.php$ {
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include  fastcgi_params;
        }

3、重启系统、上传文件,网站建立成功!试试吧!

附:系统及部分软件管理操作
1、操作系统:
代码:
sudo reboot now //重启系统
sudo halt //关闭系统

2、nginx配置修改及生效:
代码:
sudo vi /etc/nginx/nginx.conf //修改配置
sudo vi /etc/nginx/sites-enabled/default //修改配置
sudo service nginx restart //重启nginx

3、php配置修改及生效:
代码:
sudo vi /etc/php5/fpm/php.ini //修改配置
sudo service php5-fpm restart //重启fastcgi进程

3、网站目录:
代码:
/var/www/nginx-default

===============================

本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/1432038如需转载请自行联系原作者


cysky

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
Ubuntu 网络协议 Java
【Android平板编程】远程Ubuntu服务器code-server编程写代码
【Android平板编程】远程Ubuntu服务器code-server编程写代码
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
26 0
|
2月前
|
存储 Ubuntu 网络协议
|
2月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
51 3
|
22天前
|
Ubuntu Linux 虚拟化
【Linux】ubuntu安装samba服务器
【Linux】ubuntu安装samba服务器
|
1月前
|
应用服务中间件 Apache nginx
web后端-web服务器对比
web后端-web服务器对比
|
1月前
|
存储 Ubuntu 网络安全
|
1月前
|
Ubuntu 网络协议 Java
在Android平板上使用code-server公网远程Ubuntu服务器编程
在Android平板上使用code-server公网远程Ubuntu服务器编程
|
2月前
|
安全 网络安全 开发者
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
114 0